文章作者邮箱:yugongshiye@sina.cn 地址:广东惠州
▲ 本章节目的
⚪ 了解MapReduce的作用和特点;
⚪ 掌握MapReduce的组件;
⚪ 掌握MapReduce的Shuffle;
⚪ 掌握MapReduce的小文件问题;
⚪ 掌握MapReduce的压缩机制;
⚪ 掌握MapReduce的推测执行机制;
⚪ 掌握MapReduce的数据倾斜问题;
一、简介
1. 概述
1. MapReduce是Hadoop提供的一套进行分布式计算机制。
2. MapReduce是Doug Cutting根据Google的论文<The Google MapReduce>来仿照实现的。
3. MapReduce会将整个计算过程拆分为2个阶段:Map阶段和Reduce阶段。在Map阶段,用户需要考虑对数据进行规整和映射;在Reduce阶段,用户需要考虑对数据进行最后的规约。
2. 特点
1. 优点
a. 易于编程:MapReduce提供了相对简单的编程模型。这就保证MapReduce相对易于学习。用户在使用的时候,只需要实现一些接口或者去继承一些类,覆盖需要实现的逻辑,即可实现分布式计算。
b. 具有良好的可扩展性:如果当前集群的性能不够,那么MapReduce能够轻易的通过增加节点数量的方式来提高集群性能。
c. 高容错性:当某一个节点产生故障的时候,MapReduce会自动的将这个节点上的计算任务进行转移而整个过程不需要用户手动参与。
d. 适合于大量数据的计算,尤其是PB级别以上的数据,因此MapReduce更适合于离线计算。
2. 缺点
a. 不适合于实时处理:MapReduce要求处理的数据是静态的,实时的特点在于数据池是动态的。
b. 不擅长流式计算:MapReduce的运行效率相对较低,在处理流式计算的时候,效率更低。
c. 不擅长DAG(有向图)运算:如果希望把上一个MapReduce的运行结果作为下一个MapReduce的输入数据,那么需要手动使用工作流进行调度,而MapReduce本身并没有这种调度功能。
3. 入门案例
1. 案例:统计文件中每一个字符出现的次数(文件:characters.txt)。
2. Hadoop对Windows系统的兼容性不强,所以在Windows中运行Hadoop程序的时候需要添加一些其他的配置 - 配置之后,需要双击winutils.exe,如果出现一个黑色窗口一闪而过,那么没有任何问题;如果双击winutils.exe之后报错,那么将jar目录下的msvcr120.dll文件放到C:\\Windows\\System32目录下,然后再次双击winutils.exe工具,查看是否报错。
3. 配置环境变量:
a. 新建HADOOP_HOME。
b. 修改Path。
c. 新建HADOOP_USER_NAME。
4. 如果运行程序的时候,出现了null/bin/winutils.exe错误,那么解决方案:
a. 先检查环境变量是否配置正确。
b. 如果环境变量配置正确,但是运行程序依然报错,那么可以在Driver类中添加代码:System.setProperty("hadoop.home.dir", "Hadoop的解压路