我有一个hbase表(通过apachephoenix编写),需要读写到一个平面文本文件。当前的瓶颈是,hbase(phoenix)表有32个盐桶,它只打开32个Map器来读取。当数据增长超过1000亿时,它就变得非常耗时。有人能告诉我如何控制每个区域服务器读取hbase表的Map器的数量吗?我也看到了一个程序,在下面的网址解释,“https://gist.github.com/bbeaudreault/9788499“但我没有一个驱动程序来充分解释。有人能帮忙吗?
hm2xizp91#
根据我的观察,表的区域数=框架打开的Map器数。因此,减少区域的数量,这将反过来减少Map器的数量。
1) 为ex 0-9创建时预拆分hbase表。2) 通过在0-9之间生成行前缀来加载这些区域中的所有数据*
另外,请看一下apachehbase区域拆分和合并此外,设置Map器的数量并不能保证它会打开那些Map器,它是由输入拆分驱动的您可以使用 setNumMapTasks 或者 conf.set('mapred.map.tasks','numberofmappersyouwanttoset') (但这是对配置的建议)。关于你提供的链接,我不知道这是怎么回事,你可以和作者核实。
setNumMapTasks
conf.set('mapred.map.tasks','numberofmappersyouwanttoset')
1条答案
按热度按时间hm2xizp91#
根据我的观察,表的区域数=框架打开的Map器数。
因此,减少区域的数量,这将反过来减少Map器的数量。
如何做到这一点:
1) 为ex 0-9创建时预拆分hbase表。
2) 通过在0-9之间生成行前缀来加载这些区域中的所有数据*
以下是进行拆分的各种方法:
另外,请看一下apachehbase区域拆分和合并
此外,设置Map器的数量并不能保证它会打开那些Map器,它是由输入拆分驱动的
您可以使用
setNumMapTasks
或者conf.set('mapred.map.tasks','numberofmappersyouwanttoset')
(但这是对配置的建议)。关于你提供的链接,我不知道这是怎么回事,你可以和作者核实。