http://www.cnblogs.com/shenh062326/p/3946341.html  其实流程是从这里转载下来的,我只是在流程叙述中做了一下的标注。 当然为了自己能记住的更清楚,我没有直接copy而是打出来的。

1、客户端提交作业后,启动Driver,Driver是Spark作业的Master(也就是通过Driver来启动Receiver,定时去启动任务的处理,注意的是,驱动启动任务会受前一个任务执行的影响。也就是前一个任务没有执行完成后,是不会启动后边的任务的。  所以,注意你的streaming的执行时间,绝对不要超过Recive数据的时间)

2、每个作业包含多个Executor,每个Executor以线程的方式运行task,Spark Streaming至少包含一个Receiver task。(一个Executor就是一个spark进程,在yarn中就是一个container,这个大家应该知道。然后Receiver task是在driver中创建的,我理解一个Receiver是运行在一个Executor中的。然后如果想要创建多个Receiver,那么需要大概这样做(1 to 10).map(_.createStream....),这样就能创建10个receiver task啦。 注意这个数量当然不能超过你的结点数量啦。   还有个问题,通常使用kafka比较合适,因为kafka是stream向kafka来poll数据。而他妈的flume默认只支持pull,如果想支持poll,那需要定制sink,那真是太恶心了。)

3、Receiver接收数据后生成Block,并把BlockId汇报给Driver,然后备份到另外一个Executor上。(默认情况下接受数据是200毫秒生成一个block,我理解一个block应该是一个partition?这个还不确定,需要对照源代码看一下;然后会把生成的Block随机扔到不同的Executor,同时,driver去派发任务时,也会找到就近的Executor。我理解,节点中的所有executor都应该会有数据才对)

4、ReceiverTracker维护Receiver汇报的BlockId。(这个ReceiverTracker应该是维护在Driver中,Driver会根据维护的这些数据块进行任务的派发)

5、Driver定时生成JobGenerator,根据DStream的关系生成逻辑RDD,然后创建Jobset,交给JobScheduler。

6、JobScheduler负责调度Jobset,交给DAGScheduler,DAGScheduler根据逻辑RDD,生成相应的Stages,每个stage包含一到多个task。(我记得DAGScheduler会对任务做一层优化)

7、TaskScheduler负责把task调度到Executor上,并维护task的运行状态。

8、当tasks,stages,jobset完成后,单个batch才算完成。

最新文章

  1. Socket get http request
  2. Android新特性Instant Run详解
  3. 基于gtid的复制
  4. cscope和ctags自动更新
  5. C# 对结构体和指针的使用
  6. CABAC总结与补充讨论
  7. 如何使用Jquery直接导入记事本的内容
  8. Vue系列之 => 使用钩子函数的第二个参数传参
  9. Sonya and Matrix CodeForces - 1004D (数学,构造)
  10. C语言基础:内存 分类: iOS学习 c语言基础 2015-06-10 21:59 23人阅读 评论(0) 收藏
  11. URL访问 和命名规范
  12. Web漏洞挖掘之网络信息探测
  13. 移动端h5列表页上拉加载更多
  14. xxl_job springboot改造
  15. Scrapy学习篇(三)之创建项目
  16. PAT 1125 Chain the Ropes[一般]
  17. sql 删除表字段中所有的空格
  18. ImageTag小案例
  19. AC日记——[Sdoi2008]Cave 洞穴勘测 bzoj 2049
  20. Activity组件(传递数据)

热门文章

  1. RBAC: 基于角色的访问控制(Role-Based Access Control)
  2. shell中exec命令
  3. C++ ------ const迭代器 和 const_iterator的区别
  4. Nginx利用lua剪辑FastDFS图片
  5. Linux 之 crontab 使用
  6. vue npm start 自动打开网页
  7. centos 7 两台机器搭建三主三从 redis 集群
  8. 分布式监控工具Ganglia 介绍 与 集群部署.
  9. 第9月第9天 CTFramesetterCreateWithAttributedString
  10. Python 入门基础1 --语言介绍