版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/fengzy1990/article/details/72782952
HADOOP类
(1) InputFormat:将输入的数据分割成split,并将split拆分成<k,v>作为map输入。Job.setInputFormatClass()设置,TextInputFormat将文本按行分割成split,LineRecorderReader将每行解析为<k,v>
(2) Mapper:实现map函数,将输入的<k,v>生成中间结果,通过job.setMapperClass()设置。
(3) Combiner:实现combine函数,合并中间具有相同key的键值对,通过job.setCombinerClass()设置。
(4) Partitioner:实现getPartition函数,用于在Shuffle过程中按照key将中间数据分为R份,每份由一个Reducer负责。通过job.setPartitionerClass()设置, 默认使用HashPartitioner类,使用哈希完成Shuffle过程。
(5) Reducer:实现reduce函数,将中间结果合并,得到最终结果。通过job.setReduceClass()设置。
(6) OutputFormat:负责输出最终结果。通过job.setOutputFormatClass()设置,默认使用TextOutputFormat将最终结果以文本输出。
Hadoop有四大核心模块:
Common 常用工具类报 HDFS 数据存储
YARN作业调度+资源管理平台 MAPReduce 数据处理
HDFS 核心组件
Namenode 管理文件系统的命名空间,维护文件系统树,保存着所有文件信息
这些信息通过fsimage和edits文件被持久到磁盘中。
Datanode文件系统中真正存储数据的地方 接口客户端或元数据信息(namenode)写入或者读取数据块请求
Secondarynamenode:不是namenode节点,是namenode出现问题的备用节点
其负责定期合并namenode产生的fsimage和edits文件,防止日志文件过大。
通常不和namenode在一个节点上,合并操作占用CPUD大量时间,会影响namenode正常工作。
备注:Hadoop下载节点http://mirror.bit.edu.cn/apache/hadoop/common/
NameNode是HDFS的守护程序,负责记录文件是如何分割成数据块,以及这些数据块分别存在哪些数据节点上。主要对内存及I/O进行管理。由于其在集群中一个单点,如果NameNode宕机,整个系统无法运行。
DataNode集群中每个从服务器都有一个DataNode后台程序,负责吧HDFS数据块读写到本地文件系统。读写时,先由NameNode告诉去哪个DataNode进行具体读写
Secondary NameNode用来监控HDFS状态的辅助后台程序。每个集群中只有一个。定期保存NameNode的快照,可将NameNode的宕机损失降到最低,同时作为备用NN使用。
Yarn源于MapReduce框架不足,将原有的JobTracker主要的资源管理和job调度/监控分成两个单独守护进程ResourceManager和每个Application有一个ApplicationMaster。RM和NM组成了基本的数据计算框架。RM协调集群的资源利用,需要向其申请资源。NM主要负责启动RM分配给AM的container,并监视器运行情况。