Hadoop 笔记3 Mapreduce

Map reduce:是一种海量数据并行编程模型,分为map和reduce两个函数。目的是把任务分给多个节点,然后汇总各个节点的中间结果,得到最终结果。


Map reduce的对象有一个特点:数据可以分为多个并行处理的数据集。

执行过程如下:

  • 系统把数据分割成等大小的split(片),每个片进一步分解成<key,Val>对,然后分配用户定义的map任务。
  • Mapper:根据map任务计算得到中间结果<key2,val2>然后根据key2进行汇总得到<key2,list(val2)>,然后将结果反馈给系统。
  • Reducer:系统根据中间结果进行排序,然后汇总得到最终的结果并输出。

==================Map reduce的集群行为===================

  1. 任务调度:Job tracker把mapper reducer分配给task tracker(必须建立在Data node)之上。
  2. 本地计算:尽量让spliter小于block,这样让带有数据的data node自己进行计算,避免网络传输中的性能损失。
  3. shuffle:将计算的结果分成R分(取决于Reducer的个数),一般利用hash来执行。
  4. combine:为了节省带宽,在map的最后会执行combine(合并)操作,将许多相同key值的合并为一对<key,val>。
  5. 中间结果是存放在本地而不是HDFS,这样不会浪费HDFS的备份资源,而且它们是临时数据,用完之后就删除了。存放在本地之后通知job tracker文件的位置,job tracker安排reduce去进行reduce。

====================Map reduce的个数=====================

  • 每个task都有一个资源池(slots),只有获得了slot才能执行。reduce的总数为datanode的总数乘以slot的个数。得到之后reduce的值小于该值,一个是为了避免reduce排队,另一个也是因为当有reduce宕机之后,可以立马分配 reduec。另外reduce的个数必须小于map的个数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值