Hadoop mapreduce对外提供了5个可编程组件,分别是InputFormat,Mapper,Partitioner,Reducer,OutputFormat
mapreduce能解决的问题有一个共同特点:任务可被分解成多个子问题,且这些子问题相对独立,彼此不会相互牵制。
分治的思想。
task分为maptask和reducetask。hdfs以固定大小的block为基本的存储单元,...
分类:
其他好文 时间:
2016-07-05 10:22:09
阅读次数:
189
默认情况下,Map输出的结果会对Key进行默认的排序,但是有时候需要对Key排序的同时还需要对Value进行排序,这时候就要用到二次排序了。下面我们来说说二次排序
1、二次排序原理
我们把二次排序分为以下几个阶段
Map起始阶段
在Map阶段,使用job.setInputFormatClass()定义的InputFormat,将输入的数据集分割成小数据块split,同时I...
分类:
编程语言 时间:
2016-06-08 01:46:26
阅读次数:
559
数据输入格式(InputFormat) 用于描述MapReduce作业的数据输入规范。MapReduce框架依靠数据输入格式完成输入规范检查(比如输入文件目录的检查)、对数据文件进行输入分块(也叫分片,InputSplit),以及提供从输入分块(分片)中将数据记录逐一读出,并转化为Map过程的输入键值对等功能
Hadoop提供了丰富的内置数据输入格式。最常用的数据输入格式包括:TextInputFormat和KeyValueInputFormat
TextInputFormat是系统默认的数据输入格式,可...
分类:
其他好文 时间:
2016-05-04 12:03:48
阅读次数:
537
文件是 MapReduce 任务数据的初始存储地。正常情况下,输入文件一般是存储在 HDFS 里面。这些文件的格式可以是任意的:我们可以使用基于行的日志文件, 也可以使用二进制格式,多行输入记录或者其它一些格式。这些文件一般会很大,达到数十GB,甚至更大。那么 MapReduce 是如何读取这些数据的呢?下面我们来学习 InputFormat 接口
1、InputFormat接口
In...
分类:
其他好文 时间:
2016-04-29 19:42:43
阅读次数:
233
文件是 MapReduce 任务数据的初始存储地。正常情况下,输入文件一般是存储在 HDFS 里面。这些文件的格式可以是任意的:我们可以使用基于行的日志文件, 也可以使用二进制格式,多行输入记录或者其它一些格式。这些文件一般会很大,达到数十GB,甚至更大。那么 MapReduce 是如何读取这些数据的呢?下面我们来学习 InputFormat 接口
1、InputFormat接口
In...
分类:
其他好文 时间:
2016-04-26 21:43:51
阅读次数:
178
花了大约1周的时间,最终把MapReduce的5大阶段的源代码学习结束掉了。收获不少。就算本人对Hadoop学习的一个里程碑式的纪念吧。今天花了一点点的时间,把MapReduce的最后一个阶段。输出OutputFormat给做了分析,这个过程跟InputFormat刚刚好是对着干的,二者极具对称性。 ...
分类:
其他好文 时间:
2016-04-12 12:48:53
阅读次数:
164
有时候你可能想要用不同的方法从input data中读取数据。那么你就需要创建一个自己的InputFormat类。 InputFormat是一个只有两个函数的接口。 1 public interface InputFormat<K, V> { 2 InputSplit[] getSplits(Job ...
分类:
其他好文 时间:
2016-04-12 00:27:57
阅读次数:
225
最近在学习hadoop,用的hadoop2.6.0 然后在学习编写mapreduce程序时,发现默认对文件的输入是采用每行进行分割,下面来分析下改变这个分割方式的办法: 来看看默认是怎样实现的: 如果不使用Job的setInputFormatClass()设置,默认的InputFormat类是使用T ...
分类:
其他好文 时间:
2016-03-29 21:05:52
阅读次数:
158
1) MapReduce中的基类Mapper类,自定义Mapper类的父类。 2) MapReduce中的基类Reducer类,自定义Reducer类的父类。 API文档 1) InputSplit输入分片,InputFormat输入格式化 2) 对Mapper输出结果进行Sorted排序和Grou
分类:
移动开发 时间:
2016-03-15 20:48:32
阅读次数:
307
平时我们写MapReduce程序的时候,在设置输入格式的时候,总会调用形如job.setInputFormatClass(KeyValueTextInputFormat.class)来保证输入文件按照我们想要的格式被读取。所有的输入格式都继承于InputFormat,这是一个抽象类,其子类有专门用于
分类:
其他好文 时间:
2016-01-31 21:16:50
阅读次数:
338