`
jessezhang1981
  • 浏览: 41220 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

《权威指南》笔记七 MapReduce的类型和格式

阅读更多

作者:JesseZhang (CNZQS|JesseZhang

博客地址:http://www.cnzqs.com


要点:

1、MapReduce类型

1.1默认的MapReduce Job

2、输入格式

2.1输入分片与记录

2.2文本输入

2.3二进制输入

2.4多种输入

2.5数据库输入(和输出)

3、输出格式

3.1文本输出

3.2二进制输出

3.3多个输出

3.4延迟输出

3.5数据库输出

 

============================================

1、 MapReduce类型

Map和Reduce函数的常规格式:

map:(K1,V1) ——> list(K2,V2)

reduce:(K2,list(V2)) ——> list(K3,V3)

combine:(K2,list(V2)) ——> list(K2,V2)
partition:(K2,V2) ——> integer

 

类型分类:可以设置的属性和必须与类型相容的属性。其中可设置的属性,需要在程序中显式指定。

 

类型冲突是在作业执行过程中被检测出来的,所以比较明智的做法是先用少量的数据跑一次测试任务,发现并修正任何类型不兼容的问题。

1.1默认的MapReduce Job

 

0.20.2 后,相比之前,改变了如下内容:

1、Job替换JobConf,通过Configuration来代入。

 

可以在Job中设置MapperClass和ReduceClass,以及分区、任务数等属性。

 

选择reducer的个数:

1、              reducer最优个数与集群中可用的reducer任务槽数相关。

2、              总槽数=集群中节点数*每个节点的任务槽数。

3、              总槽数可以在mapred.tasktracker.reduce.tasks.maximun属性设置

常用方法:

  1. 设置比总槽数稍微少一些的reducer数,给任务留余地(容忍一些错误发生而不需要次延长作业运行时间)。
  2. 如果reduce任务很大,较好的做法是使用更多reducer,使任务粒度变小,这样任务的失败才不至于显著影响作业执行时间。

 

默认的Streaming作业

Hadoop streaming是Hadoop的一个工具, 它帮助用户创建和运行一类特殊的map/reduce作业, 这些特殊的map/reduce作业是由一些可执行文件或脚本文件充当mapper或者reducer。例如:

$HADOOP_HOME/bin/hadoop jar $HADOOP_HOME/hadoop-streaming.jar \

-input myInputDirs \

-output myOutputDir \

-mapper /bin/cat \

-reducer /bin/wc

注意:必须提供一个mapper。

可以通过一个可配置的分隔符来进行分割,也可以由多个字段组合(Maper和Reduce的分隔符配置是相对独立的,可以分别设置)。可以由一条记录的前n个字段组成(由stream.num.map.output.key.fields 或 stream.num.reduce.output.key.Fields进行定义),剩下的字段就是值。

 

2、 输入格式

2.1输入分片与记录

层次关系是:输入分片(split)与map对应,是每个map处理的唯一单位。每个分片包括多条记录,每个记录都有对应键值对。

输入切片的接口:InputSplit接口(在org.interface InputSplit extends Writable){

long getLength() throws IOException;

String[] getLocations() throws IOException;

}

 

一个分片并不包含数据本身,而是指向数据的引用。存储位置供MapReduce系统使用以便将map任务尽量放在分片数据附近,而长度用来排序分片,以便优化处理最大的分片,从而最小化作业运行时间。

InputSplit不需要开发人员直接处理,由InputFormat创建。

 

FileInputFormat类:静态方法:addInputPath addInputPaths

路径可以表示一个文件、一个目录或是一个glob,即一个文件和目录的集合。

表示目录的路径包含这个目录下的所有的文件(是否包括子目录?答案:不包括,如果包含子目录,会被当做文件,出现错误)

         过滤文件的方法:setInputPathFilter()

         不设置过滤器,则默认排除隐藏文件(名称中已”.”和“_”开头的文件)

FileInputFormat类的输入分片:

FileInputFormat只分割大文件(超过HDFS块大小)。分片通常与HDFS块大小一样,但可以通过属性设置:mapred.min.split.size  和 mapred.max.split.size 和 dfs.block.size

最小分片大小,通常是1个字节。

分片大小的计算公式:

Max(minimumSize,min(maximumSize,blockSize))

minimumSize < blockSize < maximumSize

 

通过CombineFileInputFormat来合并小文件,环节小文件过多影响执行速度的问题。

应该尽量避免小文件,因为MapReduce处理数据的最佳速度最好与数据在集群中的传输速度相同,小文件会增加寻址次数、浪费NameNode的内存。

 

使用CombineFileInputFormat的时候需要自己实现getRecordReader()方法。

 

避免切分

1、  把最小分片大小设置为最大

2、  使用FileInputFormat具体子类,并且重载isSplitable()方法,将返回值设置为false

 

继承CombineFileInputFormat而不是FileInputFormat。

 

         2.2文本输入

TextInputFormat:

键:LongWritable类型,存储该行在整个文件中的字节偏移量

值:这行的内容,不包括任何终止符(换行符和回车符)

 

输入分片和HDFS块之间可能不能很好的匹配,出现跨块的情况。

 

KeyValueTextInputFormat : 分界符 :key.value.separator.in.input.line

 

NLineInputFormat:与TextInputFormat一样,键是文件中行的字节偏移量,值是行本身。主要是希望mapper收到固定行数的输入。

XML:

1、  大多数XML文件不大,可以通过“把一个文件当成一条记录处理”的方式解决。

2、  StreamXmlRecordReader

 

         2.3二进制输入

SequenceFileInputFormat

SequenceFileAsTextInputFormat

SequenceFileAsBinaryInputFormat

 

2.4多种输入

1、MultipleInputs类处理多种格式的输入,允许为每个输入路径指定InputFormat和Mapper。

2、两个mapper的输出类型是一样的,所以reducer看到的是聚集后的map输出,并不知道输入是不同的mapper产生的。

3、重载版本:addInputPath(),没有mapper参数,主要支持多种输入格式只有一个mapper。

 

 

2.5数据库输入(和输出)       

DBInputFormat/DBOutPutFormat:

1、  使用JDBC

2、  适合加载小量的数据集,否则对数据库负担较重

 

在关系数据库和HDFS中移动数据的另一个办法是:使用Sqoop

 

3、 输出格式

         3.1文本输出

1、TextOutputFormat

2、默认分隔符制表符。可以设置:mapred.textoutputformat.separator

 

         3.2二进制输出

SequenceFileOutputFormat:输出为顺序文件,结构紧凑,易压缩

SequenceFileAsBinaryOutputFormat

SequenceFileOutputFormat

 

         3.3多个输出

默认输出文件名格式:part-00000

通过MultipleOutputFormat 和MultipleOutputs进行文件名控制和输出多个文件。

通过setOutputFormat指定。

 

MultipleOutputFormat:格式化输出

MultipleOutputs:可以为不同的输出产生不同的类型

 

3.4延迟输出

3.5数据库输出


-----------------------------------------
本文链接地址:http://www.cnzqs.com/?p=103
0
1
分享到:
评论

相关推荐

    MapReduce类型及格式

    MapReduce是一种编程模型,用于处理和生成大数据集,尤其适用于大规模数据集的分布式运算。...通过正确配置和编程,MapReduce模型能够高效地处理从简单的文本数据到复杂的结构化二进制数据等各种类型的数据。

    MapReduce 权威指南

    总结来说,《MapReduce 权威指南》旨在帮助读者理解并掌握MapReduce编程模型,通过实例教学如何在Hadoop上开发和优化MapReduce程序,解决大规模数据集的分析问题,是大数据处理领域的重要参考资料。

    05.hadoop上课笔记之hadoop5mapreduce和yarn

    Hadoop.MapReduce 和 YARN 笔记 本节笔记主要介绍了 Hadoop.MapReduce 和 YARN 的基本概念、组成部分、工作原理以及实践应用。 一、MapReduce 概念 MapReduce 是 Hadoop 的核心组件之一,负责处理大规模数据。...

    hadoop权威指南4和源码

    8. **版本更新**:《Hadoop权威指南4》相较于早期版本,可能包含了Hadoop的新特性和改进,例如YARN的引入、HDFS的优化、安全性的增强等。这些更新对于跟踪Hadoop的最新进展至关重要。 9. **最佳实践**:书中通常会...

    Hadoop权威指南 第二版(中文版)

    MapReduce的类型和格式;MapReduce的特性;如何构建Hadoop集群,如何管理Hadoop;Pig简介;Hbase简介;Hive简介;ZooKeeper简介;开源工具Sqoop,最后还提供了丰富的案例分析。  本书是Hadoop权威参考,程序员可...

    mapreduce笔记

    mapreduce笔记

    hadoop权威指南第三版 中文 pdf

    《Hadoop权威指南》第三版还关注了Hadoop的安全性、监控和优化,这对于大型企业部署和管理Hadoop集群至关重要。安全章节讨论了认证、授权和加密等话题,确保数据在传输和存储过程中的安全性。监控和优化部分则指导...

    高清中文PDf附带目录标签《Hadoop权威指南》

    《Hadoop权威指南》是一本深入探讨大数据处理和分布式计算技术的经典著作,尤其对Hadoop生态系统的核心组件进行了详尽的阐述。这本书对于理解Hadoop集群、MapReduce编程模型以及HBase分布式数据库有着极大的帮助。接...

    MapReduceV2笔记

    性能优化是MapReduce应用中的关键话题,它包括但不限于合理设置map和reduce任务的数量、优化数据序列化类型和格式、合理使用分区和分组机制以及压缩技术等。 实际案例分析是学习MapReduce时理解其应用和效果的最佳...

    Hadoop权威指南,hadoop权威指南pdf,Hadoop

    《Hadoop权威指南》是大数据领域的一本经典著作,它深入浅出地介绍了Apache Hadoop这一开源分布式计算框架。Hadoop是由Doug Cutting和Mike Cafarella共同创建,最初是为了支持Google的MapReduce计算模型和Google ...

    高清大放送 Hadoop权威指南第3版 和 第4版 PDF

    《Hadoop权威指南》是大数据领域的一本经典著作,它为读者深入理解并掌握Hadoop提供了全面而详尽的指导。书中的内容涵盖了Hadoop生态系统的各个重要组件,包括核心的Hadoop分布式文件系统(HDFS)和MapReduce计算...

    Hadoop权威指南中文版(完全版)

    《Hadoop权威指南》中文版是全面了解和深入学习Hadoop技术的重要参考资料,它涵盖了Hadoop生态系统中的核心组件以及相关的分布式计算概念。这本书详细解析了Hadoop的设计原理、架构、安装配置、操作维护以及实际应用...

    Hive权威指南

    《Hive权威指南》是一本深入探讨Hive技术的书籍,专为大数据处理和分析而设计。Hive是建立在Hadoop生态系统上的一个数据仓库工具,它允许通过SQL-like语言(HQL)对大规模分布式数据集进行查询和管理。这本书为读者...

    hadoop权威指南第四版高清 pdf下载

    《Hadoop权威指南》第四版是Hadoop领域的经典著作,由Tom White撰写,该书深入浅出地介绍了Hadoop生态系统的核心技术和应用场景。这本书对于想要理解、学习和掌握Hadoop技术的人来说,具有极高的参考价值。 Hadoop...

    Hadoop权威指南第四版和第二版

    总的来说,《Hadoop权威指南》第二版和第四版都是学习Hadoop及其生态系统的重要参考资料。第二版适合初学者入门,了解Hadoop的基础概念和基本操作;而第四版则更深入地探讨了Hadoop的演进和新的技术趋势,对有经验的...

    Hadoop权威指南(第4版)(修订版) 中英文PDF(含源码)

    在《Hadoop权威指南(第四版)》中文PDF中,读者可以了解到关于Hadoop的基础知识,如HDFS的架构、数据块的管理、NameNode和DataNode的角色以及如何进行数据读写操作。此外,书中还会详细解析MapReduce的工作原理,...

Global site tag (gtag.js) - Google Analytics