【问题标题】:how to control the number of mappers per region server for reading a HBase table如何控制每个区域服务器的映射器数量以读取 HBase 表
【发布时间】:2017-01-31 10:22:36
【问题描述】:

我有一个 HBase 表(通过 Apache Phoenix 编写),需要读取和写入平面文本文件。当前的瓶颈是因为我们有 32 个用于 HBase(Phoenix)表的盐桶,它只打开 32 个映射器来读取。当数据增长超过 1000 亿时,它变得非常耗时。有人可以指出我如何控制每个区域服务器的映射器数量以读取 HBase 表吗?我还看到了在下面的 URL 中解释的程序,“https://gist.github.com/bbeaudreault/9788499”,但我没有完全解释的驱动程序。有人可以帮忙吗?

【问题讨论】:

  • Vijay :要减少映射器的数量,您可以通过以下方式减少区域数量.. 是否有帮助?
  • 根据我的经验,它应该可以工作,请让我知道解决方案是否有效。

标签: java hadoop apache-spark mapreduce hbase


【解决方案1】:

在我的观察中,表的区域数 = 框架打开的映射器数。

因此减少区域的数量,从而减少映射器的数量。

如何做到这一点:

1) 在为 ex 0-9 创建时预拆分 hbase 表。

2)通过生成0-9之间的行前缀来加载这些区域中的所有数据。*

以下是拆分的各种方法:

另外,有一个look at apache-hbase-region-splitting-and-merging

此外,设置映射器的数量并不能保证它会打开那么多,它是由输入拆分驱动的

您可以使用setNumMapTasksconf.set('mapred.map.tasks','numberofmappersyouwanttoset') 更改映射器的数量(但这是对配置的建议)。

关于您提供的链接,我不知道它是如何工作的,您可以与作者核实。

【讨论】:

    猜你喜欢
    • 2017-02-06
    • 2013-12-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多