Hadoop调度器与二级排序、Join实现方法.pdfVIP

  • 0
  • 0
  • 约2.06千字
  • 约 3页
  • 2026-02-26 发布于北京
  • 举报

Hadoop调度器与二级排序、Join实现方法.pdf

Hadoop调度器有哪些,并简要说明其工作方法??

Hadoop调度器作用是将系统中空闲的资源按一定策略分配作业。在hadoop中,调度

器是一个可插拔的模块,用户可以根据自己的实际应用要求设计调度器。

①默认的调度器FIFO

Hadoop中默认的调度器,它先按照作业的优先级高低,再按照到达时间的先后选择被执行

的作用,(先进先出);

②计算能力调度器(CapacityScheduler)

计算能力调度器,选择占用最小,优先级高的先执行,以此类推;

③公平调度器Fairscheduler

公平调度器,所有的job具有相同的资源;

Hadoop怎样实现二级排序???

Hadoop在将Mappear产生的数据输送给Reducer之前,会自动对它进行排序,那么,如果我

们还希望按值排序,应该怎么做呢?当然是二级排序,通过对key这个对象格式进行修改,

也就是对key这个对象重新封装,把值的一部分或者整体添加到原始key里面,生成一个合成

的key。对key的重新封装也就是hadoop的二级排序。

Hadoop实现join几种方法???

可以参考咱们weibo的那个MapReduce的程序,最后一个mapreduce就用到了mapred的

join原理.

如果我们有如下的两个文件:

.txt(字段是id,name,addre):

1tom100

2jme101

3kite102

4jack100

5tim101

address.txt(字段是id,name):

100Beijing

101Shanghai

102Guangzhou

103Shenzhen

最后需要输出所在的位置信息,形式如下:

1001tomBeijing

1004jackBeijing

1012jmeShanghai

1015timShanghai

1023kiteGuangzhou

1)hadoop中的mapred实现join的方法??

①reducesidejoin的方式;

此种方式是灵活的,但是大部分情况它的效率非常低;由于join直到reduce()阶段

才开始,会在网络中传递shuffle所有数据(执行copy,sort等动作),然而大

多数情况下,join阶段会丢掉大多数的数据(就如上面的列子:),因此,如果非得用

这种join方式,那么我们有:

※如果确定reduce-side的join,那么参与的文件在map端尽可能先过滤掉无关的数据,

列如:针对特定的文件的projection/filtering,而不是传递到reduce节点后,在join

时才做

※是否可以直接在map端完成join操作,是肯定的。

②sortmergejoin的实现(这里不做具体分析)

③mapsidejoin的方式(老师上课用的方法就是此种方法)

将join中的小文件放进内存中,其实这个类似数据库中classichashjoin的方式,就是一

个是buildinput阶段,一个是probeinput阶段,这里都在map端完成。buildinput阶段,

小文件的数据到内存,构建一个hashtable;probeinput阶段,大文件,通过查

询hashtable实现join。

文档评论(0)

1亿VIP精品文档

相关文档