MR编写

一、基础知识 心跳机制

  1. hadoop集群是master/slave模式,master包括Namenode和Jobtracker,slave包括Datanode和Tasktracker。

  2. master启动的时候,会开一个ipc server在那里,等待slave心跳。

  3. slave启动时,会连接master,并每隔3秒钟主动向master发送一个“心跳”,这个时间可 以通过”heartbeat.recheck.interval”属性来设置。将自己的状态信息告诉master,然后master也是通过这个心跳的返回值,向slave节点传达指令。

  4. 需要指出的是:namenode与datanode之间的通信,jobtracker与tasktracker之间的通信,都是通过“心跳”完成的。

“心跳”是Datanode主动给Namenode发送的

二、MR执行过程

1、从分片 输入到 Map
2、Map--Shuffle--Reduce

mr过程

mr

#### mapreduce 的四个阶段

split阶段:分片输入阶段
map阶段(需要编码)
shuffle阶段
reduce阶段(需要编码)
如何设置map任务个数
一般一个DataNode的map任务数量控制在10-100比较合适
增加map个数,可增大mapred.map.tasks
减少map个数,可增大mapred..min.split.size
如何设置reduce任务数量
1、调节参数mapred.reduce.tasks;
2、在代码中调用job.setNumReduceTasks(int n) 方法

1、一个mapreduce作业中,以下三者的数量总是相等的:partitioner的数量=reduce任务数量=最终输出文件(如:part-r-00000)

2、在一个reducer中,所有数据都会被按照key值升序排序,故如果part输出文件中包含key值,则中国文件一定是有序的。

本地合并----Combine

Combine:数据在Mapper输出后会进行和Reducer相似的操作,本质上 是在Mapper缓冲区溢写文件的合并,减少网络开销,代码如下

job.setCombinerClass(MyReduce.class);

combiner过程

partition 是在reduce输入之前发生,相同的key值一定会进入同一个partitioner,reduce过程会按照key排序

转载于:https://my.oschina.net/u/3267050/blog/1631848

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值