使用JindoFS作為HBase的底層儲存
更新時間:
Copy as MD
本文為您介紹如何使用JindoFS作為HBase的底層儲存。
背景資訊
HBase是Hadoop生態中的即時資料庫,有很高的寫入效能,E-MapReduce HBase支援使用JindoFS或OSS作為底層儲存,相對於HDFS儲存,使用更加靈活。
說明 建議您使用EMR-3.36.0及後續版本的叢集。
JindoFS配置
以EMR-3.36.0版本為例,建立名為emr-jfs的命名空間,Bucket名稱為oss-bucket,相關配置參數樣本如下:
- jfs.namespaces=emr-jfs
- jfs.namespaces.emr-jfs.oss.uri=oss://<oss-bucket>/oss-dir
- jfs.namespaces.emr-jfs.mode=block
指定HBase的儲存路徑
指定HBase的儲存路徑,是需要修改hbase-site設定檔中的參數hbase.rootdir的值為JindoFS或OSS地址,修改參數hbase.wal.dir的值為本地的HDFS地址,通過本地HDFS叢集儲存WAL檔案。如果要釋放叢集,需要先Disable table,確保WAL檔案已經完全更新到HFile。
| 參數 | 描述 |
| hbase.rootdir | 指定HBase的ROOT儲存目錄到JindoFS或OSS。 參數值為jfs://emr-jfs/hbase-root-dir。
說明 參數值中的emr-jfs為您配置的命名空間。 |
| hbase.wal.dir | 指定HBase的WAL儲存目錄到本地HDFS叢集。 參數值為:
|
建立叢集
在建立叢集時,添加軟體自訂配置,建立叢集詳情請參見建立叢集。選擇產品版本為 EMR-3.36.0,在進階設定地區開啟軟體自訂配置開關,在 JSON 文字框中填寫 SMARTDATA 服務的配置項,將
ConfigValue 設定為 emr-jfs。以JindoFS作為HBase後端為例,需要替換
oss_bucket及對應路徑,自訂配置如下。[
{
"ServiceName":"SMARTDATA",
"FileName":"namespace",
"ConfigKey":"jfs.namespaces",
"ConfigValue":"emr-jfs"
},
{
"ServiceName":"SMARTDATA",
"FileName":"namespace",
"ConfigKey":"jfs.namespaces.emr-jfs.oss.uri",
"ConfigValue":"oss://oss-bucket/jindoFS"
},
{
"ServiceName":"SMARTDATA",
"FileName":"namespace",
"ConfigKey":"jfs.namespaces.emr-jfs.mode",
"ConfigValue":"block"
},
{
"ServiceName":"HBASE",
"FileName":"hbase-site",
"ConfigKey":"hbase.rootdir",
"ConfigValue":"jfs://emr-jfs/hbase-root-dir"
},
{
"ServiceName":"HBASE",
"FileName":"hbase-site",
"ConfigKey":"hbase.wal.dir",
"ConfigValue":"hdfs://emr-cluster/hbase"
}
]常見問題
- 問題現象:MapReduce程式使用TableSnapshotInputFormat讀取Hbase資料時,報錯資訊如下。
java.lang.IllegalArgumentException: Wrong FS: jfs://emr-jfs/tmp/..., expected: hdfs://emr-header-1.cluster-*:9000 at org.apache.hadoop.fs.FileSYstem.checkPath(FileSystem.java:666) at org.apache.hadoop.hbase.regionServer.HRegionFileSystem.createRegionOnFileSystem(HRegionFileSYstem.java:875) - 問題分析:因為HBase提供的開源MapReduce程式存在缺陷,所以會校正HBase的資料路徑跟HDFS中fs.defaultFS路徑是否一致。
- 解決方案:
- 使用ExportSnapshot可以正常讀取並匯出Hbase資料。
- 使用TableSnapshotInputFormat讀取Hbase資料時,需要您在阿里雲E-MapReduce控制台,HDFS服務的配置頁面,在core-site頁簽,修改fs.defaultFS的參數值為jfs首碼的根目錄。例如,修改fs.defaultFS的參數值為上述步驟中配置的jfs://emr-jfs/。
该文章对您有帮助吗?