关于hadoop中的排序

转载请注明作者,谢谢支持!


昨天有个面试,问到在MapReduce过程中会发生几次排序?

 

计算机生成了可选文字: u1只nrn甘.mHSort岌!巡卜outputHDFS:.:':s口ito口臼......'..'....~~~日口口m件ge、.…….-…~.~…‘.,.二亘口厂刁量””奋曰’囚rto卜今HDFS-.J..口自口口日口月口口自月自日口口口....lePlicationr碱。口口口口口口口口口口口口口口口口口口口口一困“:::::s口itl二J'.。口口口口口口口口口口口自口自口口口口口口.-----匕m省ge、.…一~....……J.........……..…,口二HDFSPlication。减。.........-二口口.t自.......……j二1尸二卜:':s口itZ……口口口口口口口口口口口口口口口自口口口口口口,…。......……,……L

如图,应该还是两次排序.

 

第一次应该是在map数据持久化到本地硬盘的时候,这个时候,每次从内存spill之前会做inmemory sort,在map操作完成之前还会对所有spill文件做排序,完成磁盘文件合并。步骤应该是

  1. partition
  1. in momery sort
  2. combine
  1. spill to disk
  1. if(spill文件数>3) combine again
  1. merged into a single partitioned and sortedoutput file

 

第二次排序为shuffle排序,在reduce端拉取各个map数据后对数据做merge排序,这个就简单了

 

问题1 hadoop排序是根据什么值进行比较,来确定排序顺序的。现在有Map数据( 10,3,2)数据将如何排序?

答:hadoop排序应该是按照字典排序。map排序结果为 (10,2,3)

 

问题2combine是否参与排序,如果我将map输出(10,2,3)conbine中改变为(2,10,3),会如何输出?

答:combie不参与排序,如果combine改变排序,则输出就为(2,10,3)

 

问题3:如果有2map,每个map的经过combine输出都为(2,10,3),经过shuffle后如何排序?

答:排序结果为(2,10,2,10,3,3).排序顺序如下,每次排序都会根据所有map的下一个待选值进行比较排序

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值