hadoop yarn应用程序开发要点

yarn应用程序比如MapReduce,spark等都是运行于yarn资源管理器上面的应用程序,这些运行于yarn上的应用程序的开发都是类似的,以下介绍下开发运行于yarn上面的自定义应用程序的要点:
一 客户端的开发
客户端的开发的主要目的是和yarn的ResourceManager建立联系,把ApplicationMaster需要的内存和环境变量等配置告知ResourceManager,等待ResourceManager分配Container来运行ApplicationMaster应用程序,客户端伪代码如下:
1.1 创建到ResourceManager的客户端连接
1.2 设置应用程序的程序名称,要提交到的queue名称,AM容器所需的内存大小,所需的worker容器的数量和内存大小
1.3 设置AM环境变量配置,AM的jar包的路径,然后就可以通过和ResourceManager建立的连接提交应用程序了.
1.4 提交应用程序后,客户端通过运行一个while循环来定时的获取应用程序的状态,直到应用程序成功完成
二 ApplicationMaster的开发
ApplicationMaster启动之后会向ResourceManager注册自己,并维持和ResourceManager之间的心跳信息,然后ApplicationMaster会像ResourceManager申请Container资源,当收到ResourceManager的资源申请应答后,会和对应的NodeManager进行通信以便启动Container,ApplicationMaster的伪代码如下:
2.1 ApplicationMaster向ResourceManager注册自己,注册自己时要把ApplicationMaster所在的主机名,端口号,已经tracing url告诉ResourceManager,tracing url是yarn web界面上显式给用户,供用户查询应用程序状态时使用的
2.2. ApplicationMaster根据所需的Container的数量和内存大小,构造ResourceRequest类对象向ResourceManager申请容器资源
2.3 当ApplicationMaster收到ResourceManager的资源响应应答时,会和NodeManager建立连接,并把启动Container的命令和内存大小等参数通知给NodeManager,这样NodeManager就会启动Container来完成任务了.
hadoop2的yarn的职责明确为仅仅只是资源的管理者,它不再管理应用程序的状态信息,这些应用程序的状态信息的管理由ApplicationMaster自己负责,这样职责明确之后,yarn就可以为同时为众多的应用程序提供资源管理的服务了

你可能感兴趣的:(yarn,hadoop,大数据,分布式,yarn)