MapReduce运行模式
一、MapReduce运行模式
1、本地运行模式
- 在当前的开发环境模拟MapReduce执行环境,处理的数据及输出结果在本地操作系统。
2、集群运行模式
- 把MapReduce程序打成一个Jar包,提交至Yarn集群上去运行任务。由于Yarn集群负责资源管理和任务调度,程序会被框架分发到集群中的节点上并发的执行,因此处理的数据和输出结果都在HDFS文件系统中。
- 将5.1节点的词频统计项目MRWordCount打成jar包,上传到YARN集群上运行任务
二、MapReduce性能优化策略
使用Hadoop进行大数据运算,当数据量极其大时,那么对MapReduce性能的调优重要性不言而喻,尤其是Shuffle过程中的参数配置对作业的总执行时间影响特别大,我们可以从五个方面对MapReduce程序进行性能调优,分别是数据输入、Map阶段、Reduce阶段、Shuffle阶段和其他调优属性方面。
1、数据输入
- 在执行MapReduce任务前,将小文件进行合并,大量小文件会产生大量的map任务,增大map任务装载次数,而任务装载较耗时,从而导致MapReduce运行速度较慢。因此采用CombineTextInputFormat来作为输入,解决输入端大量的小文件场景。
2、Map阶段
- 减少溢写(spill)次数
- 减少合并(merge)次数
- 在map之后,不影响业务逻辑前提下,先进行combine处理,减少 I/O
3、Reduce阶段
- 合理设置map和reduce数
- 设置map、reduce共存
- 规避使用reduce
- 合理设置reduce端的buffer
4、Shuffle阶段
- Shuffle阶段的调优就是给Shuffle过程尽量多地提供内存空间,以防止出现内存溢出现象,可以由参数mapred.child.java.opts来设置,任务节点上的内存大小应尽量大。
5、其它调优属性
- MapReduce还有一些基本的资源属性的配置,这些配置的相关参数都位于mapred-default.xml文件中,我们可以合理配置这些属性提高MapReduce性能,例如合理设置MapTask、ReduceTask等参数。