Spark小课堂Week4 从控制台看Spark逻辑结构
层级关系:
从监控控制台,我们可以看到如下关系:
- 一个 Job 包含 n Stage
- 一个 Stage 包含 n Task
Job0解决什么问题?
在控制台,有一个Job0,负责进行数据接收。
其实这个程序并没有分布式的需求,为什么要采用Job来管理:
主要解决了几个问题:
- 程序出现异常,Job可以自动重启。
- 程序运行过程中有监控、度量等需要,Job可以自动完成。
- 如何确定运行的节点,Job可以自动调度。
所以Job就是一个有异常恢复、可管理的、自动调度的Runnable程序。
Spark的逻辑层次:
Spark中三个逻辑层次解决的问题:
- Job 解决应用程序的管理问题,出现异常的话一般是应用程序异常。
- Stage 对应用程序以节点间数据交换为依据切分,Stage之间有运行顺序要求,出现异常的话一般是shuffle的问题。
- Task 完全并发运行算法的线程,无运行顺序要求,出现异常的话一般是算法程序错误。
分布式系统设计关键:
分布式系统相比于普通系统,主要的区别在于:
1.由于存在节点间数据交换,所有独有数据shuffle操作。
2.需要分布式的通讯支持,一般采用RPC方式,包括Akka,Netty等支持。
3.由于可靠性降低,需要完善的异常处理机制。
关于
小课堂是在公司进行内部交流的一系列主题,偏基础,但是比较零散,持续更新中。