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上存儲的數據。