JindoFuse を使用すると、OSS-HDFS をローカルファイルシステムにマッピングし、標準の HDFS API を呼び出して OSS-HDFS 内のオブジェクトにアクセスし、オブジェクトの読み取り、書き込み、削除などの操作を実行できます。JindoFuse は、オープンソースの分散ファイルシステムへのアクセスを可能にする、POSIX 互換のツールです。JindoFuse を使用すると、AI アプリケーションはデータストレージと処理に OSS-HDFS を直接利用できます。
前提条件
バケットに対して OSS-HDFS が有効化され、OSS-HDFS へのアクセス権が付与されていること。詳細については、「OSS-HDFS の有効化」をご参照ください。
事前準備
以下のいずれかの方法で OSS-HDFS にアクセスできます。
Alibaba Cloud E-MapReduce (EMR) クラスターを使用して OSS-HDFS にアクセスする場合、バージョンが 3.44.0 以降または 5.10.0 以降の EMR クラスターが作成されていることを確認してください。これらの要件を満たす EMR クラスターには、デフォルトで JindoFuse が統合されています。詳細については、「クラスターの作成」をご参照ください。
Alibaba Cloud EMR クラスターを使用せずに OSS-HDFS にアクセスする場合、JindoSDK 4.6.2 以降がインストールおよびデプロイされていることを確認してください。詳細については、「EMR 以外のクラスターでの JindoSDK のデプロイ」をご参照ください。
操作手順
環境変数の設定
Alibaba Cloud EMR クラスターを使用して OSS-HDFS にアクセスする場合は、この手順をスキップして手順 2 に進んでください。
Alibaba Cloud EMR クラスターを使用せずに OSS-HDFS にアクセスする場合は、次の手順で JindoFuse を設定します。
ECS インスタンスに接続します。詳細については、「ECS インスタンスへの接続」をご参照ください。
環境変数の変更
この例では、
jindosdk-x.x.xはroot/パスにインストールされています。x.x.xは JindoSDK のバージョン番号を示します。JindoSDK がインストールされている実際のパスに基づいて環境変数を変更してください。export JINDOSDK_HOME=/root/jindosdk-x.x.x export HADOOP_CLASSPATH=`hadoop classpath`:${JINDOSDK_HOME}/lib/* export JINDOSDK_CONF_DIR=/root/jindosdk-x.x.x/conf export PATH=$PATH:$JINDOSDK_HOME/bin export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:${JINDOSDK_HOME}/lib/native設定ファイルの設定
JindoSDK の conf/ ディレクトリに jindosdk.cfg という名前の設定ファイルを作成します。
jindosdk.cfg 設定ファイルに以下の設定項目を追加します:
[common] logger.dir = /tmp/fuse-log [jindosdk] # 次の例では、中国 (杭州) リージョンを使用しています。実際のリージョンに置き換えてください。 fs.oss.endpoint = cn-hangzhou.oss-dls.aliyuncs.com # OSS-HDFS にアクセスするための AccessKey ID と AccessKey Secret を設定します。 fs.oss.accessKeyId = LTAI**************** fs.oss.accessKeySecret = yourAccessKeySecret
OSS-HDFS のマウント
次のコマンドを実行してマウントポイントを作成します:
mkdir -p <mount-point>次のコマンドを実行して OSS-HDFS をマウントします:
jindo-fuse <mount_point> -ouri=[<oss_path>]-ouri には、マッピングする dls パスを設定する必要があります。このパスは、バケットのルートディレクトリまたはサブディレクトリにすることができます。コマンドを実行すると、バックグラウンドでデーモンプロセスが起動し、指定した <oss_path> をローカルファイルシステムのマウントポイントにマウントします。マウントポイントは <mount_point> で指定されます。
OSS-HDFS をマウントする際に設定できるマウントオプションの詳細については、「付録2:マウントオプション」をご参照ください。
次のコマンドを実行して、OSS-HDFS がマウントされているかどうかを確認します。
ps -ef | grep jindo-fuse次の結果が返された場合、OSS-HDFS はマウントされています。
root 2162 1 0 13:21 ? 00:00:00 jindo-fuse <mount_point> -ouri=[<oss_path>] root 2714 2640 0 13:39 pts/0 00:00:00 grep --color=auto jindo-fuse
JindoFuse を使用して、OSS-HDFS のオブジェクトに対する読み書き操作を実行します。
ディレクトリの作成
mkdir /mnt/oss/dir1/mnt/oss/ ディレクトリ内のすべてのサブディレクトリを一覧表示
ls /mnt/oss/オブジェクトの書き込み
echo "hello world" > /mnt/oss/dir1/hello.txtオブジェクトの読み取り
cat /mnt/oss/dir1/hello.txtディレクトリの削除
rm -rf /mnt/oss/dir1/
任意。OSS-HDFS をアンマウントします。
以下のいずれかの方法で OSS-HDFS をアンマウントできます。
OSS-HDFS の手動アンマウント
umount <mount_point>OSS-HDFS の自動アンマウント
-oauto_unmount前述のコマンドを実行して jindo-fuse プロセスに SIGINT を送信するには、
killall -9 jindo-fuseを使用できます。OSS-HDFS は、プロセスが終了する前に自動的にアンマウントされます。
よくある質問
JindoFuse エラーのトラブルシューティング
JindoSDK を使用して API を呼び出す場合、エラーが発生した際にエラーメッセージの詳細を確認できます。JindoFuse を使用する場合、OS 標準のエラーメッセージしか表示されません。
ls: /mnt/oss/: Input/output errorエラーの原因を特定するには、JindoSDK の logger.dir 設定項目で指定されたパスにある jindosdk.log ファイルを見つける必要があります。次のメッセージは、JindoFuse を使用するときに表示される可能性がある一般的な認証エラーメッセージです。
EMMDD HH:mm:ss jindofs_connectivity.cpp:13] Please check your Endpoint/Bucket/RoleArn.
Failed test connectivity, operation: mkdir, errMsg: [RequestId]: 618B8183343EA53531C62B74 [HostId]: oss-cn-shanghai-internal.aliyuncs.com [ErrorMessage]: [E1010]HTTP/1.1 403 Forbidden ...上記のエラーメッセージが表示された場合は、エンドポイント、バケット、ロール ARN が正しく設定されているか確認してください。詳細については、「クイックスタート:EMR 以外のクラスターを OSS-HDFS サービスに接続する」をご参照ください。
プログラミングエラーが発生した場合は、チケットを送信してテクニカルサポートにお問い合わせください。