Hadoop基础知识:HDFS、Yarn和MapReduce的知识总结
2023-12-31 12:28:17
- HDFS:可靠分布式文件系统
1.1 NameNode、Secondary NameNode和DataNode
Hadoop分布式文件系统(HDFS)的核心组件包括NameNode、Secondary NameNode和DataNode。NameNode是HDFS的中央管理节点,负责管理文件系统元数据,包括文件和目录的存储位置。Secondary NameNode是NameNode的热备份,定期从NameNode获取元数据快照,以防NameNode发生故障。DataNode是HDFS的数据存储节点,负责存储文件数据。
1.2 HDFS存储机制
HDFS使用块(Block)作为存储的基本单位,默认块大小为128MB。每个文件被分成多个块,存储在不同的DataNode上。为了保证数据可靠性,HDFS采用副本机制,即每个块都会存储在多个DataNode上。副本的数量可以通过HDFS配置参数进行设置,默认值为3。
1.3 数据倾斜
数据倾斜是指MapReduce作业中,某些任务处理的数据量远大于其他任务,导致作业执行时间延长。数据倾斜通常是由数据分布不均匀引起的,例如,当输入数据中某些键出现的频率远高于其他键时,就会发生数据倾斜。为了解决数据倾斜问题,可以使用多种方法,例如,使用分区器对输入数据进行均匀分布,使用自定义Partitioner将数据均匀分配给不同的Reducer,或者使用Combiner函数对中间结果进行预聚合。
2. Yarn:资源管理系统
2.1 Yarn工作机制
Yarn是Hadoop的资源管理系统,负责管理Hadoop集群的资源,包括计算资源和内存资源。Yarn将Hadoop作业分为两个阶段:Map阶段和Reduce阶段。Map阶段由多个Map任务组成,每个Map任务负责处理输入数据的一部分。Reduce阶段由多个Reduce任务组成,每个Reduce任务负责聚合Map任务的输出结果。Yarn通过ResourceManager和NodeManager来协调和管理Map任务和Reduce任务的执行。ResourceManager是Yarn的中央管理节点,负责调度作业和分配资源。NodeManager是Yarn的从节点,负责执行作业和监控资源使用情况。
2.2 ApplicationMaster和Container
ApplicationMaster是Hadoop作业的协调器,负责将作业划分为多个任务,并向ResourceManager申请资源。Container是Yarn的资源分配单位,每个Container包含一定数量的CPU、内存和其他资源。ApplicationMaster向ResourceManager申请Container,并将其分配给各个任务。任务在Container中执行,并由NodeManager监控。
3. MapReduce:分布式计算框架
3.1 MapReduce流程
MapReduce是一种分布式计算框架,用于处理大规模数据集。MapReduce作业分为两个阶段:Map阶段和Reduce阶段。Map阶段由多个Map任务组成,每个Map任务负责处理输入数据的一部分。Map任务将输入数据映射为一系列键值对。Reduce阶段由多个Reduce任务组成,每个Reduce任务负责聚合Map任务的输出结果。Reduce任务将键值对分组,并对每个组中的值进行聚合运算。
3.2 数据本地性
数据本地性是指Map任务和Reduce任务尽量在存储数据的DataNode上执行。这样可以减少数据传输量,提高作业执行速度。Yarn通过数据本地性调度算法来提高数据本地性。
3.3 故障处理和高可用性
Hadoop提供了多种机制来处理故障和提高高可用性,包括:
- NameNode高可用性: 可以使用双NameNode或ZooKeeper来实现NameNode的高可用性。
- DataNode故障处理: 当DataNode发生故障时,HDFS会自动将副本数据迁移到其他DataNode上。
- TaskTracker故障处理: 当TaskTracker发生故障时,Yarn会自动将任务重新分配给其他TaskTracker。
4. 总结
本文全面介绍了Hadoop的基本知识,包括HDFS、Yarn和MapReduce三个模块。希望通过本文,读者能够对Hadoop有一个全面的认识,并为进一步学习和应用Hadoop打下坚实的基础。