本文針對 Azure HDInsight 中適用於 Apache HBase 的加速寫入功能提供背景資訊,並說明如何有效使用此功能提升寫入效能。 加速寫入功能會使用 Azure 進階 SSD 受控磁碟提升 Apache HBase 預寫記錄檔 (WAL) 的效能。 如需 Apache HBase 的詳細資訊,請參閱什麼是 Azure HDInsight 中的 Apache HBase。
HBase 結構概觀
在 HBase 中,資料列由一或多個資料行組成,可透過資料列索引鍵識別; 多個資料列即可組成資料表。 資料行中包含儲存格,是該資料行中的值所具有的各個時間戳記版本。 資料行會分組為資料行系列,資料行系列中的所有資料行都會一起儲存在名為 HFiles
的儲存體檔案中。
HBase 中的區域用於平衡資料處理負載。 HBase 會先將資料表的資料列儲存在單一區域中; 隨著資料表中的資料量增加,資料列會分散到多個區域。 區域伺服器可以處理多個區域的要求。
Apache HBase 預寫記錄檔
HBase 會先將資料更新寫入一種稱為「預寫記錄檔 (WAL)」的認可記錄, 待更新儲存至 WAL 後,再寫入記憶體內部 MemStore。 當記憶體中的資料達到最大容量時,會以 HFile
的形式寫入磁碟。
若 RegionServer 在 MemStore 排清之前損毀或變得無法使用,預寫記錄檔便可用於重新執行更新。 在不使用 WAL 的情況下,如果 RegionServer 在排清更新至 HFile
之前損毀,則所有更新都會遺失。
Azure HDInsight 中適用於 Apache HBase 的加速寫入功能
加速寫入功能可解決因使用雲端儲存空間中的預寫記錄檔而導致寫入延遲較高的問題。 HDInsight Apache HBase 叢集的加速寫入功能會將進階 SSD 受控磁碟連結至每個 RegionServer (背景工作節點), 接著預寫記錄檔會寫入裝載於這些進階受控磁碟 (而非雲端儲存空間) 的 Hadoop 檔案系統 (HDFS)。 進階受控磁碟使用固態硬碟 (SSD),可提供傑出的 I/O 效能與容錯能力, 而且與非受控磁碟不同,即使一個儲存體單位關閉,也不會對同一個可用性設定組中的其他儲存體單位造成影響。 因此,受控磁碟能為您的應用程式提供低寫入延遲和更佳的復原能力。 如需受控磁碟的詳細資訊,請參閱 Azure 受控磁碟簡介。
如何在 HDInsight 中啟用適用於 HBase 的加速寫入
如想使用加速寫入功能建立新的 HBase 叢集,請按照在 HDInsight 中設定叢集一文中所列的步驟操作。 在 [基本] 索引標籤上選取 [HBase] 作為叢集類別,然後指定元件版本並按一下 [啟用 HBase 加速寫入] 旁的核取方塊。 接著,繼續執行建立叢集的其餘步驟。
確認已啟用加速寫入功能
您可以使用 Azure 入口網站來確認 HBASE 叢集上是否已啟用加速寫入功能。
- 在 Azure 入口網站中搜尋您的 HBASE 叢集。
- 選取 [叢集大小] 刀鋒視窗。
- 每個背景工作角色節點進階磁碟會顯示出來。
調整 HBASE 叢集
若要保留資料持久性,請建立至少有三個背景工作節點的叢集。 叢集一旦建立,便無法再縮小到三個背景工作節點以下。
刪除叢集前請先排清或停用 HBase 資料表,以免預寫記錄檔資料遺失。
flush 'mytable'
disable 'mytable'
縮小叢集時,請按照類似步驟操作:排清並停用資料表以停止傳入資料。 您無法將叢集縮小到三個節點以下。
遵循這些步驟可確保能成功縮小叢集,並避免 NameNode 可能因複寫不足或暫存的檔案而進入安全模式。
如果您的 NameNode 在叢集縮小後進入安全模式,請使用 hdfs 命令對複寫不足的區塊進行重新複寫,讓 hdfs 脫離安全模式。 重新複寫能協助您順利重新啟動 HBase。
下一步
- 預寫記錄檔功能 (英文) 的 Apache HBase 官方文件
- 如想升級 HDInsight Apache HBase 叢集以便使用加速寫入,請參閱將 Apache HBase 叢集移轉至新版本。