Hadoop 学习(五)——MapReduce 概述、Hadoop序列化
2023-12-25 00:14:48
- MapReduce概述
MapReduce是一种分布式计算框架,用于并行处理大量数据。它由Google于2004年提出,并于2006年发布开源版本。MapReduce框架基于分而治之的思想,将大数据集拆分成多个小数据集,并在不同的计算节点上并行处理,最后将结果汇总起来。
1.1 MapReduce基本概念
1.1.1 作业
MapReduce作业是MapReduce框架处理的一个独立计算单元。一个作业可以包含多个Map任务和多个Reduce任务。
1.1.2 Map任务
Map任务是MapReduce作业中的第一个阶段。它负责将输入数据拆分成多个小块,然后将每个小块映射成一系列键值对。
1.1.3 Reduce任务
Reduce任务是MapReduce作业的第二个阶段。它负责将Map任务生成的键值对进行分组,然后对每个组中的值进行聚合操作。
1.1.4 分区
分区是将数据拆分成多个小块的过程。分区器决定了每个Map任务处理的数据块。
1.1.5 排序
排序是将键值对按照键进行排序的过程。排序器决定了Reduce任务处理的键值对的顺序。
1.2 MapReduce作业执行流程
MapReduce作业的执行流程如下:
- 客户端提交作业到JobTracker。
- JobTracker将作业拆分成多个任务,并分配给TaskTracker。
- TaskTracker启动Map任务和Reduce任务,并监控任务的执行情况。
- Map任务将输入数据拆分成多个小块,然后将每个小块映射成一系列键值对。
- Reduce任务将Map任务生成的键值对进行分组,然后对每个组中的值进行聚合操作。
- Reduce任务将聚合结果输出到HDFS。
- JobTracker监控作业的执行情况,并在作业完成后通知客户端。
2. Hadoop序列化
Hadoop序列化是一种将对象转换成字节数组的过程,以便在网络上传输或存储在HDFS中。Hadoop反序列化是一种将字节数组还原成对象的过程。
2.1 Hadoop对象序列化
Hadoop对象序列化有两种方式:
2.1.1 Java序列化
Java序列化是使用Java的内置序列化机制将对象转换成字节数组。Java序列化机制是基于对象的类信息将对象转换成字节数组的,因此反序列化时需要相同的类信息才能将字节数组还原成对象。
2.1.2 Hadoop自定义序列化
Hadoop自定义序列化是使用Hadoop提供的序列化机制将对象转换成字节数组。Hadoop自定义序列化机制可以自定义序列化和反序列化的过程,因此更加灵活。
2.2 Hadoop对象反序列化
Hadoop对象反序列化有两种方式:
2.2.1 Java反序列化
Java反序列化是使用Java的内置反序列化机制将字节数组还原成对象。Java反序列化机制是基于对象的类信息将字节数组还原成对象的,因此反序列化时需要相同的类信息才能将字节数组还原成对象。
2.2.2 Hadoop自定义反序列化
Hadoop自定义反序列化是使用Hadoop提供的反序列化机制将字节数组还原成对象。Hadoop自定义反序列化机制可以自定义序列化和反序列化的过程,因此更加灵活。
3. Hadoop学习资源
以下是一些Hadoop学习资源:
- 《Hadoop权威指南》
- 《Hadoop实战》
- 《Hadoop基础教程》
- 《Hadoop生态系统》
- 《Hadoop技术内幕》