Spark streaming的执行流程
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才算完成。
最新文章
- Socket get http request
- Android新特性Instant Run详解
- 基于gtid的复制
- cscope和ctags自动更新
- C# 对结构体和指针的使用
- CABAC总结与补充讨论
- 如何使用Jquery直接导入记事本的内容
- Vue系列之 =>; 使用钩子函数的第二个参数传参
- Sonya and Matrix CodeForces - 1004D (数学,构造)
- C语言基础:内存 分类: iOS学习 c语言基础 2015-06-10 21:59 23人阅读 评论(0) 收藏
- URL访问 和命名规范
- Web漏洞挖掘之网络信息探测
- 移动端h5列表页上拉加载更多
- xxl_job springboot改造
- Scrapy学习篇(三)之创建项目
- PAT 1125 Chain the Ropes[一般]
- sql 删除表字段中所有的空格
- ImageTag小案例
- AC日记——[Sdoi2008]Cave 洞穴勘测 bzoj 2049
- Activity组件(传递数据)
热门文章
- RBAC: 基于角色的访问控制(Role-Based Access Control)
- shell中exec命令
- C++ ------ const迭代器 和 const_iterator的区别
- Nginx利用lua剪辑FastDFS图片
- Linux 之 crontab 使用
- vue npm start 自动打开网页
- centos 7 两台机器搭建三主三从 redis 集群
- 分布式监控工具Ganglia 介绍 与 集群部署.
- 第9月第9天 CTFramesetterCreateWithAttributedString
- Python 入门基础1 --语言介绍