Hadoop: Writing YARN Applications
- 原生开发YARN应用
- 参考: http://hadoop.apache.org/docs/r3.0.0-alpha2/hadoop-yarn/hadoop-yarn-site/WritingYarnApplications.html
- 在YARN上编写一个应用程序,你需要开发Client和ApplicationMaster两个模块,并了解涉及到的几个协议的若干API和参数列表,其中ApplicationMaster还要负责资源申请,任务调度、容错等,总之,整个过程非常复杂。
- 基于Twill开发
- 参考: http://twill.apache.org/GettingStarted.html
- 优点: 简化了YARN开发的复杂性;
- 缺点: 不容易trouble shooting,封装部分不易detect问题,另外也不能支持最新的Hadoop cluster;文档也太少;
- 基于Slider开发
- 参考: http://slider.incubator.apache.org
- 优点: 简化了YARN开发的复杂性;
- 缺点: 不容易trouble shooting,封装部分不易detect问题,另外也不能支持最新的Hadoop cluster;本身的框架也很复杂,
- 基于Spring Hadoop开发
- 参考: https://spring.io/guides/gs/yarn-basic/
- 优点: 简化了YARN开发的复杂性;
- 缺点: 不容易trouble shooting,封装部分不易detect问题,另外也不能支持最新的Hadoop cluster;
开发Client和ApplicationMaster
当用户向YARN中提交一个应用程序后,YARN将分两个阶段运行该应用程序: 第一个阶段是启动ApplicationMaster; 第二个阶段是由ApplicationMaster创建应用程序,为它申请资源,并监控它的整个运行过程,直到运行完成。
1.开发Client启动AM
Client部分是用于将应用提交到YARN, 从而可以启动application master.
客户端通常只需与ResourceManager交互,期间涉及到多个数据结构和一个RPC协议,具体如下: