第二十二记·Spark Standalone环境搭建 监听历史服务配置
XY个人记
Standalone集群的配置
配置前提:需要spark的本地执行环境已经配置OK,可参考(第二十二记·local本地运行环境搭建及wordCount案例分析)
在spark-env文件中可以看到它为我们提供需要配置的相应信息如下:
1.修改spark-env.sh文件根据上面提示配置如下
SPARK_MASTER_HOST=hadoop01.com
SPARK_MASTER_PORT=7070
SPARK_MASTER_WEBUI_PORT=8080
SPARK_WORKER_CORES=2 //指定当前机器上的每个worker进程允许分配的逻辑CPU核数
SPARK_WORKER_MEMORY=2g //指定当前机器上的每个worker允许分配的内存大小(可以认为是逻辑内存)
SPARK_WORKER_PORT=7071
SPARK_WORKER_WEBUI_PORT=8081
SPARK_WORKER_INSTANCES=2 //指定当前机器上的Worker的数量
2. 配置Worker节点所在机器,在conf目录中
$ cp slaves.template slaves
slaves文件里添加节点的主机名:hadoop01.com
3. 我们上面配置的是单机模式,额外:完全分布式配置
只需要在slaves文件中添加slave从节点的hostname即可(前提是ssh、hostname和ip映射等hadoop的依赖环境均已完成),然后将修改好的spark的安装包copy到其他的slave机器上即可完成分布式的安装
4. 启动服务
4.1 启动主节点
./sbin/start-master.sh #访问WEB页面:http://hadoop01.com:8080/
4.2 启动从节点(Worker)
./sbin/start-slaves.sh # 启动所有worker
4.3 关闭所有服务
./sbin/stop-all.sh
4.5 启动所有服务
./sbin/start-all.sh
注意:启动和关闭所有服务的前提是由ssh免秘钥登录
master节点的web页面
5. 简单查看/测试
./bin/spark-shell --help #查看帮助命令
5.1连接到指定的spark standalone集群:
./bin/spark-shell --master spark://hadoop01.com:7070 #使用master连接到指定的spark集群
6.运行测试
val res2 = sc.textFile("file:///opt/modules/apache/spark-2.0.2/README.md").flatMap(_.split(" ")).filter(_.nonEmpty).map((_,1)).reduceByKey(_ + _).map(_.swap).top(10).map(_.swap)
成功。
Spark StandAlone集群的HA配置
在spark的官网上有提供HA的配置:http://spark.apache.org/docs/2.0.2/spark-standalone.html#high-availability
1. Single-Node Recovery with Local File System --基于文件系统的单节点恢复
在spark-env.sh配置
SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=FILESYSTEM -Dspark.deploy.recoveryDirectory=/user/spark/tmp"
#spark.deploy.recoveryDirectory --> 保存恢复状态的一个目录
2. Standby Masters with ZooKeeper --基于Zookeeper的Master的HA机制
SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=hadoop01:2181 -Dspark.deploy.zookeeper.dir=/spark-ha"
3.完全分布式的机器分布情况
这个参考hadoop的配置,但是没有hadoop配置要求那么严格
Spark应用的监控
官网:http://spark.apache.org/docs/2.0.2/monitoring.html
1. 针对我们正在运行的Spark应用,可以通过WEB界面监控,默认端口号是4040,如果4040被占用,就会依次进行端口递增,spark.ui.port来控制,指定你这个应用默认开始的端口号(spark.ui.port=4050 )
2.配置spark的历史服务
如果应用已经执行完成了,那可以spark的job history server服务来看
1. 在HDFS上创建spark应用日志存储路径
$ bin/hdfs dfs -mkdir /spark
2. 修改spark-default.conf配置文件
cp spark-defaults.conf.template spark-defaults.conf
spark.eventLog.enabled true
spark.eventLog.dir hdfs://hadoop01.com:8020/spark
配置为相应的HDFS Log后,可以运行shell来查看: $ bin/spark-shell --master spark://hadoop01.com:7070
3. 配置Spark的job history server
spark-env.sh
SPARK_HISTORY_OPTS="-Dspark.history.fs.logDirectory=hdfs://bigdata.ibeifeng.com:8020/spark/o2o23/history -Dspark.history.ui.port=18080"
4. 启动spark的job history server
$ sbin/start-history-server.sh
访问:http://hadoop01.com:18080
可以单独查看相应的API信息
如:http://hadoop01.com:18080/api/v1/applications