在hbase中,大表的存在是否会影响其他较小表的性能?

在hbase中,大表的存在是否会影响其他较小表的性能?,hbase,Hbase,在较低的环境中,我们有一个包含100000行的表,直接扫描该表每秒可以返回大约2800行。在我们的生产环境中,我们有一个10万行的表和另一个约40亿行的表,而扫描较小的表每秒只能产生1000行。在这两种情况下,都没有其他活动在进行,那么是因为存在大型表才导致性能下降吗 两个表都有一个列族,大表有400列,但一条记录只填充其中的一列。较小的表只有一列,并且始终填充该列。您可以尝试在HBase site.xml中指定HBase分配给扫描的资源量。您可以通过两个步骤完成此操作: 1.指定分配给读取的资

在较低的环境中,我们有一个包含100000行的表,直接扫描该表每秒可以返回大约2800行。在我们的生产环境中,我们有一个10万行的表和另一个约40亿行的表,而扫描较小的表每秒只能产生1000行。在这两种情况下,都没有其他活动在进行,那么是因为存在大型表才导致性能下降吗


两个表都有一个列族,大表有400列,但一条记录只填充其中的一列。较小的表只有一列,并且始终填充该列。

您可以尝试在
HBase site.xml
中指定HBase分配给扫描的资源量。您可以通过两个步骤完成此操作: 1.指定分配给读取的资源百分比(与写入相反) 2.指定分配给扫描(而不是GET)的读取资源的百分比

在下面的示例中,整个集群中有96个CPU。你把他们80%的注意力放在阅读上,然后80%的注意力放在扫描上

看看这对你有没有影响

   <property>
        <name>hbase.regionserver.handler.count</name>
        <value>96</value> <!-- roughly # of CPUs in the whole cluster -->
    </property>
    <property>
        <name>hbase.ipc.server.callqueue.read.ratio</name>
        <value>0.8</value>
    </property>
    <property>
        <name>hbase.ipc.server.callqueue.scan.ratio</name>
        <value>0.8</value>
    </property>

hbase.regionserver.handler.count
96
hbase.ipc.server.callqueue.read.ratio
0.8
hbase.ipc.server.callqueue.scan.ratio
0.8

您可以尝试在
HBase site.xml
中指定HBase分配给扫描的资源量。您可以通过两个步骤完成此操作: 1.指定分配给读取的资源百分比(与写入相反) 2.指定分配给扫描(而不是GET)的读取资源的百分比

在下面的示例中,整个集群中有96个CPU。你把他们80%的注意力放在阅读上,然后80%的注意力放在扫描上

看看这对你有没有影响

   <property>
        <name>hbase.regionserver.handler.count</name>
        <value>96</value> <!-- roughly # of CPUs in the whole cluster -->
    </property>
    <property>
        <name>hbase.ipc.server.callqueue.read.ratio</name>
        <value>0.8</value>
    </property>
    <property>
        <name>hbase.ipc.server.callqueue.scan.ratio</name>
        <value>0.8</value>
    </property>

hbase.regionserver.handler.count
96
hbase.ipc.server.callqueue.read.ratio
0.8
hbase.ipc.server.callqueue.scan.ratio
0.8

在这两种情况下,您是只扫描行还是同时包括列。更重要的是,您的“较慢”表是否有大量的删除,以及它被主要压缩的频率有多高?谢谢您的回复。在这两种情况下都包括列(每行有一列,并且只有一列),两个表上都没有删除,并且在扫描两个表之前执行了主要压缩。再次感谢。对不起,我不知道还有什么好建议。我是否正确理解,在小环境中,表只有一列,但在大环境中,表可能有400个不同的列,但每行一次只能填充一列?如果是这样的话,可能是因为这个原因,再次谢谢。在两种环境中,执行扫描的表都有一个填充列。在生产环境中,还有一个大表,每个记录都有多达400列的一个,虽然我们不扫描这个表,但有一件事要考虑的是您的生产大表正在经历什么样的工作量?即使您不扫描大型生产表,例如,如果它被大量或写入/等等击中,那么您的生产集群也会为该工作负载分配太多资源。如果是这种情况,您可以配置生产环境,以便为读取分配更多资源,甚至更具体地为扫描分配更多资源。如果这有帮助的话,我可以描述一下如何做。在这两种情况下,您是只扫描行还是同时包括列。更重要的是,您的“较慢”表是否有大量的删除,以及它被主要压缩的频率有多高?谢谢您的回复。在这两种情况下都包括列(每行有一列,并且只有一列),两个表上都没有删除,并且在扫描两个表之前执行了主要压缩。再次感谢。对不起,我不知道还有什么好建议。我是否正确理解,在小环境中,表只有一列,但在大环境中,表可能有400个不同的列,但每行一次只能填充一列?如果是这样的话,可能是因为这个原因,再次谢谢。在两种环境中,执行扫描的表都有一个填充列。在生产环境中,还有一个大表,每个记录都有多达400列的一个,虽然我们不扫描这个表,但有一件事要考虑的是您的生产大表正在经历什么样的工作量?即使您不扫描大型生产表,例如,如果它被大量或写入/等等击中,那么您的生产集群也会为该工作负载分配太多资源。如果是这种情况,您可以配置生产环境,以便为读取分配更多资源,甚至更具体地为扫描分配更多资源。如果有帮助的话,我可以描述一下怎么做。很棒的东西,非常感谢,我会试一试。很棒的东西,非常感谢,我会试一试。