Mapreduce-InputFormat

在mapreduce1.0中,所有作业是由Job Tracker来控制的,具体的实现是由java代码生成的jar包来作为job依据和具体实现,,但是jobtraker既要维护job的task状态,还要维护jobtraker中欧给你的job状态,维护层次过多,浪费了很多的资源;

所以在mapredce2.0中,使用的master-slave模式,这样可以减少资源消耗;

作业管理是由ApplicationMaster管理,资源是由新增的系统YARN实现;还有ApplicationManager,ResourceScheduler,NodeManager这三个来取代JobTracker和TaskTracker;

而且ApplicationMaster可变,用户可自定义;

MapReduce编程过程

InputFormat->Map->Combine/partition/->Reduce->OutputFormat

在实际编程中,只需要实现map和reduce,其他过程已经默认指定了;

InputFormat 设置应用程序的数据输入格式,主要分为文件输入格式和二进制输入格式;

TextInputFormat:  Key:LongWritable Value: Text

KeyValueTextInputFormat :(用于有行号的文本输入数据;

NLineInputForamt:针对少量文件的并行处理任务汇总;

StreamInputFormat: 用于处理大型的xml文档;

二进制输入:

SequenceFileInputFormat:  用于处理二进制键值对的序列,其中Key: IntWriteable  Value: Text   sequence(序列)

SequenceFileAsTextInputFormat:将顺序文件作为流操作的输入,并将Key和Value格式都转为Text对象;

SequenceFileAsBinaryInputFormat:Key和Value都转化为二进制对象;

多样式输入:MultipleInputs:可以在每个文件上设置InputFormat类型;

数据库输入:DBInputFormat:从关系型数据库中读取数据的一种格式,可以将数据传到集群上进行处理;

要设置MapReduce应用程序的数据输入格式,首先要定义一个JobConf类对象

然后调用其setInputFormat方法来设置格式,设置输入路径等;

JobConf  jconf;

jconf.setInputFormatClass(KeyValueTextInputFormat.class);

FileInputFormat.setInputPaths(jconf,MapReduceConfig.getInputDirectionary());


FileInputFormat是所有以文件为数据元的InputFormat的实现,这些都实现了InputFormat接口

InputFormat接口定义了两个抽象方法:getSplits和createRecordReader方法,

其中getSplits方法将输入数据切片并返回一个InputSplit类型的数组,createRecordReader方法为InputSplit对象生成一个RecordReader对象;

InputSplit类定义了三个方法,getLength,getLocationInfo和getLocations方法,分别用于湖区切片大小,(方便排序);用来获取输入数据所在节点的名称;获取切片的存储信息;

createRecordReader类实现了Closeable接口,用于将输入数据切片转换成key/value对来作为Map的输入;该类定义了六个抽象方法,intialize,nextKeyValue,getCurrentKey,getCurrentValue,getProgress和close方法,分别用来调用RecordReader对象时惊醒实例化该对象;用于读取下一个key/value对 返回true or false;用于获取当前key值,并返回当前key值;用于获取当前的value值;获取当前RecordReader处理转换数据的进度,并返回相应进度值longyi关闭RecordReader;


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值