Fork me on GitHub

Spark 集群安装

Spark 集群安装

1.解压 tar -xf spark-2.1.1-bin-hadoop2.7.tgz -C /opt/module
2.进入到 Spark 安装目录 cd /opt/module/spark-2.1.1-bin-hadoop2.7/conf

1
2
3
4
5
6
7
8
9
10
[liucw@hadoop102 conf]$ mv slaves.template slaves
[liucw@hadoop102 conf]$ mv spark-env.sh.template spark-env.sh
修改 slaves 文件,将 work 的 hostname 输入:
hadoop103
hadoop104
修改 spark-env.sh 文件,添加如下配置:
SPARK_MASTER_HOST=hadoop102
SPARK_MASTER_PORT=7077

3.将配置好的 Spark 文件拷贝到其他节点上 xsync /opt/module/spark-2.1.1-bin-hadoop2.7/

4.启动Spark 集群

1
2
3
4
5
6
7
[liucw@hadoop102 spark-2.1.1-bin-hadoop2.7]$ sbin/start-all.sh
[liucw@hadoop102 spark-2.1.1-bin-hadoop2.7]$ jps
10860 Master
[liucw@hadoop103 module]$ jps
6099 Worker

5.登录 Spark 管理界面查看集群状态(主节点) http://hadoop102:8080/


配置 Job History Server

[liucw@hadoop102 hadoop-2.7.2]$ hadoop fs -mkdir /directory

1).进入配置文件 cd /opt/module/spark-2.1.1-bin-hadoop2.7/conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
1.1 将 spark-default.conf.template 复制为 spark-default.conf
[liucw@hadoop102 conf]$ mv spark-defaults.conf.template spark-default.conf
1.2 修改 spark-default.conf 文件,开启 Log:
# Example:
spark.master spark://hadoop102:7077
spark.eventLog.enabled true
// 运行过程中所有的信息均记录在该属性指定的路径下;
spark.eventLog.dir hdfs://hadoop102:9000/directory
# spark.serializer org.apache.spark.serializer.KryoSerializer
# spark.driver.memory 5g
1.3 修改 spark-env.sh 文件,添加如下配置:
export SPARK_HISTORY_OPTS="-Dspark.history.ui.port=4000 -Dspark.history.retainedApplications=3 -Dspark.history.fs.logDirectory=hdfs://hadoop102:9000/directory"
参数说明
spark.history.ui.port=4000 调整WEBUI访问的端口号为4000
spark.history.fs.logDirectory=hdfs://master01:9000/directory 配置了该属 性后,在 start-history-server.sh 时就无需再显式的指定路径,Spark History Server 页面只展示该指定路径下的信息
spark.history.retainedApplications=3 指定保存 Application 历史记录的个 数,如果超过这个值,旧的应用程序信息将被删除,这个是内存中的应用数, 而不是页面上显示的应用数。

2).将配置好的 Spark 文件拷贝到其他节点上
[liucw@hadoop102 conf]$ xsync /opt/module/spark-2.1.1-bin-hadoop2.7/

3).启动
[liucw@hadoop102 spark-2.1.1-bin-hadoop2.7]$ sbin/start-all.sh
spark启动成功后
[liucw@hadoop102 spark-2.1.1-bin-hadoop2.7]$ sbin/start-history-server.sh

4).查看
这里的4000是spark.history.ui.port=4000配置的
http://hadoop102:4000/


配置 Spark HA

  集群部署完了,但是有一个很大的问题,那就是 Master 节点存在单点故障,要解决此问题,就要借助 zookeeper,并且启动至少两个 Master 节点来实 现高可靠,配置方式比较简单
  Spark 集群规划:hadoop102,hadoop103 是 Master; hadoop102,hadoop103,hadoop104 是 Worker

1.安装配置 Zookeeper 集群,并启动 Zookeeper 集群
2.停止 spark 所有服务
3.修改配置文件 spark-env.sh,
3.1.在该配置文件中删掉 SPARK_MASTER_IP
3.2添加如下配置
export SPARK_DAEMON_JAVA_OPTS=” -Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=zk1,zk2,zk3 -Dspark.deploy.zookeeper.dir=/spark”

1.在 hadoop102 节点上修改 slaves 配置文件内容指定 worker 节点
2.将配置文件同步到所有节点。
3.在 hadoop102 上执行 sbin/start-all.sh 脚本,启动集群并启动第一个 master
节点,然后在 master02 上执行 sbin/start-master.sh 启动第二个 master 节点。
4.程序中 spark 集群的访问地址需要改成:
spark://hadoop102:port1,master02:port2


补充:控制台日志输出修改

1
2
3
4
5
[liucw@hadoop102 conf]$ cp log4j.properties.template log4j.properties
修改错误级别
# Set everything to be logged to the console
log4j.rootCategory=WARN, console
-----------------本文结束,感谢您的阅读-----------------