HDFS,YARN,MapReduce三者之间的关系
HDFS:DataNode存储数据,NameNode负责告诉别人数据存储在哪个节点,哪些信息,2NN,备份NameNode.
YARN:整个集群资源的管理。
MapReduce:
(1)分布式的运算程序往往需要分成至少 2 个阶段。
(2)第一个阶段的 MapTask 并发实例,完全并行运行,互不相干。
(3)第二个阶段的 ReduceTask 并发实例互不相干,但是他们的数据依赖于上一个阶段的所有MapTask 并发实例的输出。
(4)MapReduce 编程模型只能包含一个 Map 阶段和一个 Reduce 阶段,如果用户的业务逻辑非常复杂,那就只能多个 MapReduce 程序,串行运行。
大致过程:
1、有一个client(可以代码调用,一些页面访问入口等),向集群提交一个任务,比如查询某某文件。
2、client提交完任务之后,YARN中的ResourceManger找一个节点,开启一个Container,然后把任务放到Container中,任务叫App Mstr,App Mstr向ResourceManger申请,任务开启所需资源。ResourceManger寻找哪些节点有资源,App Mstr开启Map Task,相当于Map阶段。每一个Map Task独立运行,最终把结果汇总写入磁盘HDFS上。