如何控制每个区域服务器的映射器数量以读取HBase表

时间:2016-09-22 17:57:28

标签: java hadoop apache-spark mapreduce hbase

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

1 个答案:

答案 0 :(得分:1)

  

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

因此减少区域数量,这反过来会减少映射器的数量。

如何做到这一点:

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

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

以下是分割的各种方法:

enter image description here

另外,请look at apache-hbase-region-splitting-and-merging

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

您可以使用setNumMapTasksconf.set('mapred.map.tasks','numberofmappersyouwanttoset')更改地图制作者的数量(但建议配置)。

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