E-MapReduce控制台的DataServing類型的叢集支援儲存資料在OSS-HDFS上(WAL資料存放區在HDFS上)。本文為您介紹如何使用OSS-HDFS作為HBase的底層儲存。
背景資訊
OSS-HDFS服務是一款雲原生資料湖儲存產品,基於統一的中繼資料管理能力,在完全相容HDFS檔案系統介面的同時,提供充分的POSIX能力,能更好的滿足巨量資料和AI領域豐富多樣的資料湖計算情境,詳情請參見什麼是OSS-HDFS服務。
HBase on OSS-HDFS的架構如下圖所示。
使用限制
僅EMR-3.42及後續版本或EMR-5.8.0及後續版本的DataServing類型的叢集支援該功能。
操作步驟
開通並授權訪問OSS-HDFS服務,具體操作請參見開通並授權訪問OSS-HDFS服務。
擷取OSS-HDFS服務網域名稱。
在OSS管理主控台的概覽頁面,複製OSS-HDFS服務的網域名稱,以便後續建立EMR-HBase時使用該網域名稱作為hbase.rootdir路徑。
使用OSS-HDFS。
建立DataServing叢集,詳情請參見建立叢集。
建立叢集DataServing時:
可選服務:除JINDODTA和PHOENIX服務外,其他服務必選。
HBase儲存模式:選擇OSS-HDFS。
Root目錄:填寫一個開啟了HDFS服務的OSS Bucket。填寫格式為oss://${OSS-HDFS服務的網域名稱}/${dir}。例如,oss://test_bucket.cn-hangzhou.oss-dls.aliyuncs.com/hbase。
說明需要替換的參數:
${OSS-HDFS服務的網域名稱}:您在步驟2中擷取到的HDFS服務網域名稱。
${dir}:HBase的根目錄。
建立HBase表。
登入DataServing叢集,詳情請參見登入叢集。
執行以下命令,進入HBase Shell。
hbase shell
執行以下命令,建立一個名稱為bar,列族名為f的測試表。
create 'bar','f'
建立完成後,您可以通過
list
命令查看下。例如,返回如下資訊。
TABLE bar 1 row(s) Took 0.0138 seconds
退出HBase Shell後,執行以下命令驗證表資料。
命令格式如下。
hadoop fs -ls oss://${OSS-HDFS服務的網域名稱}/{dir}
例如,執行以下命令。
hadoop fs -ls oss://test_bucket.cn-hangzhou.oss-dls.aliyuncs.com/hbase/data/default
返回如下資訊時,表示對應的HBase表目錄已經在OSS-HDFS上建立。
Found 1 items drwxrwxrwx - hbase supergroup 0 2022-07-28 14:45 oss://test_bucket.cn-hangzhou.oss-dls.aliyuncs.com/hbase/data/default/bar
可選:銷毀並恢複叢集。
EMR HBase的資料存放區到OSS-HDFS後,可以銷毀舊叢集,並從OSS-HDFS目錄拉起新的叢集。
重要新建立叢集和銷毀叢集的HBase版本必須一致,否則拉起的新叢集可能存在無法預估的相容性等問題,導致叢集不可用。
同一個OSS-HDFS資料目錄不能為多個HBase叢集同時使用,否則如果出現同時寫,可能會導致HBase中繼資料或資料不一致,出現叢集停用情況。
登入DataServing叢集,詳情請參見登入叢集。
執行以下命令,進入HBase Shell。
hbase shell
執行以下命令,通過flush操作來確保記憶體中所有表的資料都已經重新整理到HFile。
flush 'bar'
執行以下命令,禁用相關的表,避免寫入新的資料。
disable 'bar'
重新建立一個和舊叢集HBase版本相同的叢集,並指定和舊叢集相同的OSS-HDFS目錄作為新叢集的資料存放區目錄。
建立成功後,即通過OSS-HDFS恢複了一個新HBase叢集,您可以繼續使用OSS-HDFS上儲存的資料。