yarn 的执行流程
Spark Application
Spark与MapReduce的区别
MapReduce是基于进程的, mapTask、reducerTask 都是进程。当task完成了, 这个进程就结束了。
Spark是基于线程的, 多个task并行在一个进程里, 即使没有job运行, 这个进程也会在整个Spark Application生命周期内持续运行。
好处:
- 速度快
- task可以直接启动, 不必创建进程
- 基于内存的处理
Spark on yarn 的两种方式
worker均运行在Container中。 每一个YarnApplication都有一个ApplicationMaster, 运行在第一个Container中。
Spark on yarn 分为cluster和client两种模式:
- Client模式下, Driver运行在Client进程中; ApplicationMaster负责资源申请。
- Cluster模式下, Driver运行在第一个Container中, 提交任务后Client就没有用了; ApplicationMaster负责申请资源和task调度。