Hadoop学习笔记(八)MapReduce深入分析
来源:互联网 发布:怎么封游戏端口 编辑:程序博客网 时间:2024/05/17 12:04
MapReduce深入分析
Hadoop中MapReduce提供的主要是离线端的数据分析。根据其原理,可以将其分为两个阶段
1. Map
2. Reduce阶段
Hadoop在MapReduce设计方面主要有两个重要思想:
- 化整为零,分而治之。
- 数据加工终端化。数据在终端加工要比数据传输后再加工节省资源。
输入输出分析
InputFormat
InputSplit是Hadoop定义的用以 传送每个单独的map的数据,InputSplit存储一个分片长度和一个记录数据位置的数组。当数据传送给map时,map 将分片信息传送到InputFormat。InputFormat.RecordReader( )生成RecordReader,RecorderReader.createKey( ).createValue( )生成map可以处理的< k, v >。
InputFormat子类主要有
- BaileyBorweinPlouffe.BbpinputFormat
- ComposableInputFormat
- CompositeInputFormat
- DBInputFormat
- DisSum.Macine.AbstractInputFormat
- FileInputFormat *
其中FileInputFormat是Hadoop默认的输入方式,其子类包括
- CombineFileInputFormat
- KeyValueTextInputFormat
- NLineInputFormat
- SequenceFileInputFormat
- TeraInputFormat
- TextInputFormat
TextInputFormat以及其子类数据记录格式为
OutputFormat
OutputFormat类似于InputFormat,默认为TextOutputFormat,
输出格式为
Mapper 工作方式
Mapper通常用来处理输入格式转化、投影、过滤等。例如在Hadoop-examples.wordcount,Mapper将输入分割之后的TextInputFormat进行本地化的数据清洗和加工。
MapReduce优化
- 任务调度。将任务优先分配给空闲的机器,将map任务分配给InputSplit所在的机器,减少I/O消耗。
- 数据处理和InputSplit。MapReduce擅长处理少量的大数据,处理大量小数据时会消耗较多时间。因此可以在MapReduce任务前对数据进行整合,从而提升MapReduce执行效率。Map任务通常来说,最佳运行时间在1min左右比较合适。可以通过设置Map输入数据的大小调解Map运行时间。FileInputFormat会处理每个block后将其作为一个InputSplit。合理调解block块大小也可以提升执行效率。合理设置Map任务数量也可以提升性能。
- Map和Reduce任务数量。Map/Reduce任务槽是这个集群能同时运行Map/Reduce任务的最大数量。如:一个1200机器集群,每台机器最多同时运行10个map任务,5个reduce任务,这个集群map任务槽为1200,Recue任务槽为600。可以通过设置Reduce任务数量均衡负载,Reduce任务数量提高,资源利用率提高;Reduce任务数量降低,任务响应效率提高。
- combine。MapReduce处理后的文件输出在本地。*combine可以在本地将中间数据*合并,可以极大降低网络I/O消耗。
job.setCombinerClass(combine.class)
- 压缩。计算机处理能力>网络传输效率。可以有效减少网络上数据传输量。
- 自定义Comparator.可以二进制比较,省区数据序列化和反序列化时间。
MapReduce一般用于处理一些较为简单的数据,若处理过程复杂,有必要考虑Pig,Hive或Cascading。
- Hadoop学习笔记(八)MapReduce深入分析
- Hadoop学习笔记---MapReduce
- Hadoop学习笔记---MapReduce
- Hadoop学习笔记---MapReduce
- Hadoop MapReduce学习笔记
- Hadoop学习笔记(五)MapReduce
- Hadoop学习笔记之初识MapReduce以及WordCount实例分析
- hadoop学习笔记 MapReduce + HDFS
- Hadoop 学习笔记三 MapReduce
- Hadoop学习笔记之MapReduce
- hadoop学习之MapReduce笔记
- hadoop 学习笔记 二 ----MapReduce
- hadoop mapreduce 学习(-)
- hadoop源码分析(MapReduce)
- hadoop菜鸟学习笔记--MapReduce笔记
- hadoop学习笔记六 --- mapreduce原理笔记
- Hadoop学习笔记:MapReduce原理简单学习
- hadoop学习笔记(三)mapreduce程序wordcount
- 在JavaScript中创建新对象
- UFT原理
- 〓OpenCV〓 开发环境搭建
- 关于绝对路径和相对路径
- python list的一些用法总结
- Hadoop学习笔记(八)MapReduce深入分析
- Android Toolbar
- 父jsp弹出另一个jsp时用form提交并刷新父jsp
- POJ 2112 Optimal Milking 最大流 + 二分 + floyd
- 接触UI
- UE4 COLLISION FILTERING
- Several ports (8005, 8080, 8009) required by Tomcat v7.0 Server at localhost解决方法
- Java collection框架介绍和使用
- C++11简介