適用於 Apache HBase 的 Azure HDInsight 加速寫入

本文提供 Azure HDInsight 中 Apache HBase 加速寫入功能的背景,以及如何有效地使用它來改善寫入效能。 加速寫入會使用 Azure 進階 SSD 受控磁碟來改善 Apache HBase 提前寫入記錄 (WAL) 的效能。 若要深入瞭解 Apache HBase,請參閱 什麼是 HDInsight 中的 Apache HBase。

HBase 架構概觀

在 HBase 中,數據列是由一或多個數據所組成,並由數據列索引鍵識別。 多個數據列組成 數據表。 數據行包含 儲存格,這些儲存格是該資料行中值的時間戳版本。 數據行會分組為 數據行系列,而數據行系列中的所有數據行都會一起儲存在稱為 HFiles的記憶體檔案中。

HBase 中的區域可用來平衡數據處理負載。 HBase 會先將數據表的數據列儲存在單一區域中。 當數據表中的數據量增加時,數據列會分散到多個區域。 區域伺服器 可以處理多個區域的要求。

針對 Apache HBase 預先寫入記錄

HBase 會先將數據更新寫入至稱為「提前寫入記錄」(WAL)的認可記錄類型。 更新儲存在 WAL 之後,它會寫入記憶體 內部 MemStore。 當記憶體中的數據達到最大容量時,它會以 的形式寫入磁碟 HFile

如果 RegionServer 在排清 MemStore 之前當機或變成無法使用,則可以使用「提前寫入記錄」重新執行更新。 如果沒有 WAL,如果 RegionServer 在排清更新 HFile之前當機,則所有更新都會遺失。

適用於 Apache HBase 的 Azure HDInsight 加速寫入功能

加速寫入功能可解決使用雲端記憶體中的「提前寫入記錄」所造成的寫入延遲較高問題。 HDInsight Apache HBase 叢集的加速寫入功能,會將進階 SSD 受控磁碟連結至每個 RegionServer (背景工作節點)。 然後,寫入預先寫入記錄會寫入掛接在這些進階受控磁碟上的 Hadoop 檔案系統 (HDFS),而不是雲端記憶體。 進階版 受控磁碟使用固態硬碟(SSD),並提供絕佳的 I/O 效能與容錯能力。 與非受控磁碟不同,如果一個儲存單位關閉,它不會影響相同可用性設定組中的其他儲存單位。 因此,受控磁碟可為您的應用程式提供低寫入延遲和更佳的復原能力。 若要深入瞭解 Azure 受控磁碟,請參閱 Azure 受控磁碟簡介。

如何在 HDInsight 中啟用 HBase 的加速寫入

若要使用加速寫入功能建立新的 HBase 叢集,請遵循在 HDInsight 中設定叢集中的步驟。 在 [基本] 索引標籤上選取 [叢集類型] 作為 HBase,指定元件版本,然後按兩下 [啟用 HBase 加速寫入] 旁的複選框。 然後,繼續進行叢集建立的其餘步驟。

Enable accelerated writes option for HDInsight Apache HBase.

確認已啟用加速寫入功能

您可以使用 Azure 入口網站 來確認 HBASE 叢集上是否已啟用加速寫入功能。

  1. 在 Azure 入口網站 中搜尋您的 HBASE 叢集。
  2. 選取 [ 叢集大小] 刀鋒視窗。
  3. 將會顯示每個背景工作節點 進階版 磁碟。

調整 HBASE 叢集

若要保留數據持久性,請建立至少三個背景工作節點的叢集。 建立之後,您無法將叢集相應減少為少於三個背景工作節點。

刪除叢集之前,請先排清或停用 HBase 數據表,以免遺失 「提前寫入記錄」數據。

flush 'mytable'
disable 'mytable'

相應減少叢集時,請遵循類似的步驟:排清數據表,並停用數據表以停止傳入數據。 您無法將叢集相應減少為少於三個節點。

遵循這些步驟可確保成功相應減少,並避免名稱節點因為復寫或暫存盤不足而進入安全模式的可能性。

如果您的 namenode 在相應減少之後進入安全模式,請使用 hdfs 命令來重新復寫未復寫的區塊,並讓 hdfs 脫離安全模式。 此重新復寫可讓您成功重新啟動 HBase。

下一步