`

Hadoop中MapReduce的一些关键词理解

 
阅读更多

 

 Map-Reduce几个输入格式的理解:

1 当执行hadoop任务的时候FileInputFormat会得到一个文件夹的路径(需要分析的文件在这个路径中,hadoop默认不会读取子目录)

2 把这些文件进行分片(input split),分片的个数决定Map执行对象的个数,Map越多消耗资源越多

(文件越大,速度越快原因:hdfs有个默认的块大小,一个文件小于默认值,则分为一片如果,文件大小大于默认值,根据块大小进行分块)

3 setInputFormat 设定输入文件内容的分隔格式。

4 几种文件内容格式分隔

 

输入格式

描述

TextInputFormat

默认格式,读取文件的行

行的字节偏移量

行的内容

KeyValueInputFormat

把行解析为键值对

第一个tab字符前的所有字符

行剩下的内容

SequenceFileInputFormat

Hadoop定义的高性能二进制格式

用户自定义

用户自定义

SequenceFileAsTextInputFormat

是SequenceFileInputFormat的变体,它将键和值转换为Text对象。转换的时候会调用键和值的toString方法。这个格式可以是顺序文件作为流操作的输入。

   

SequenceFileAsBinaryInputFormat

SequenceFileAsBinaryInputFormat是SequenceFileInputFormat的另一种变体,它将顺序文件的键和值作为二进制对象,它们被封装为BytesWritable对象,因而应用程序可以任意地将这些字节数组解释为他们想要的类型。

   

DBInputForma

DBInputForma是一个使用JDBC并且从关系数据库中读取数据的一种输入格式。由于它没有任何碎片技术,所以在访问数据库的时候必须非常小心,太多的mapper可能会事数据库受不了。因此DBInputFormat最好在加载小量数据集的时候用。
<!--[if !supportLineBreakNewLine]-->
<!--[endif]-->

   

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

二 、几个关键字的理解

 1 输入块(inputSplit): 即2中提到的分片 ,它决定了执行速度

 2 记录读取器(RecordReader):定义了如何加载数据,并把数据转换为Mapper能够使用的key/value值,它会根据FileInputFormat将数据进行分隔然后传到Map中

 3 Mapper :每个Mapper实例在单独的进程中执行并初始化,不同map之间不能通信,使得mapper不受其他maper任务影响。

 4 combiner :将相同的key进行合并,value整合成集合,传送给reduce 

 5 partition& shuffle 

   shuffle: 将map数据输出到reduce的过程

    partition:是reduce的输入分片,相同的key包含一个集合的值,这个key和value在什么位置是有这个决定的,默认的分类器是基于哈希的

 6 排序和规约(还不知道具体作用)

 7 输出:

  part-nnnnn,nnnnn是关联到某个reduce任务的partition的id 

输出格式

描述

TextOutputFormat

默认的输出格式, 以 "key \t value" 的方式输出行

SequenceFileOutputFormat

输出二进制文件,适合于读取为子MapReduce作业的输入

NullOutputFormat

忽略收到的数据,即不做输出 

SequenceFileAsBinaryOutputFormat

与SequenceFileAsBinaryInputFormat相对应,它将键/值对当作二进制数据写入一个顺序文件

MapFileOutputFormat

MapFileOutputFormat将结果写入一个MapFile中。MapFile中的键必须是排序的,所以在reducer中必须保证输出的键有序。

 

  7 Hadoop提供了一些OutputFormat实例用于写入文件,基本的(默认的)实例是TextOutputFormat,它会以一行一个键值对的方式把数据写入一个文本文件里。这样后面的MapReduce任务就可以通过KeyValueInputFormat类简单的重新读取所需的输入数据了,而且也适合于人的阅读。还有一个更适合于在MapReduce作业间使用的中间格式,那就是SequenceFileOutputFormat,它可以快速的序列化任意的数据类型到文件中,而对应SequenceFileInputFormat则会把文件反序列化为相同的类型并提交为下一个Mapper的输入数据,方式和前一个Reducer的生成方式一样。NullOutputFormat不会生成输出文件并丢弃任何通过OutputCollector传递给它的键值对,如果你在要reduce()方法中显式的写你自己的输出文件并且不想Hadoop框架输出额外的空输出文件,那这个类是很有用的。

  RecordWriter:这个跟InputFormat中通过RecordReader读取单个记录的实现很相似,OutputFormat类是RecordWriter对象的工厂方法,用来把单个的记录写到文件中,就像是OuputFormat直接写入的一样。

  Reducer输出的文件会留在HDFS上供你的其它应用使用,比如另外一个MapReduce作业,或一个给人工检查的单独程序。

 

 

 

 

 

分享到:
评论

相关推荐

    Python中Hadoop MapReduce的一个简单示例.zip

    这个名为"Python中Hadoop MapReduce的一个简单示例.zip"的压缩包,显然是为了帮助用户理解如何在Python环境下利用Hadoop MapReduce框架进行数据处理。我们将详细探讨MapReduce的基本概念、工作原理以及Python在...

    Hadoop技术MapReduce工作原理共9页.pdf

    MapReduce是Apache Hadoop框架的核心组件之一,用于处理和生成大数据集。这个技术的主要目标是分布式计算,将大型数据集...通过理解MapReduce的工作原理和核心概念,我们可以更有效地利用Hadoop框架解决大数据问题。

    hadoop 框架下 mapreduce源码例子 wordcount

    在这个例子中,我们将深入理解Hadoop MapReduce的工作原理以及如何在Eclipse环境下实现WordCount源码。 1. **Hadoop MapReduce概述**: Hadoop MapReduce是由两个主要部分组成的:Map阶段和Reduce阶段。Map阶段将...

    HadoopMapReduce:数据集链接的Hadoop MapReduce实践问题

    标题中的“Hadoop MapReduce:数据集链接的Hadoop MapReduce实践问题”表明我们将探讨如何在Hadoop MapReduce框架中处理数据集之间的连接操作。在大数据处理领域,数据集链接是常见的任务,例如用于合并来自不同来源...

    基于Hadoop分布式平台的Web文本关键词提取方案.pdf

    关键词提取是信息检索与数据分析中的一个基础且重要的环节,尤其在处理大量网络文本数据时,准确快速地提取关键词对于快速获取信息内容至关重要。随着互联网的发展,Web文档数据日益庞大,传统的关键词提取方法难以...

    基于Hadoop MapReduce的电商网站商品数据分析.rar

    在大数据处理领域,Hadoop MapReduce是一个至关重要的技术框架,尤其在电商网站的商品数据分析中扮演着核心角色。MapReduce的设计理念是将大规模数据处理任务分解为两个主要阶段:Map(映射)和Reduce(化简),以此...

    Hadoop MapReduce Cookbook

    ### Hadoop MapReduce Cookbook知识点概览 #### 一、Hadoop MapReduce简介 ...通过对本书的学习,读者不仅可以掌握Hadoop MapReduce的基本操作,还能学会如何解决实际工作中遇到的各种复杂问题。

    基于Hadoop MapReduce的招聘信息数据分析项目代码+数据集.rar

    在这个基于Hadoop MapReduce的招聘信息数据分析项目中,我们聚焦于利用大数据处理技术对海量的招聘信息进行深入挖掘,以获取有价值的职业市场洞察。Hadoop MapReduce是Apache Hadoop框架中的核心组件,它允许开发者...

    基于hadoop的简单网络爬虫,HBase MapReduce.zip

    这个项目的核心是利用Hadoop的分布式计算框架MapReduce来抓取和处理互联网上的数据,然后将结果存储到HBase这种适合大规模数据存储的NoSQL数据库中。 【描述】"基于hadoop的简单网络爬虫,HBase MapReduce"意味着...

    hadoop mapreduce 基于内容的推荐算法.zip

    总的来说,这个压缩包提供了在Hadoop环境下使用MapReduce实现基于内容的推荐算法的实例,这对于理解如何在分布式系统中处理大规模推荐问题非常有帮助。通过深入研究这个项目,我们可以学习到如何利用Hadoop的并行...

    mapreduce程序

    在Hadoop中,MapReduce框架提供了一整套的生态系统,包括JobTracker(在Hadoop 2.x中被YARN取代)来调度和监控任务,TaskTracker(在Hadoop 2.x中被NodeManager取代)执行实际的Map和Reduce任务,以及DataNode存储...

    Hadoop大数据平台构建、测试Job教学课件.pptx

    在这个例子中,我们输入了一些与大数据相关的关键词,如hadoop、mapreduce等,并保存了文件。通过`more wc.input`命令,我们可以确认文件内容是否正确。 接下来,我们需要将这个输入文件上传到Hadoop分布式文件系统...

    基于HADOOP的倒排索引实现

    在这个完整的实验中,我们首先会理解MapReduce的工作原理,接着编写相应的Java代码,实现倒排索引的构建过程。实验数据将用于验证我们的实现,并展示其在大数据量下的性能。 【标签】HADOOP:Hadoop是一个分布式...

    hadoop权威指南中文版

    总结来说,《Hadoop权威指南中文版》是一本全面介绍Hadoop生态系统及相关技术的书籍,它不仅包括了Hadoop的核心技术HDFS、MapReduce,还涵盖了Hive、HBase等数据库技术,以及在云计算环境中的应用。书中内容对Java...

    hadoop分布式网络爬虫

    总之,Hadoop分布式网络爬虫是大数据时代的一种高效数据获取工具,它通过MapReduce模型和Java编程,实现了对互联网的深度搜索,能够在海量网页中快速找到所需信息。CrawlerDriver-master这个项目可能包含了一个完整...

    人工智能-项目实践-搜索引擎-hadoop搭建搜索引擎

    例如,我们可以使用开源的分词工具,如jieba分词库,集成到Hadoop MapReduce作业中。 接下来是建立索引。索引是搜索引擎的核心,它将处理后的关键词映射到原始文档的位置,以便于快速查找。在Hadoop上,我们可以...

    hadoop视频

    在IT领域,Hadoop无疑是一个重要的关键词,尤其是在大数据处理与分析方面。Hadoop是一个开源的分布式计算框架,它能够高效地处理和存储大量的数据。通过Hadoop,企业可以利用集群中的多台计算机来并行处理大规模的...

    Hadoop倒排索引程序

    Hadoop基于MapReduce编程模型,将大任务分解为多个小任务并行执行,非常适合处理分布式环境中的大数据。在这个程序中,Map阶段负责读取输入文档,对每个文档的每个单词进行切分,并生成&lt;单词, 文档ID&gt;键值对;Reduce...

Global site tag (gtag.js) - Google Analytics