spark高可用集群的搭建方式
搭高可用的集群有两种方式,一种是基于文件系统,一种是基于zookeeper。但是zookeeper有选举的功能,也就是当一台master挂掉之后,备用的master能够被zookeeper启动起来,并基于zookeeper恢复数据。
zookeeper的作用
- 托管主节点的信息,HDFS(namenode),YARN(resourcemanager)。
- 自动选举leader的功能。
spark中master存在单点故障,zookeeper里面托管的是master的信息。
master的信息包含:Worker的信息(HashSet),Driver的信息(ArrayBuffer),Application的信息(ArrayBuffer)。
如果spark集群中某一台alive状态的master挂掉了,另外一个原先处于standb状态的master会基于zookeeper托管的信息重新恢复,变为alive状态。
基于文件系统和基于zookeeper搭建spark高可用有什么区别?
基于文件系统,当master挂掉之后,需要手动启动一个master,新的master会基于文件系统上面的信息恢复。
基于zookeeper,当一个master挂掉了,他会自动选取一个新的master作为alive状态的master,选举出来后,再基于zookeeper保存的信息恢复。
1.master主备切换时间能提交一个新的application到集群中运行么?
不能,因为在master主备切换的过程,master是无法为当前Application分配资源
2.主备切换之前已经有application在运行了,主备切换的时候有影响么?
没有影响,因为Spark是粗粒度的资源调度,在application运行之前已经分配好资源了。
3.心跳机制
Worker仅仅向Master汇报的信息只有WorkerID, 也就是告诉 Master 我还活着,至于 Worker 内部的资源信息,因为 Spark 是粗粒度的资源调度,在Worker启动时就已经向Master汇报了资源情况,所以 Master内部有它的资源信息。