Spark调度架构原理详解-创新互联
1.启动spark集群,就是执行sbin/start-all.sh,启动master和多个worker节点,master主要作为集群的管理和监控,worker节点主要担任运行各个application的任务。master节点需要让worker节点汇报自身状况,比如CPU,内存多大,这个过程都是通过心跳机制来完成的
创新互联专业为企业提供夏邑网站建设、夏邑做网站、夏邑网站设计、夏邑网站制作等企业网站建设、网页设计与制作、夏邑企业网站模板建站服务,10余年夏邑做网站经验,不只是建网站,更提供有价值的思路和整体网络服务。2.master收到worker的汇报信息之后,会给予worker信息
3.driver提交任务给spark集群[driver和master之间的通信是通过AKKAactor来做的,也就是说master是akkaactor异步通信模型中的一个actor模型,driver也是一样,driver异步向mater发送注册信息(registerApplication)异步注册信息]
4.master节点对application预估,7个G的内存完成任务,对任务进行分配,每一个worker节点上都分配3.5G的内存去执行任务,在master就对各个worker上的任务进行整体的监控调度
5.worker节点领到任务,开始执行,在worker节点上启动相应的executor进程来执行,每个executor中都有一个线程池的概念,里面存有多个task线程
6.executor会从线程池中取出task去计算rddpatition中的数据,transformation操作,action操作
7.worker节点向driver节点汇报计算状态
通过本地并行化集合创建RDD
public class JavaLocalSumApp{ public static void main(String[] args){ SparkConf conf = new SparkConf().setAppName("JavaLocalSumApp"); JavaSparkContext sc = new JavaSparkContext(conf); Listlist = Arrays.asList(1,3,4,5,6,7,8); //通过本地并行化集合创建RDD JavaRDD listRDD = sc.parallelize(list); //求和 Integer sum = listRDD.reduce(new Function2 (){ @Override public Integer call(Integer v1,Integer v2) throws Exception{ return v1+v2; } } ); System.out.println(sum) } } //java 中的函数式编程,需要将编译器设置成1.8 listRDD.reduce((v1,v2)=> v1+v2)
分享标题:Spark调度架构原理详解-创新互联
网站路径:http://myzitong.com/article/dshhpc.html