返回

Hadoop 学习(五)——MapReduce 概述、Hadoop序列化

后端

  1. 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作业的执行流程如下:

  1. 客户端提交作业到JobTracker。
  2. JobTracker将作业拆分成多个任务,并分配给TaskTracker。
  3. TaskTracker启动Map任务和Reduce任务,并监控任务的执行情况。
  4. Map任务将输入数据拆分成多个小块,然后将每个小块映射成一系列键值对。
  5. Reduce任务将Map任务生成的键值对进行分组,然后对每个组中的值进行聚合操作。
  6. Reduce任务将聚合结果输出到HDFS。
  7. 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技术内幕》