1 Standalone 架构
Standalone模式是Spark自带的一种集群模式,不同于前面本地模式启动多个进程来模拟集群的环境Standalone模式是真实地在多个机器之间搭建Spark集群的环境,完全可以利用该模式搭 建多机器集群,用于实际的大数据处理。
Standalone集群使用了分布式计算中的master-slave模型,master是集群中含有Master进程的
节点,slave是集群中的Worker节点含有Executor进程。
Spark Standalone集群,类似Hadoop YARN,管理集群资源和调度资源:
主节点Master:
管理整个集群资源,接收提交应用,分配资源给每个应用,运行Task任务
从节点Workers:
管理每个机器的资源,分配对应的资源来运行Task;
每个从节点分配资源信息给Worker管理,资源信息包含内存Memory和CPU Cores核数
历史服务器HistoryServer:
Spark Application运行完成以后,保存事件日志数据至HDFS,启动HistoryServer可以查
看应用运行相关信息。
2 配置、部署及启动
Standalone集群安装服务规划与资源配置:
官方文档:http://spark.apache.org/docs/2.4.5/spark-standalone.html
备注说明:下面操作,如特别说明,统一在node01.oldlu.cn机器上操作。
2.1 解压、环境变量
解压Spark编译安装包至【/export/server/】目录下,进入【conf】目录,配置环境变量。
## 解压软件包 tar -zxf /export/software/spark-2.4.5-bin-cdh5.16.2-2.11.tgz -C /export/server/ ## 创建软连接,方便后期升级 ln -s /export/server/spark-2.4.5-bin-cdh5.16.2-2.11 /export/server/spark ## 进入配置目录 cd /export/server/spark/conf ## 修改配置文件名称 mv spark-env.sh.template spark-env.sh vim spark-env.sh ## 添加内容如下: JAVA_HOME=/export/server/jdk SCALA_HOME=/export/server/scala HADOOP_CONF_DIR=/export/server/hadoop/etc/hadoop
2.2 Workers主机名称
将【$SPARK_HOME/conf/slaves.template】名称命名为【slaves】,填写从节点名称。
## 进入配置目录 cd /export/server/spark/conf ## 修改配置文件名称 mv slaves.template slaves vim slaves ## 内容如下: node1.oldlu.cn node2.oldlu.cn node3.oldlu.cn
2.3 配置Master、Workers、HistoryServer
在配置文件$SPARK_HOME/conf/spark-env.sh添加如下内容
SPARK_MASTER_HOST=node1.oldlu.cn SPARK_MASTER_PORT=7077 SPARK_MASTER_WEBUI_PORT=8080 SPARK_WORKER_CORES=1 SPARK_WORKER_MEMORY=1g SPARK_WORKER_PORT=7078 SPARK_WORKER_WEBUI_PORT=8081 SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://node1.oldlu.cn:8020/spark/eventLogs/ -Dspark.history.fs.cleaner.enabled=true"
2.4 创建EventLogs存储目录
启动HDFS服务,创建应用运行事件日志目录,命令如下:
hadoop-daemon.sh start namenode hadoop-daemons.sh start datanode hdfs dfs -mkdir -p /spark/eventLogs/
2.5 配置Spark应用保存EventLogs
将【$SPARK_HOME/conf/spark-defaults.conf.template】名称命名为【spark-defaults.conf】,填写如下内容:
## 进入配置目录 cd /export/server/spark/conf ## 修改配置文件名称 mv spark-defaults.conf.template spark-defaults.conf vim spark-defaults.conf ## 添加内容如下: spark.eventLog.enabled true spark.eventLog.dir hdfs://node1.oldlu.cn:8020/spark/eventLogs/ spark.eventLog.compress true
2.6 设置日志级别
将【$SPARK_HOME/conf/log4j.properties.template】名称命名为【log4j.properties】,修改
级别为警告WARN。
## 进入目录 cd /export/server/spark/conf ## 修改日志属性配置文件名称 mv log4j.properties.template log4j.properties ## 改变日志级别 vim log4j.properties
修改内容如下:
2.7 分发到集群所有机器
将配置好的将 Spark 安装包分发给集群中其它机器,命令如下:
cd /export/server/ scp -r spark-2.4.5-bin-cdh5.16.2-2.11 root@node2.oldlu.cn:$PWD scp -r spark-2.4.5-bin-cdh5.16.2-2.11 root@ node3.oldlu.cn:$PWD ## 远程连接到node2.oldlu.cn和node3.oldlu.cn机器,创建软连接 ln -s /export/server/spark-2.4.5-bin-cdh5.16.2-2.11 /export/server/spark
2.8 启动服务进程
在Master节点node1.oldlu.cn上启动,进入$SPARK_HOME,必须配置主节点到所有从节点的
SSH无密钥登录,集群各个机器时间同步。
- 主节点Master启动命令
/export/server/spark/sbin/start-master.sh
WEB UI页面地址:http://node1.oldlu.cn:8080
- 从节点Workers启动命令:
/export/server/spark/sbin/start-slaves.sh
查看Master主节点WEB UI界面:
可以看出,配置了3个Worker进程实例,每个Worker实例为1核1GB内存,总共是3核 3GB 内
存。目前显示的Worker资源都是空闲的,当向Spark集群提交应用之后,Spark就会分配相应的资
源给程序使用,可以在该页面看到资源的使用情况。
- 历史服务器HistoryServer:
/export/server/spark/sbin/start-history-server.sh
http://bigdata-cdh01.oldlu.cn:18080/
2.9 提交运行圆周率
将上述运行在Local Mode的圆周率PI程序,运行在Standalone集群上,修改【–master】地址
为Standalone集群地址:spark://node1.oldlu.cn:7077,具体命令如下:
SPARK_HOME=/export/server/spark ${SPARK_HOME}/bin/spark-submit \ --master spark://node1.oldlu.cn:7077 \ --class org.apache.spark.examples.SparkPi \ ${SPARK_HOME}/examples/jars/spark-examples_2.11-2.4.5.jar \ 10
查看Master主节点WEB UI界面: