Spark高可用HA实战
来源:互联网 发布:字体管家 mac 编辑:程序博客网 时间:2024/05/12 09:43
zookeeper可以做让所有机器的状态同步或者做集群的全局配置
Spark高可用HA实战
active挂掉后集群切换流程:当集群的master的active挂掉之后,zookeeper会在standby的master中通过选举机制选择一台standby机器作为leader, 通过读取zookeeper中的元数据信息,恢复整个集群的状态,成功恢复之后才能作为整个集群的master(active),开始接受所有的作业提交和资源申请的请求
集群的元数据存在于什么地方:整个集群的元数据都存在于zookeeper中,当master挂掉之后standby的机器会在zookeeper中恢复选择一台机器作为master的active
问题:zookeeper中包含的内容有哪些?
答:Worker,Driver,Application
问题:当active级别的master挂掉之后,standby级别的master作为active之前的这一段时间我们能不能向集群提交新的作业或者申请资源?
答:不能,但是程序在集群的运行是正常的是不会影响的,为什么不会影响?程序在运行之前(向master注册的时候,也是程序初始化的时候)已经向master申请过资源(粗粒度),分配资源之后,Driver开始于Worker分配的Excutor开始进行通信,这个时候一般不需要master参与,除非Excutor有故障。所以在master在出现故障之后,并不影响已有的作业的运行。
粗粒度好处:一次分配完资源之后还可以复用这些资源,Driver直接就可以和Worker分配的Excutor通信,
粗粒度坏处:当我们的job有100万个任务,只有1个任务非常的慢,那么其余100万-1个任务占用的资源将不会释放,资源闲置却不能释放
细粒度好处:资源动态分配,需要才会去申请,使用完毕释放资源。
细粒度坏处:任务启动非常慢,资源无法复用(因为一次任务task计算使用完毕之后就会释放资源),通信麻烦(需要多次申请资源)
配置zookeeper好处,当我们集群重启之后他会将上一次运行的Driver,Application,Worker等信息重新恢复出来
HA的配置:
dataDir必须重新配置:默认是在tmp下面,当下次集群(主要是zookeeper)启动的时候会全部删除
zoo.cfg文件配置信息:
Spark高可用HA实战
然后再data目录下面创建一个文件myid作为每一个server的标记 0 1 2
zookeeper启动命令:zkServer.sh start 每台机器需要分别手动去启动
zookeeper配置完毕:
下一步:让Spark支持zookeeper下的HA
在spark-env.sh
整个集群的维护以及恢复都靠zookeeper
Spark高可用HA实战
最后一句的意思是:spark在zookeeper注册的目录
然后将SPARK_MASTER_IP注释掉
然后启动Spark集群start-all.sh 由于spark的slave里面的信息指定了worker的节点所以只有在master机器上启动了master,我们需要手动启动其他部署有zookeeper的机器的spark的master(./start-master.sh),但是他们处于standby状态,如下图所示:
Spark高可用HA实战
通过启动spark-shell可以看出来
./spark-shell –master spark://192.168.5.128:7077,192.168.5.134:7077,192.168.5.135:7077
6/01/17 06:07:05 INFO AppClient
16/01/17 06:07:05 INFO AppClient$ClientEndpoint: Connecting to master spark://hadoop3:7077…
他会尝试连接所有zookeeper下面的master( 相当于注册一下,知道会有哪一些master) 最后只跟具有active级别的master交互
hadoop1的master是active级别
hadoop2,hadoop3是standby级别
当我们将hadoop1的master挂掉之后,zookeeper会重新选举一个leader作为集群新的master,是集群规模大小,可能会达到分钟级别的切换,选出来新的leader之后,他需要恢复之前的active级别的master的所有集群信息以及状态(元数据包括:application,driver,worker) ,如有spark-shell正在连接,那么zookeeper会发消息给Driver,新的master已经改变
切换状态信息:16/01/17 06:12:43 WARN AppClient
16/01/17 06:13:20 INFO AppClient$ClientEndpoint: Master has changed, new master is at spark://hadoop2:7077
当我们退出spark-shell之后,下次spark-shell还是会连接上一次退出时连接的master
当关闭一台节点的电源会产生如下的日志:
16/01/17 06:35:46 ERROR TaskSchedulerImpl: Lost executor 1 on 192.168.5.135: remote Rpc client disassociated
16/01/17 06:35:46 WARN ReliableDeliverySupervisor: Association with remote system [akka.tcp://sparkExecutor@192.168.5.135:58527] has failed, address is now gated for [5000] ms. Reason: [Disassociated]
16/01/17 06:35:46 WARN ReliableDeliverySupervisor: Association with remote system [akka.tcp://sparkMaster@hadoop2:7077] has failed, address is now gated for [5000] ms. Reason: [Disassociated]
16/01/17 06:35:46 WARN AppClient
16/01/17 06:35:46 INFO BlockManagerMasterEndpoint: Trying to remove executor 1 from BlockManagerMaster.
16/01/17 06:35:46 INFO BlockManagerMasterEndpoint: Removing block manager BlockManagerId(1, 192.168.5.135, 45582)
16/01/17 06:35:46 INFO BlockManagerMaster: Removed 1 successfully in removeExecutor
16/01/17 06:35:58 WARN ReliableDeliverySupervisor: Association with remote system [akka.tcp://sparkExecutor@192.168.5.134:33931] has failed, address is now gated for [5000] ms. Reason: [Disassociated]
16/01/17 06:35:58 ERROR TaskSchedulerImpl: Lost executor 2 on 192.168.5.134: remote Rpc client disassociated
16/01/17 06:35:58 INFO DAGScheduler: Executor lost: 2 (epoch 1)
16/01/17 06:35:58 INFO BlockManagerMasterEndpoint: Trying to remove executor 2 from BlockManagerMaster.
16/01/17 06:35:58 INFO BlockManagerMasterEndpoint: Removing block manager BlockManagerId(2, 192.168.5.134, 38548)
16/01/17 06:35:58 INFO BlockManagerMaster: Removed 2 successfully in removeExecutor
搭建spark集群的配置信息问题(不是HA搭建的问题):
spark.default.parallelism 100什么意思?
解答:需要根据实际情况调整默认配置,调整方式是修改参数spark.default.parallelism。通常的,reduce数目设置为core数目的2-3倍。数量太大,造成很多小任务,增加启动任务的开销;数目太小,任务运行缓慢。所以要合理修改reduce的task数目即spark.default.parallelism
在集群中如果因为某种原因导致Worker失败了,重新启动使用命令:./start-all.sh
- Spark高可用HA实战
- 第1讲Spark纯实战公益大讲坛:通过案例实战掌握高可用HA下的Spark集群部署
- Spark集群搭建+基于zookeeper的高可用HA
- k8s kubernetes 高可用https and http集群实战 HA
- 高可用集群 HA
- LINUX+HA高可用
- HA 高可用集群
- Hiveserver2 HA高可用
- MySQL-HA高可用
- nginx HA高可用
- HA高可用
- HA 高可用
- Spark学习笔记8-搭建spark的HA(用zookeeper实现spark的高可用)
- spark集群与spark HA高可用快速部署 spark研习第一季
- 构建Oracle高可用环境HA rac:企业级高可用数据库架构、实战与经验总结
- 构建Oracle高可用环境HA rac:企业级高可用数据库架构、实战与经验总结
- HA高可用HEARTBEAT配置
- postgres HA 高可用架构
- AT4RE Patcher v0.6.3使用心得:
- String str="abc" 与 String str = new String("abc")区别
- Gson的使用
- java mail 删除邮件
- 最近公司在新版本上有一个需要
- Spark高可用HA实战
- 《Motion Design for iOS》(三十三)
- 设置TextView中超链接字体颜色、下划线
- 合并数组
- ABAP一个不错的博客
- 这可能是史上最全的CSS自适应布局总结教程
- 删除system/app下的apk
- Node Install
- ios检测网络状态改变