请问 1T 左右的数量 用 MapReduce 跑 job 数设置为多少合适呢?

问答 ling775000 ⋅ 于 2018-02-05 15:31:02 ⋅ 最后回复由 青牛 2018-02-08 17:25:09 ⋅ 4163 阅读

机器有20台左右

成为第一个点赞的人吧 :bowtie:
回复数量: 10
  • 青牛 国内首批大数据从业者,就职于金山,担任大数据团队核心研发工程师
    2018-02-06 00:51:14

    reducer数是吗?这个看你干什么了,如果shuffle数据是均匀的那20个就够,如果不均匀多少个都没用

  • ling775000
    2018-02-06 10:29:41

    @青牛 跑MapReduce的时候不是有可以设置job数量的地方的吗?

  • 青牛 国内首批大数据从业者,就职于金山,担任大数据团队核心研发工程师
    2018-02-08 00:06:09

    @ling775000 你说的是一个大任务分成几部小任务去跑吗?

  • ling775000
    2018-02-08 16:44:15

    @青牛 可是上上条你说的reduce数,均匀的话20个就够了,对此我有个疑问就是这个reduce数不是shuffle的数据数据进行patient分区,决定reduce数吗?意味着有多少key种类就有多少个分区吧? 那2T左右的数据,设置20个就够了怎么理解呢?

  • 青牛 国内首批大数据从业者,就职于金山,担任大数据团队核心研发工程师
    2018-02-08 16:48:42

    设置了reduce为20就是有20个patient分区。数据不倾斜并且集群资源允许的情况设置越多的reducer数越快

  • ling775000
    2018-02-08 16:53:30

    @青牛 那我对reduce数的理解就shuffle的时候数据进行patient分区,决定reduce数,意味着有多少个key种类就有多少个reduce数,这么理解,对吗?

  • ling775000
    2018-02-08 16:57:15

    @青牛 还是说我理解的只是patition的总数,也就是reduce的总数,而你说的20就够了,是指reduce task的并行度?

  • 青牛 国内首批大数据从业者,就职于金山,担任大数据团队核心研发工程师
    2018-02-08 17:06:54

    partition是可以自定义的,不自定义就默认按key的hash去分,比如你的reducer数量设置为20就按key hbase去分20份key,map output的时候就把每份数据输出0到19个partition分区中,然后20个reducer每个reducer去读自己partition文件的数据。
    你要先理解这个shuffle的流程。默认情况下设置多个reducer数就会有多少个partition分区。也就是reducer任务的并行度。

  • ling775000
    2018-02-08 17:11:57

    @青牛 恩恩 理解了,原来我理解的是reduce总数,不是并行度,我还想问个问题就是每个map任务到reduce任务,执行时间大概是多久呢?比如一个传统的Wordcount,并行度中之一的map到reduce端执行的时间。

  • 青牛 国内首批大数据从业者,就职于金山,担任大数据团队核心研发工程师
    2018-02-08 17:25:09

    @ling775000 这个看你map输出的数据量了,拉取这个map的数据的reducer需要多长时间从map端把数据读过来。一般reducer的前33%进度都是在shuffle数据。少就快多就慢呗。再少就算是1条也至少有几秒种的时间为reducer做准备吧,比如这个reducer任务被创建起来也要时间吧。

暂无评论~~
  • 请注意单词拼写,以及中英文排版,参考此页
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`, 更多语法请见这里 Markdown 语法
  • 支持表情,可用Emoji的自动补全, 在输入的时候只需要 ":" 就可以自动提示了 :metal: :point_right: 表情列表 :star: :sparkles:
  • 上传图片, 支持拖拽和剪切板黏贴上传, 格式限制 - jpg, png, gif,教程
  • 发布框支持本地存储功能,会在内容变更时保存,「提交」按钮点击时清空
Ctrl+Enter