JindoFuse は、OSS-HDFS をローカルディレクトリとしてマウントし、POSIX 互換のインターフェイスを介して公開します。Hadoop ジョブ、Spark パイプライン、AI トレーニングワークロードなど、標準のファイルシステムコールに依存するアプリケーションは、コードを変更することなく OSS-HDFS への読み書きができます。
利用シーン
AI と機械学習:OSS-HDFS をトレーニングノードにマウントし、ローカルファイルシステムのパスを介して直接データセットをロードしたり、モデルのチェックポイントを保存したりします。
ビッグデータ分析:標準の HDFS API 呼び出しを使用して、OSS-HDFS に対して Hadoop および Spark ジョブを実行します。
POSIX アプリケーションの移行:ローカルファイルシステムのセマンティクスに依存するワークロードを、アプリケーションコードを変更せずに OSS-HDFS に移行します。
制限事項
JindoFuse は幅広い POSIX カバー率を提供しますが、一部の動作はローカルファイルシステムとは異なります。
シンボリックリンク:OSS-HDFS でのみ利用可能です。キャッシュアクセラレーションはサポートしていません。
サポートされているすべての POSIX 操作については、「付録1:サポートされる操作」をご参照ください。
前提条件
開始する前に、次のことを確認してください。
ご利用のバケットで OSS-HDFS が有効になっており、必要なアクセス権限が付与されていること。詳細については、「OSS-HDFS の有効化」をご参照ください。
次のいずれかの環境が準備できていること。
Alibaba Cloud EMR クラスター (バージョン 3.44.0 以降、または 5.10.0 以降):JindoFuse はプリインストール済みです。詳細については、「クラスターの作成」をご参照ください。
EMR 以外の環境:JindoSDK 4.6.2 以降がインストールおよびデプロイされていること。詳細については、「EMR 以外の環境での JindoSDK のデプロイ」をご参照ください。
JindoFuse の設定 (EMR 以外の環境のみ)
EMR クラスターをご利用の場合は、このセクションをスキップしてください。EMR クラスターには JindoFuse がプリインストールおよび設定済みです。
ECS インスタンスに接続します。詳細については、「インスタンスに接続する」をご参照ください。
以下の環境変数を設定します。
x.x.xをご使用の 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 が
/root/jindosdk-x.x.xにインストールされていることを前提としています。実際のインストールディレクトリに合わせてパスを調整してください。JindoSDK のインストール先の
conf/ディレクトリに、jindosdk.cfgという名前の構成ファイルを作成し、以下の内容を追加します:プレースホルダー 説明 例 <region-id>ご利用の OSS-HDFS バケットが配置されているリージョン cn-hangzhou<your-access-key-id>ご利用の AccessKey ID LTAI****************<your-access-key-secret>ご利用の AccessKey Secret — [common] logger.dir = /tmp/fuse-log [jindosdk] fs.oss.endpoint = <region-id>.oss-dls.aliyuncs.com fs.oss.accessKeyId = <your-access-key-id> fs.oss.accessKeySecret = <your-access-key-secret>プレースホルダーを実際の値に置き換えてください。
OSS-HDFS のマウント
マウントポイントとして使用するローカルディレクトリを作成します。
mkdir -p <mount-point>OSS-HDFS をマウントします。
パラメーター 説明 例 <mount-point>OSS-HDFS がマウントされるローカルディレクトリ /mnt/oss-ouriマップする dls パス。バケットのルートまたはサブディレクトリを使用します。 -ouri=oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/jindo-fuse <mount-point> -ouri=<oss-path>コマンドを実行すると、デーモンプロセスがバックグラウンドで指定された OSS-HDFS パスをローカルのマウントポイントにマウントします。追加のマウントオプションについては、「付録2:マウントオプション」をご参照ください。
JindoFuse プロセスが実行中であることを確認して、マウントを検証します。
ps -ef | grep jindo-fuse期待される出力:
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最初の行が表示されれば、OSS-HDFS は正常にマウントされています。
ファイルの読み書き
マウント後、標準のファイルシステムコマンドを使用して、マウントポイント経由で OSS-HDFS と対話します。
# ディレクトリを作成
mkdir /mnt/oss/dir1
# ディレクトリの内容を一覧表示
ls /mnt/oss/
# ファイルを書き込む
echo "hello world" > /mnt/oss/dir1/hello.txt
# ファイルを読み取る
cat /mnt/oss/dir1/hello.txt
# ディレクトリを削除
rm -rf /mnt/oss/dir1/OSS-HDFS のアンマウント
次のいずれかの方法を選択します。
手動アンマウント:
umount <mount-point>を実行します。プロセス終了時の自動アンマウント: マウント時に
-oauto_unmountオプションを指定します。killall -9 jindo-fuseが JindoFuse プロセスに SIGINT を送信すると、プロセス終了前に OSS-HDFS が自動的にアンマウントされます。
トラブルシューティング
JindoFuse での I/O エラー
JindoFuse でエラーが発生すると、オペレーティングシステムは次のような一般的なメッセージを返します。
ls: /mnt/oss/: Input/output error根本原因を特定するには、jindosdk.log を、logger.dir 設定項目で指定されたディレクトリ内で確認してください。
一般的な原因は、認証または接続性の問題です。次のようなエラーを探してください。
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 への接続」をご参照ください。
その他のエラーについては、チケットを送信してください。