在 Azure HDInsight 中使用 Apache Ambari 优化 Apache HBase

Apache Ambari 是用于管理和监视 HDInsight 群集的 Web 界面。 有关 Ambari Web UI 的简介,请参阅使用 Apache Ambari Web UI 管理 HDInsight 群集

可以通过“HBase 配置”选项卡修改 Apache HBase 配置。以下部分介绍了一些影响 HBase 性能的重要配置设置。

设置 HBASE_HEAPSIZE

注意

本文包含对术语“主”的引用,这是 Azure 不再使用的术语。 在从软件中删除该术语后,我们会将其从本文中删除。

HBase 堆大小指定区域服务器和主服务器要使用的最大堆数量(以 MB 为单位)。 默认值为 1,000 MB。 应该为群集工作负荷优化此值。

  1. 若要修改,请导航到 HBase“配置”选项卡中的“高级 HBase-env”窗格,然后找到 HBASE_HEAPSIZE 设置。

  2. 将默认值更改为 5,000 MB。

    “Apache Ambari HBase 内存堆大小”。

优化读取密集型工作负荷

以下配置对于提高读取密集型工作负荷的性能非常重要。

块缓存大小

块缓存是读取缓存。 hfile.block.cache.size 参数控制块缓存大小。 默认值为 0.4,即总区域服务器内存的 40%。 块缓存大小越大,随机读取的速度越快。

  1. 若要修改此参数,请导航到 HBase“配置”选项卡中的“设置”选项卡,然后找到“分配到读取缓冲区的 RegionServer 内存百分比”。

    Apache HBase 内存块缓存大小。

  2. 若要更改此值,请选择“编辑”图标。

Memstore 大小

所有编辑内容都存储在称作 Memstore 的内存缓冲区中。 此缓冲区增加了可以在单个操作中写入磁盘的数据总量。 它还加快了对最近编辑内容的访问速度。 Memstore 大小由下面两个参数定义:

  • hbase.regionserver.global.memstore.UpperLimit:定义 Memstore 总共可以使用的最大区域服务器百分比。

  • hbase.regionserver.global.memstore.LowerLimit:定义 Memstore 总共可以使用的最小区域服务器百分比。

若要优化随机读取,可以减小 Memstore 的上限和下限。

从磁盘扫描时提取的行数

hbase.client.scanner.caching 设置定义在扫描程序中调用 next 方法时,要从磁盘读取的行数。 默认值为 100。 该数字越大,从客户端向区域服务器发出的远程调用数就越少,因而扫描速度也就越快。 但是,此设置增加了客户端上的内存压力。

Apache HBase 提取的行数。

重要

设置此值时,请不要使扫描程序中的下一次方法调用间隔时间大于扫描程序的超时时间。 扫描程序超时期限由 hbase.regionserver.lease.period 属性定义。

优化写入密集型工作负荷

以下配置对于提高写入密集型工作负荷的性能非常重要。

最大区域文件大小

HBase 使用称作 HFile 的内部文件格式存储数据。 hbase.hregion.max.filesize 属性定义区域中单个 HFile 的大小。 如果区域中的 HFiles 总数大于此设置,会将该区域拆分为两个区域。

“Apache HBase HRegion 最大文件大小”。

区域文件大小越大,拆分数目越小。 可以增大文件大小,以确定可以最大程度地提高写入性能的值。

避免阻止更新

  • 属性 hbase.hregion.memstore.flush.size 定义 Memstore 刷新到磁盘的增量大小。 默认大小为 128 MB。

  • hbase.hregion.memstore.block.multiplier 定义 Hbase 区域块乘数。 默认值为 4。 允许的最大值为 8。

  • 如果 Memstore 为 (hbase.hregion.memstore.flush.size * hbase.hregion.memstore.block.multiplier) 字节,则 HBase 会阻止更新。

    使用刷新大小和块乘数的默认值时,如果 Memstore 大小为 128 * 4 = 512 MB,则会阻止更新。 若要减少更新阻止计数,请增大 hbase.hregion.memstore.block.multiplier 的值。

Apache HBase 区域块乘数。

定义 Memstore 大小

hbase.regionserver.global.memstore.upperLimithbase.regionserver.global.memstore.lowerLimit 参数定义 Memstore 大小。 将这些值设置为相等可以减少写入期间的暂停次数(同时提高刷新频率),并可以提高写入性能。

设置 Memstore 本地分配缓冲区

hbase.hregion.memstore.mslab.enabled 属性确定 Memstore 本地分配缓冲区使用率。 如果已启用 (true),则此设置可以防止在执行写入密集型操作期间出现堆碎片。 默认值为 true。

hbase.hregion.memstore.mslab.enabled。

后续步骤