このトピックでは、JindoFS を HBase のストレージバックエンドとして使用する方法について説明します。
背景情報
HBase は Hadoop エコシステムのリアルタイムデータベースであり、高い書き込みパフォーマンスを提供します。E-MapReduce(EMR)では、JindoFS またはオブジェクトストレージサービス(OSS)を HBase のストレージバックエンドとして使用できます。 JindoFS と OSS は HDFS よりも柔軟性があります。
説明 V3.36.0 以降の EMR クラスタを使用することをお勧めします。
JindoFS の構成
このトピックの例では、emr-jfs という名前のネームスペースが EMR V3.36.0 クラスタ用に作成され、oss-bucket という名前の OSS バケットがネームスペース用に構成されています。
- jfs.namespaces=emr-jfs
- jfs.namespaces.emr-jfs.oss.uri=oss://<oss-bucket>/oss-dir
- jfs.namespaces.emr-jfs.mode=block
HBase のストレージパスの指定
HBase のストレージパスを指定するには、[hbase.rootdir] パラメータを [hbase-site] 構成ファイルで JindoFS または OSS パスに設定し、[hbase.wal.dir] パラメータをファイル内のローカル HDFS パスに設定する必要があります。このようにして、EMR クラスタの HDFS サービスは、Write-Ahead Logging(WAL)ファイルの保存に使用されます。クラスタをリリースするには、クラスタ内のテーブルを無効にし、WAL ファイルの更新が HFile に書き込まれていることを確認する必要があります。
| パラメータ | 説明 |
| hbase.rootdir | JindoFS または OSS 内の HBase のルートディレクトリ。 jfs://emr-jfs/hbase-root-dir に設定します。 説明 emr-jfs は構成したネームスペースです。 |
| hbase.wal.dir | HBase の WAL ファイルが保存されるローカル HDFS パス。 値:
|
クラスタの作成
クラスタを作成する場合は、カスタムソフトウェア設定をオンにし、カスタムソフトウェア構成を追加します。クラスタの作成方法の詳細については、「クラスタの作成」をご参照ください。

たとえば、JindoFS を HBase のストレージバックエンドとして使用するには、次のカスタム構成を追加します。
oss_bucket と OSS パスは、実際の OSS バケット名と OSS パスに置き換える必要があります。[
{
"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" // OSS バケット名とパスを指定します
},
{
"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"
}
]FAQ
- 問題の説明: 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) // HBase データパスが fs.defaultFS と一致するかどうかを確認します at org.apache.hadoop.hbase.regionServer.HRegionFileSystem.createRegionOnFileSystem(HRegionFileSYstem.java:875) - 原因: HBase に基づいて開発されたオープンソースの MapReduce プログラムに欠陥があります。プログラムがデータを読み取るときに、HBase のデータパスが HDFS の fs.defaultFS パラメータで指定されたパスと同じかどうかを確認します。パスが一致しないため、エラーが返されます。
- 解決策:
- ExportSnapshot を使用して HBase データを読み取り、エクスポートできます。
- TableSnapshotInputFormat を使用して HBase データを読み取る場合は、Alibaba Cloud EMR コンソール のクラスタの HDFS サービスページに移動し、[構成] タブをクリックする必要があります。次に、[サービス構成] セクションの [core-site] タブの [fs.defaultfs] パラメータの値を、プレフィックスが jfs のルートディレクトリに変更します。たとえば、[fs.defaultfs] パラメータの値を、このトピックのサンプルコードで構成されている [jfs://emr-jfs/] に変更できます。
