在 Azure HDInsight 中使用 Apache Ambari 最佳化 Apache HBase

Apache Ambari 是用來管理和監視 HDInsight 叢集的 Web 介面。 如需Ambari Web UI的簡介,請參閱 使用Apache Ambari Web UI管理 HDInsight 叢集。

Apache HBase 組態會從 [HBase 設定] 索引標籤 修改。下列各節說明影響 HBase 效能的一些重要組態設定。

設定HBASE_HEAPSIZE

注意

本文包含字詞 master 的參考,這是 Microsoft 不再使用的字詞。 從軟體中移除該字詞時,我們也會將其從本文中移除。

HBase 堆積大小會指定要依 區域 伺服器以 MB 為單位使用的堆積數量上限。 默認值為 1,000 MB。 此值應該針對叢集工作負載進行調整。

  1. 若要修改,請流覽至 [HBase 設定] 索引標籤中的 [進階 HBase-env] 窗格,然後尋找HBASE_HEAPSIZE設定。

  2. 將預設值變更為 5,000 MB。

    `Apache Ambari HBase memory heapsize`.

優化大量讀取工作負載

下列設定對於改善大量讀取工作負載的效能很重要。

區塊快取大小

區塊快取是讀取快取。 參數 hfile.block.cache.size 會控制區塊快取大小。 默認值為 0.4,占區域伺服器記憶體總數的 40%。 區塊快取大小越大,更快速的隨機讀取。

  1. 若要修改此參數,請流覽至 HBase Configs 索引標籤中的 [設定] 索引標籤,然後找出 [配置給讀取緩衝區] 的 RegionServer % 。

    Apache HBase memory block cache size.

  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 number of rows fetched.

重要

請勿設定值,使掃描器上下一個方法叫用之間的時間大於掃描器逾時。 掃描器逾時持續時間是由 hbase.regionserver.lease.period 屬性所定義。

優化大量寫入工作負載

下列組態對於改善大量寫入工作負載的效能很重要。

區域檔案大小上限

HBase 會以內部檔案格式儲存資料,稱為 HFile。 屬性 hbase.hregion.max.filesize 會定義單一 HFile 區域的大小。 如果區域中所有 HFiles 的總和大於此設定,區域會分割成兩個區域。

`Apache HBase HRegion max filesize`.

區域檔案大小越大,分割數目就越小。 您可以增加檔案大小,以判斷產生最大寫入效能的值。

避免更新封鎖

  • 屬性 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 Region Block Multiplier.

定義 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.

下一步