OSS-HDFS をローカルファイルシステムにマップし、標準 HDFS API を呼び出して OSS-HDFS 内のオブジェクトにアクセスし、オブジェクトの読み取り、書き込み、削除などの操作を実行する場合、JindoFuse を使用して OSS-HDFS にアクセスできます。 JindoFuse は、オープンソースの分散ファイルシステムへのアクセスを可能にするツールであり、POSIX と互換性があります。 JindoFuse を使用すると、AI アプリケーションは OSS-HDFS をデータストレージと処理に直接使用できます。
前提条件
OSS-HDFS がバケットで有効になっており、OSS-HDFS にアクセスするための権限が付与されています。 詳細については、「OSS-HDFS を有効にする」をご参照ください。
準備
次のいずれかの方法を使用して OSS-HDFS にアクセスできます。
Alibaba Cloud 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 インスタンスに接続します。 詳細については、「インスタンスに接続する」をご参照ください。
環境変数を変更します。
この例では、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上記のコマンドを実行して、
killall -9 jindo-fuseを使用して jindo-fuse プロセスに SIGINT を送信できます。 OSS-HDFS は、プロセスが終了する前に自動的にマウント解除されます。
FAQ
JindoFuse エラーのトラブルシューティング方法は?
JindoSDK を使用して API 操作を呼び出す場合、エラーが報告されたときにエラーメッセージの詳細を表示できます。 JindoFuse を使用する場合、オペレーティングシステムのプリセットエラーメッセージのみを表示できます。
ls: /mnt/oss/: 入出力エラーエラーの原因を特定するには、JindoSDK の logger.dir 設定項目で指定されたパスにある jindosdk.log ファイルを見つける必要があります。 次のメッセージは、JindoFuse を使用するときに表示される可能性のある一般的な認証エラーメッセージです。
EMMDD HH:mm:ss jindofs_connectivity.cpp:13] エンドポイント/バケット/ロール ARN を確認してください。
接続テストに失敗しました。操作: mkdir、エラーメッセージ: [リクエスト ID]: 618B8183343EA53531C62B74 [ホスト ID]: oss-cn-shanghai-internal.aliyuncs.com [エラーメッセージ]: [E1010]HTTP/1.1 403 Forbidden ...上記のエラーメッセージが表示された場合は、エンドポイント、バケット、およびロール ARN が正しく構成されているかどうかを確認してください。 詳細については、「EMR 以外のクラスタを OSS-HDFS に接続する」をご参照ください。
プログラムエラーが発生した場合は、チケットを送信 してください。