Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

关于第三章的有些疑问 #31

Open
about17ka opened this issue Jul 22, 2015 · 4 comments
Open

关于第三章的有些疑问 #31

about17ka opened this issue Jul 22, 2015 · 4 comments

Comments

@about17ka
Copy link

你好,在第三章中第三页的图中有一幅插图我不太理解。
qq 20150722212641
图中stage1和stage2的任务是并发执行的吗?之前参考了http://dongxicheng.org/framework-on-yarn/apache-spark-multi-threads-model/ 这篇博客,得出多作业在spark中是可以并发执行的,然而图中stage1与stage2似乎也是并发关系,此外stage2中的两个lineage也是并发执行的吗?如果是,是不是表示在一个stage中的不同task也可以并发的执行?
此外,如果多作业在spark中能够并发执行,那么前后的数据依赖关系怎么处理?(举个例子,现在的资源够图中3个stage同时开始运算,然而stage0的计算需要stage1和stage2的计算结果,那么stage0是否是先判断自己做计算所需的rdd不足,然后再等待stage1和stage2完成任务?而且stage0是怎么被激发的?是在stage1结束之后被激发的吗?)
初学spark,很多不理解,希望能解惑,非常感谢

@JerryLead
Copy link
Owner

@about17ka
stage1和stage2可以并发执行,因为他们之间没有依赖关系,但具体实现是否是并行的,有点忘了,要review一下代码。

stage2中的两个lineage也是并发执行的,一共生成4个tasks,每个task执行一条黑色的线

stage1和stage2都是stage0的parent stage,stage0等待stage1和stage2都完成任务后,才能执行,之前stage0状态一直是pending。激发很容易,就是一个栈,stage0在栈底,上面是stage0和stage1

@about17ka
Copy link
Author

@JerryLead
首先很感谢你的回答,我对你回答的理解是:在资源足够的情况下,stage1与stage2中的所有task,只要没有依赖关系,都可以并发执行,而如果资源有限,则会按照顺序从stage1开始执行,不知是否正确。
再咨询一个问题,这种并发执行是否需要我们编写并行的scala程序才能实现?还是我们只需要写顺序的书写程序,而spark会调度程序并发的执行?

@JerryLead
Copy link
Owner

@about17ka

“在资源足够的情况下,stage1与stage2中的所有task,只要没有依赖关系,都可以并发执行”。正确。
“而如果资源有限,则会按照顺序从stage1开始执行,不知是否正确”。stage1和stage2里面的所有task都是ready-to-run,具体哪个task先被执行,要看调度器先调了哪个task。

“这种并发执行是否需要我们编写并行的scala程序才能实现?还是我们只需要写顺序的书写程序,而spark会调度程序并发的执行?”, 我们写的Scala程序只specify RDD之间的关系(也就是logic plan),Spark负责将logic plan转换成上面的physical plan,然后并发执行task,我们只能控制task的个数(也就是partition个数),其他并发由框架完成。

@about17ka
Copy link
Author

非常感谢您的回答

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants