Spark 分布式
Spark 安装
下载地址:https://archive.apache.org/dist/spark/spark-2.4.5/
安装机器:master
版本:spark-2.4.5-bin-without-hadoop-scala-2.12.tgz
- 下载并解压
1 2 3 4 5 6 7
| wget https://archive.apache.org/dist/spark/spark-2.4.5/spark-2.4.5-bin-without-hadoop-scala-2.12.tgz -P /opt/software
cd /opt/software
tar -zvxf spark-2.4.5-bin-without-hadoop-scala-2.12.gz
mv /opt/software/spark-2.4.5-bin-without-hadoop-scala-2.12 /opt/servers/spark-2.4.5
|
- 配置环境变量
vim /etc/profile
1 2 3
| # Spark export SPARK_HOME=/opt/servers/spark-2.4.5 export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
|
- 删除多余的.cmd 脚本
1 2
| cd $SPARK_HOME/bin rm *.cmd
|
- 使其生效
Spark 配置
- 复制配置文件模版
1 2 3 4 5 6
| cd $SPARK_HOME/conf
cp spark-env.sh.template spark-env.sh cp spark-defaults.conf.template spark-defaults.conf cp slaves.template slaves cp log4j.properties.template log4j.properties
|
- 修改从节点主机名
1 2 3 4 5
| vim slaves
master slave1 slave2
|
vim spark-env.sh
在末尾添加
1 2 3 4 5 6 7 8 9
| export JAVA_HOME=/usr/java/jdk1.8.0_202 export SPARK_MASTER_HOST=master export SPARK_MASTER_PORT=7077 # 默认端口8080 与 zookeeper 8080 端口冲突 export SPARK_MASTER_WEBUI_PORT=8989
export HADOOP_HOME=/opt/servers/hadoop-2.10.1 export HADOOP_CONF_DIR=/opt/servers/hadoop-2.10.1/etc/hadoop export SPARK_DIST_CLASSPATH=$(/opt/servers/hadoop-2.10.1/bin/hadoop classpath)
|
备注:这里使用的是 spark-2.4.5-bin-without-hadoop, 所以要将 Hadoop 相关 jars 的位置告诉 Spark
vim spark-defaults.conf
1 2 3 4 5
| spark.master spark://master:7077 spark.eventLog.enabled true spark.eventLog.dir hdfs://master:9000/spark-eventlog spark.serializer org.apache.spark.serializer.KryoSerializer spark.driver.memory 512m
|
创建 HDFS 目录:hadoop fs -mkdir /spark-eventlog
备注:
- spark.master。定义 master 节点,缺省端口号 7077
- spark.eventLog.enabled。开启 eventLog
- spark.eventLog.dir。eventLog 的存放位置
- spark.serializer。一个高效的序列化器
- spark.driver.memory。定义 driver 内存的大小(缺省 1G)
- 将 spark 分发到其他节点中
1 2
| cd /opt/servers rsync-script spark-2.4.5
|
- 其他节点配置 Spark 环境变量
1 2 3 4 5
| vim /etc/profile
# Spark export SPARK_HOME=/opt/servers/spark-2.4.5 export PATH=$PATH:$SPARK_HOME/bin:$SPARK_HOME/sbin
|
启动集群
要在主节点上启动集群
关掉 Yarn 对应的服务
启动 Dfs 服务
1 2 3
| start-dfs.sh cd $SPARK_HOME/sbin ./start-all.sh
|

访问 web 界面 http://master:8989

集群测试

HA 高可用
- 启动 zookeeper
- 修改 spark-env.sh
1 2 3 4 5
| # 注释以下两行 #export SPARK_MASTER_HOST=master #export SPARK_MASTER_PORT=7077
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=master,slave1,slave2 -Dspark.deploy.zookeeper.dir=/spark"
|
备注:
- spark.deploy.recoveryMode: 可选值 Zookeeper、FileSystem、None
- ploy.zookeeper.url:Zookeeper 的 URL, 主机名:端口号(缺省 2181)
- loy.zookeeper.dir: 保存集群元数据信息的地址,在 ZooKeeper 中保存该信息
- 分发到其他节点
1
| rsync-script spark-env.sh
|
- 启动 spark 集群
1
| $SPARK_HOME/sbin/start-all.sh
|
- 在 slave1 启动一个 master
1
| $SPARK_HOME/sbin/start-master.sh
|

此时如果 kill 掉 master 节点的 Master 服务,那么 slave1 的 Master 服务就会开始提供服务