Map Reduce

MapReduce是一个编程模型,也是一个处理超大数据集的算法模型。用户首先创建一个Map函数处理一个基于key/value pair的数据集合,输出中间的数据集合;然后通过创建一个Reduce函数用来合并所有的具有相同中间key值的value值。通过简单的接口实现自动的并行化和大规模的分布式计算,通过使用mapreduce模型接口实现在大量普通pc机上的高性能计算。

MapReduce前提:任务可以分解为多个子问题,且子问题之间相互独立,彼此不会有牵连,处理子问题之后,任务便被解决,这也是MapReduce的共同点。

MapReduce编程模型步骤

(1)迭代:遍历输入数据,并解析成key/value对。

(2)将输入的key/value对映射成另一些的key/value对。

(3)根据key对中间数据进行分组。

(4)以组为单位对数据进行归纳。

(5)迭代将最终的产生的key/value对保存到输出文件。

在编程模型对外提供的接口,位于应用程序和mapreduce执行器之间,大致分为两层:一:基本的java api 主要为5个组件 InputFormat Mapper Partition Reducer OutputFormat。二:工具层 JobControl ChainMapper/ChainReducer Hadoop Streaming Hadoop Pipes 。执行mapreduce的任务有2个角色:JobTracker(管理和调度任务)、TaskTracker(执行任务)。

序列化:将结构化的对象转为字节流便于网络传输,持久存储。为了读取或者存储java对象,MapReduce对于输入 输出数据中的key、value必须是可序列化的。(相应的类实现Writable接口)在MapReduce中每个作业由2部分组成:应用程序 作业配置。

应用程序使用Reporter方法报告完成进度、设定状态信息、更新计数器。


JAVA API解析:

Hadoop配置文件简介:

系统默认的配置文件是:core-default.xml(优先加载)、hdfs-default.xml、mapred-default.xml,包含所有可配选项的默认值。而管理员的自定义的配置文件:core-site.xml(hadoop优先加载)、hdfs-site.xml、mapred-site.xml。配置文件属性的配置参数:name value description 此外还有新的特性:final参数,变量扩展。

作业配置:

旧版API

JobConf job = new JobConf(new Configuration(),MyJob.class);

job.setJobName("myjob");

job.setMapperClass("MyJob.MyMapper.class");

job.setReducerClass("MyJob.MyReducer.class");

JobClient.runJob(job);

新版API:

       Configuration conf = new Configuration();  

JobConf job = new Job(conf,"myjob");

job.setJarByClass("MyJob.class");

job.setMapperClass("MyJob.MyMapper.class");

job.setReducerClass("MyJob.MyReducer.class");

System.exit(job.waitForCompletion(true)?0:1);

浅谈Java API的5个组件:

InputFormat接口:

用于描述输入数据的格式,包括数据切分和为Mapper提供数据 按照某种策略将数据切分为split 确定Map Task个数以及对应的split,split->key/value.旧版的InputFormat包含2种方法:getSplits、getRecordReader。getSplits数据切分,切成numSplits个inputsplit,只是逻辑分片,并不会在磁盘上分片存储,inputsplit只是记录了分片的元数据信息,其实位置,长度,节点列表,同时inputsplit必须是可序列化的。而getRecordReader返回一个RecordReader对象,将inputsplit解析成key/value对,交给map函数处理。Client调用getSplits方法->Job->JobTracker解析出Inputsplit创建MapTask,在MapTask执行的过程中,调用getRecordReader对象方法获取key/value对交给map处理。

待续。。。。。。


  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值