基于Zookeeper的Spark HA配置说明
来源:互联网 发布:夏普lcd70tx8008a知乎 编辑:程序博客网 时间:2024/05/17 04:28
默认情况下在Spark standalone集群中进行计算时,由于是RDD的计算模型,所以可以认为worker 已经是有HA特性的了,但是负责资源调度的Master节点有可能出现单点故障。所以为了保证环境的稳定,还是需要配置HA功能。
官方文档中提供了两种HA的机制
- 基于Zookeeper:利用ZooKeeper来提供主节点选举和集群状态的存储,可以在集群中运行多个连接到同一个Zookeeper集群的Master节点。其中一个将被选为“Leador”和其他的节点将会是Standby模式。如果当前的Leador挂了,会通过选举产生一个新的Leador。
请注意,对于新运行的应用 -延迟可能会有1-2分钟,对于已经运行的应用不会受到影响。 - 基于文件系统:将状态数据存在目录文件中,当主节点挂掉后,通过重启来解决问题。由于stop-master.sh方式停止Master节点是,不会将对应的数据删除,所以时间长了,可能会影响到启动速度
- 官方原文:http://spark.apache.org/docs/1.6.0/spark-standalone.html
本文主要对第一种HA机制进行配置与演示
- 环境说明
本次演示主要基于已有的Spark以及Zookeeper集群
Spark:1.6.0,配置过程请参见:http://blog.csdn.net/eric_sunah/article/details/49705051
Zookeeper:使用已有的Zookeeper集群,配置过程请参见:http://blog.csdn.net/eric_sunah/article/details/43969603 - 配置
在Spark standlone单Master节点的基础上,只需要做如下修改- 修改spark-env.sh
- 将Spark/conf/spark-env.sh中的SPARK_MASTER_IP 配置部分删除
- 在Spark/conf/spark-env.sh文件中加入如下配置
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=spark1:2181,spark2:2181 -Dspark.deploy.zookeeper.dir=/spark"
- 将spark-env.sh文件同步到所有节点
- 在原节点上(native-lufanfeng-1-5-24-137)执行
Spark/sbin# ./start-all.sh - 在备选的Master节点上(native-lufanfeng-2-5-24-138)执行
Spark/sbin# ./start-master.sh
- 修改spark-env.sh
- 演示
- 启动Application的方式调整
为了保证在App可以随着Master的迁移而连接到正确的Master,启动方式上也要做一些调整Spark/bin/spark-submit --master spark://native-lufanfeng-2-5-24-138:7077,native-lufanfeng-1-5-24-137:7077 batching_main.py - 切换
切换之前138为Active,137为standby.状态如下:
此时在138上执行Spark/sbin# ./stop-master.sh操作,发现137的spark日志输出如下:
此时打开137的状态如下:
- 启动Application的方式调整
- 常见问题
- 备用Master节点启动失败,查看日志发现以下问题:
Set(SparkR); users with modify permissions: Set(SparkR)
16/03/30 14:33:02 WARN util.Utils: Service 'sparkMaster' could not bind on port 7077. Attempting port 7078.
16/03/30 14:33:02 WARN util.Utils: Service 'sparkMaster' could not bind on port 7078. Attempting port 7079.
16/03/30 14:33:02 WARN util.Utils: Service 'sparkMaster' could not bind on port 7079. Attempting port 7080.
16/03/30 14:33:02 WARN util.Utils: Service 'sparkMaster' could not bind on port 7080. Attempting port 7081.
解决方案:
将Spark/conf/spark-env.sh中的SPARK_MASTER_IP 配置部分删除
- 备用Master节点启动失败,查看日志发现以下问题:
0 0
- 基于Zookeeper的Spark HA配置说明
- Spark基于zookeeper的HA
- Spark集群基于Zookeeper的HA搭建部署笔记
- Spark集群基于Zookeeper的HA搭建部署
- Spark集群基于Zookeeper的HA搭建部署
- Spark集群搭建+基于zookeeper的高可用HA
- Spark集群基于Zookeeper的HA搭建部署笔记
- Spark集群基于Zookeeper的HA搭建部署
- Spark技术内幕:Master基于ZooKeeper的High Availability(HA)源码实现
- Spark技术内幕:Master基于ZooKeeper的High Availability(HA)源码实现
- Spark技术内幕:Master基于ZooKeeper的HighAvailability(HA)源码实现
- Spark技术内幕:Master基于ZooKeeper的High Availability(HA)源码实现
- 基于zookeeper的hadoop HA实现
- 基于zookeeper的hadoop HA实现
- 基于Zookeeper的Hadoop HA实现
- ActiveMQ(5)-基于ZooKeeper的HA方案
- 基于zookeeper的Spark高可用集群配置
- 生产环境基于HA的Spark搭建
- spring mvc接受前端投递的json问题
- Android webview加载本地html实现跨域访问
- Linux系统dev/目录下的tty
- Android 系统默认音量和最大音量
- Androi沉浸式状态栏
- 基于Zookeeper的Spark HA配置说明
- gson引用泛型解析
- http,https区别
- MVC 与 MVVM 设计架构简介
- 你会写软件开发文档吗?
- http请求头和响应体信息
- 软工文档总结
- STM32串口一直进中断解决方法
- 安装Scikit-learn:ValueError: numpy.dtype has the wrong size, try recompiling解决