1、Yarn的架构设计:
这个过程一共是有8个步骤:
1、用户向Yarn中的ResourceManager提交应用程序,其中包括ApplicationMaster程序,启动ApplicationMaster命令、用户命令等。
2、ResourceManager首先为该Application程序分配第一个Container容器,并与对应的Node Manager通信,要求Node Manager在这个Container中启动应用程序的MR ApplicationMaster。
3、ApplicationMaster首先向ApplicationsManager注册,这样用户就可以通过ResourceManager web 8088查看应用程序的运行状态,然后它将为各个任务申请资源,并监控它的运行状态,直到运行结束,即重复步骤4~7。
4、ApplicationMaster采用轮询的方式通过RPC协议向Resource Scheduler申请和领取资源。
5、一旦ApplicationMaster申请到资源后,便与对应的Node Manager通信,要求它启动任务。
6、Node Manager节点为任务设置好运行环境(包括环境变量、JAR包、二进制程序等)后,将任务启动命令写到一脚本中,并通过运行该脚本启动container容器,运行task任务。
7.各个容器的任务,通过某个RPC协议向ApplicationMaster汇报自己的状态和进度,以让ApplicationMaster随时掌握各个任务的运行状态,从而在任务失败时重启任务。在应用程序运行过程中,用户可随时通过RPC向ApplicationMaster通过web界面实时查看应用程序的当前运行状态。
8、应用程序运行完成后,ApplicationMaster向ResourceManager注销并关闭自己。
Container:柜机能运行多少task任务是以Container为单位的,是一个虚拟的概念,是Yarn的资源的抽象,封装了某个节点的多维度资源,如内存,cpu,磁盘,网络等。
当ApplicationMaster向ResourceManager申请资源时,ResourceManage为ApplicationMaster返回的资源就是使用Container来标识,实际上是不存在的。
2、常用命令
hadoop jar
[hadoop@hadoop001 bin]$ yarn
Usage: yarn [–config confdir] COMMAND<