gpt4 book ai didi

hadoop - HBase 批量加载会产生大量的 reducer 任务——任何解决方法

转载 作者:可可西里 更新时间:2023-11-01 15:42:14 25 4
gpt4 key购买 nike

HBase 批量加载(使用 configureIncrementalLoad 辅助方法)将作业配置为创建与 hbase 表中的区域一样多的 reducer 任务。因此,如果有几百个区域,那么该作业将产生数百个 reducer 任务。这在小型集群上可能会变得非常慢。

是否可以使用 MultipleOutputFormat 或其他方式解决问题?

谢谢

最佳答案

  1. 按区域分阶段减少减少会给您带来很多长期利益。一旦导入的数据在线,您就会获得数据局部性。您还可以确定何时将区域负载平衡到另一台服务器。我不会这么快进入更粗略的粒度。
  2. 由于 reduce 阶段是单个文件写入,您应该能够设置 NumReduceTasks(硬盘驱动器数量)。这可能会加快速度。
  3. 很容易出现网络瓶颈。确保您正在压缩 HFile 和中间 MR 数据。

      job.getConfiguration().setBoolean("mapred.compress.map.output", true);
    job.getConfiguration().setClass("mapred.map.output.compression.codec",
    org.apache.hadoop.io.compress.GzipCodec.class,
    org.apache.hadoop.io.compress.CompressionCodec.class);
    job.getConfiguration().set("hfile.compression",
    Compression.Algorithm.LZO.getName());
  4. 您的数据导入大小可能足够小,您应该考虑使用基于 Put 的格式。这将调用正常的 HTable.Put API 并跳过 reducer 阶段。请参见 TableMapReduceUtil.initTableReducerJob(table, null, job)。

关于hadoop - HBase 批量加载会产生大量的 reducer 任务——任何解决方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4994444/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com