hadoop 面试
组件简单介绍
- ResourceManager (RM):整个集群资源的老大
- NodeManager (NM):单个节点资源老大
- mrApplicationMaster (AM):单个任务运行的老大
- Container:容器,相当一台独立的小电脑,里面封装了任务运行所需要的资源(如内存、CPu、磁盘、网络等)
总结:
任务是运行在容器Container当中的(自hadoop2.x后)
Yarn 工作机制
-
Mr程序运行到job.waitForCompletion时会创建一个YarnRunner
-
YarnRunner向ResourceManager申请一个应用(Application),然后准备提交job
-
ResourceManager说你可以提交job,把你的job放在我给你指定好的集群路径下
-
资源(job)提交完毕后,客户端会向ResourceManager申请运行MrAppmaster
-
ResourceManager会初始化请求为任务(Task),将任务放入调度队列中
-
如果此时刚好有一个NodeManager比较空闲,会把任务从队列中的领取走
-
该NodeManager会开辟一个容器Container,在Container中创建MrAppmaster
-
MrAppmaster创建完毕之后就会去集群中读取job,拿到切片信息,计算出要开启几个MapTask
-
MrAppmaster会向ResourceManager申请运行MapTask,ResourceManager会再次初始化请求为任务,将任务放入调度队列中
-
如果此时刚好有NodeManager比较空闲,会把任务从队列中的领取走,然后开辟容器,创建MapTask
-
MapTask运行完毕之后,会将数据按分区写入磁盘,等待Reduce端拉取数据
-
MrAppMaster会向ResourceManager再次申请容器,创建ReduceTask
-
ReduceTask会从自己指定分区中拉取数据,然后处理数据
-
ReduceTask运行完毕之后,MrAppMaster会向ResourceManager申请释放资源