mapreduce分区疑问

mapreduce分区疑问

map任务产生个数是按照文件大小块进行切割的,那具体分区的个数是和产生map任务的个数一样么?还有个问题,如果储存的文件不在对应的datanode节点上 是否会将数据移动到对应map执行的任务节点上执行?如果是的话,这样不是违背了移动数据转变成移动计算的理念么?

正在回答

登陆购买课程后可参与讨论,去登陆

1回答

map任务产生个数是按照文件大小块进行切割的,那具体分区的个数是和产生map任务的个数一样么?

答:map任务的个数严格来说是和inputsplit的个数有关,inputsplit默认是和文件的block大小相等

所以可以认为map任务的个数在正常情况下等于hdfs数据的block块数量


还有个问题,如果储存的文件不在对应的datanode节点上 是否会将数据移动到对应map执行的任务节点上执行?如果是的话,这样不是违背了移动数据转变成移动计算的理念么?

答:map任务在执行时优先选择在存储HDFS数据的服务器上执行,其次在同机架的服务器上执行,最次在其他机架服务器上执行。task任务会尽可能的分配到数据所在的节点上面,如果那个节点上资源已经被用完了,只能退而求其次再往同机架上的服务器上分配任务,依次类推。所以说并不违背移动数据转变成移动计算的理念。reduce任务执行不具备就近原则,因为这里会涉及shuffer阶段,会通过网络将map执行结果传输之reduce处理的服务器中,再进行计算。


  • GRdreamflying 提问者 #1
    分区数量和mao的任务数量是相同的么
    2020-09-17 09:25:28
  • 徐老师 回复 提问者 GRdreamflying #2
    分区数量和map任务数量没关系,分区数量和reduce任务数量有关系,在讲mapreduce中的数据倾斜问题的时候里面有分析分区的问题,可以到电子书中看一下具体的分析 https://www.imooc.com/wiki/BigData/6002.html
    2020-09-17 09:32:51
  • GRdreamflying 提问者 回复 徐老师 #3
    设置分区只能通过代码实现么?有没有对应的配置文件可以设置!?分区数量设置多少有没有建议的设置?还是根据具体遇到处理慢的具体分析?
    2020-09-17 10:01:11
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师