Hadoop Hbase并发使其速度变慢

Hadoop Hbase并发使其速度变慢,hadoop,hbase,Hadoop,Hbase,我有1台主服务器和5台区域服务器,每台服务器上都有200 GB的磁盘空间和16 GB的RAM。我在HBase中创建了一个有1000万条记录的表。我正在hadoop 2上使用hbase-0.96版本 表名-sh_self_配置文件 柱族-纵断面 在这个表中,每行有30列。 当我从HBase获得一个单列值时,大约需要10毫秒。我的问题是,当我达到100个或更多并发请求时,时间慢慢累积,并增加到400毫秒以上,而不是仅在10毫秒内完成。当线性命中100个请求时,每个请求只需10毫秒。您应该检查的一件事

我有1台主服务器和5台区域服务器,每台服务器上都有200 GB的磁盘空间和16 GB的RAM。我在HBase中创建了一个有1000万条记录的表。我正在hadoop 2上使用hbase-0.96版本

表名-sh_self_配置文件

柱族-纵断面

在这个表中,每行有30列。
当我从HBase获得一个单列值时,大约需要10毫秒。我的问题是,当我达到100个或更多并发请求时,时间慢慢累积,并增加到400毫秒以上,而不是仅在10毫秒内完成。当线性命中100个请求时,每个请求只需10毫秒。

您应该检查的一件事是您的表的分布有多均匀

您可以通过访问HBase主web控制台http://:60010来完成此操作,您将能够看到您的表有多少个区域。如果在创建表时没有做任何特殊的操作,那么很容易就只有一个或两个区域,这意味着所有请求都被定向到单个区域服务器

如果是这种情况,您可以使用预分割区域(我建议使用5的倍数,例如15或20)重新创建表,并确保您正在执行的并发GET均匀分布在行键空间中

另外,请检查您为区域服务器分配了多少RAM-您可能需要从默认值增加它。如果您在这些机器上运行的不是HBase Region Server,可能会增加到8GB ram

除此之外,您还可以调整hbase.regionserver.handler.count的默认值


我希望这能有所帮助。

您使用的是哪个客户端?您使用的是标准Java客户机、Thrift客户机、HTTP REST客户机还是其他什么?如果您的用例是大量随机读取单列值,我强烈建议您尝试,因为它比标准的同步Java客户端快得多。

添加有关密钥设计、hbase内存设置等的更多信息。记录有多大?它们是1亿条1MB记录还是10字节记录?这是一个很大的区别。读取是如何分配的?一致地?您是否反复访问同一行?