Spark中的BlockManager及Spark HA

对于Executor中执行的BlockManager总结如下:

1、一个Executor中一个BlockManager

2、一个worker中可以有多个Executor

3、对于driver端拥有的是BlockManagerMaster。

在task执行过程中,读取广播变量的时候,第一次读取广播变量的时候,BlockManager中是没有广播变量的值的,是需要BlockManager去Driver端拉取。

一个BlockManager由四部分组成:Memery Store、Disk Store、ConnectionManager、BlockTransferService;

过程解释如下:

(1)线程池中的task第一次执行去Memert Store读取广播变量的时候,Executor中的BlockManager中的ConnectionManager首先与Driver端的ConnectionManager建立连接。

(2)由Executor端的BlockTransferService去Driver端的Memery Store拉取数据。

(3)拉取数据成功后放入Executor端的Memery Store 中,供Task运行时读取。

Spark HA

在Spark中实现HA,我们采用的是Zookeeper,Zookeeper不仅有存储功能,还有选举功能。

Zookeeper中可以存储Master的元数据信息(worker、Application、Driver等),将元数据信息存储到Znode临时节点上。

问题:

(1)在master的主备切换的过程中,能否提交新的Application任务?

答:不能,因为主备切换时需要时间的,不能接受Driver和Application的注册,也就不能分配资源。

(2)在master的主备切换的过程中,已经提交的Application会受到影响吗?

答:不会,因为spark是粗粒度的资源调用,当前运行的Application已经得到了运行所需要的全部资源,所以不会受到影响。

猜你喜欢

转载自www.cnblogs.com/learn-bigdata/p/10802326.html