Spark-Master源码和Master-HA

本文详细探讨了Spark Master的源码分析,包括Master启动时的主要工作,如RpcEnv的创建与Endpoint的设置。同时,介绍了Master高可用(HA)的原理,如FileSystem和Zookeeper两种实现方式,并提供了基于Zookeeper搭建Master HA的步骤,包括配置ZK信息、分发配置文件、更改主节点等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Spark-Master源码和Master-HA

源码

Master源码图

总结1:

​ Master(startRpcEnvAndEndpoint)的工作主要有2部分组成

​ 一是搭建环境(RpcEnvEndpoint)–> val rpc = RpcEnv.create(…)

​ 在new NettyRpcEnvFactory().create()的nettyEnv.startServer()底层的receivers.offer(data)触发

new NettyRpcEnvFactory().create()的val nettyEnv = new NettyRpcEnv()底层的receivers.take()方法

//val transportContext = new TransportContext(NettyRpcHandler)方法。

​ 二是触发执行 --> val masterEndpoint: RpcEndpointRef = rpcEnv.setupEndpoint(xx.new Master…)

​ 在其底层的 val data:EndpointData = endpoints.get(name) receivers.offer(data)执行

endpoint.onStart()

​ 其中receivers.offer(data)和endpoint.onStart()触发receivers.take()方法完成整个过程

总结2:

​ Master执行由两条线组成,其中第一条线又分为2条线,在此分别用1-1,1-2,2表示

​ 1-1 搭建环境 启动线程 线程死循环加载队列 等待onstart触发

​ 1-2 创建Map集合(任务名字,EndpotionData)

​ 2 Master任务触发找到Map集合去匹配类型,触发1-1

​ 开始执行

Master-HA

原理

​ Standalone集群只有一个Master,如果Master挂了就无法提交应用程序,需要给Master进行高可用配置,Master的高可用有两种实现方法: 1使用fileSystem(文件系统) 2zookeeper(分布式协调服务)

​ fileSystem只有存储功能,可以存储Master的元数据信息,用fileSystem搭建的Master高可用,在Master失败时,需要我们手动启动另外的备用Master,这种方式不推荐使用。

​ zookeeper有选举和存储功能,可以存储Master的元素据信息,使用zookeeper搭建的Master高可用,当Master挂掉时,备用的Master会自动切换,推荐使用这种方式搭建Master的HA。

搭建

1 在主节点spark/conf/spark-env.sh添加 指定ZK,指定ZK节点,指定ZK中存储文件名
export SPARK_DAEMON_JAVA_OPTS="-Dspark.deploy.recoveryMode=ZOOKEEPER -Dspark.deploy.zookeeper.url=sxt002:2181,sxt003:2181,sxt004:2181 -Dspark.deploy.zookeeper.dir=/MasterHA"

2 将更改好的/spark-env.sh 分发到另外的2台Worker节点上

3 在其中一台worker节点上 更改spark-env.sh的主节点(原sxt001)改为自身节点

4 主节点spark/sbin启动spark集群 ./start-all.sh

5 更改过的Worker节点在sbin下启动 ./start-master.sh

rt-all.sh

5 更改过的Worker节点在sbin下启动 ./start-master.sh

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值