1.客户端提交任务请求到ResourceManager。
2.ResourceManager生成一个ApplicationManager进程,用于任务的管理。
3.ApplicationManager创建一个Container容器用于存放任务所需要的资源。
4.ApplicationManager寻找其中一个NodeManager,在此NodeManager中启动一个ApplicationMaster,用于任务的管理以及监控。
5.ApplicationMaster向ResourceManager进行注册,并计算任务所需的资源汇报给ResourceManager(CPU与内存)
6.ResourceManager为此任务分配资源,资源封装在Container容器中。
7.ApplicationMaster通知集群中相关的NodeManager进行任务的执行。
8.各个NodeManager从Container容器中获取资源并执行Map、Reduce任务。
2.3 MapReduce
MapReduce是分布式离线并行计算框架,高吞吐量,高延时,原理是将分析的数据拆分成多份,通过多台节点并行处理,相对于Storm、Spark任务计算框架而言,MapReduce是最早出现的计算框架。
MapReduce、Storm、Spark任务计算框架对比:
MapReduce执行流程
MapReduce将程序划分为Map任务以及Reduce任务两部分。
Map任务处理流程
1.读取文件中的内容,解析成Key-Value的形式 (Key为偏移量,Value为每行的数据)
2.重写map方法,编写业务逻辑,生成新的Key和Value。
3.对输出的Key、Value进行分区(Partitioner类)
4.对数据按照Key进行排序、分组,相同key的value放到一个集合中(数据汇总)
*处理的文件必须要在HDFS中。
Reduce任务处理流程
1.对多个Map任务的输出,按照不同的分区,通过网络复制到不同的reduce节点。
2.对多个Map任务的输出进行合并、排序。
3.将reduce的输出保存到文件,存放在HDFS中。
3.Hadoop的使用
3.1 安装
由于Hadoop使用Java语言进行编写,因此需要安装JDK。
从CDH中下载Hadoop 2.X并进行解压。
etc目录:Hadoop配置文件存放目录。
logs目录:Hadoop日志存放目录。
bin目录、sbin目录:Hadoop可执行命令存放目录。
etc目录
bin目录
sbin目录
3.2 Hadoop配置
1.配置环境
编辑etc/hadoop/hadoop-env.sh文件,修改JAVA_HOME配置项为本地JAVA的HOME目录,此文件是Hadoop启动时加载的环境变量。