MapReduce总结 (1)

【1】Hadoop Map/Reduce框架为每一个 InputSplit 产生一个map任务,而每个 InputSplit 是由该作业的 InputFormat 产生的。

【2】 Mapper 的输出被排序后,就被划分给每个 Reducer 。分块的总数目和一个作业的reduce任务的数目是一样的。用户可以通过实现自定义的  Partitioner 来控制哪个key被分配给哪个  Reducer

【3】写MR时主要有8个步骤:
1、map任务处理
(1.1)读取输入文件的内容,解析成key, value对。对输入文件的每一行,解析成key\value对。每个键值对调用一次map函数。
(1.2)写自己的逻辑,对输入的key\value处理,转换成新的key\value输出。
(1.3)对输出的key\value进行分区。
(1.4)对不同分区的数据,按照key进行排序、分组。相同key的value放到一个集合中。
(1.5)(可选)分组后的数据进行归约。
2、reduce任务处理
(2.1)对多个map任务的输出,按照不同的分区,通过网络copy到不同的reduce节点。
(2.2)对多个map任务的输出进行合并、排序。写reduce函数自己的逻辑,对输入的key\values处理,转换成新的key\value输出。
(2.3)把reduce的输出保存到文件中。

【4】技巧:先确认<k1,v1>和<k3,v3>,这个根据业务要求,一般都比较好确定。k2一般和k3相似。还有一种确定k2的方式是:考虑mapper中有一个特别重要的功能是分组。考虑业务中哪些需要分组,可以确定k2。确定<k1, v1>和<k2, v2>就可以确定map(),<k2,v2s>和<k3, v3>就确定了reduce()。

【5】涉及到比较的问题,先找到它们关联的因素。将关联因素作为k2,在一个map函数中context.write可以调用多次。如果v2的类型有多个,可以在v2字段设置标记,用来区分。得灵活运用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值