首页 > 解决方案 > HBase:一台区域服务器每秒拥有所有请求

问题描述

我有一个在 AWS EMR 上运行的高可用性 (HA) HBase。一个 HA HBase 意味着我有 3 个主节点而不是一个。我也有 61 个区域服务器 使用 HBase UI,我看到我的一个区域服务器每秒有大约 1000 个请求,其余的区域服务器每秒大约有 60 个请求。

这种不匹配是什么意思?我该如何解决这个问题?

谢谢

标签: hbase

解决方案


这是“hotstpotting”的常见标志——您的表没有以使所有区域服务器都参与为它们提供服务的方式进行拆分。

您需要考虑应用程序的访问模式,并将它们与实际拆分表的方式以及设计行键的方式进行比较。

对于深入研究这一点的最简单方法,我建议以下内容:

  1. 在 HBase UI 中,注意获得所有命中的区域服务器
  2. 该区域服务器的链接上的时钟(其名称可点击)
  3. 这将打开该特定区域服务器的 UI。向下滚动,您将看到该区域服务器正在服务的所有表中的所有区域。您还将看到每个区域服务器的实际“开始”和“结束”

此信息应该可以帮助您确定问题所在:此区域服务器是否提供过多的表?还是繁忙地区太多?为什么其他服务器没有分配任何这些区域?也许您设计的行键导致热点(通常最有可能的问题)

如果不是这样,那么我注意到的一件事是,即使您将表设计为相等拆分(例如通过使用十六进制拆分器),您最终可能仍然会遇到 SAME 繁忙表中的繁忙区域过多的情况仅分配给一台服务器。在这种情况下,HBase 有一个方便的属性,可以在表级别跨不同服务器强制执行均匀的区域分布。


推荐阅读