このトピックでは、Portable Operating System Interface(POSIX)コマンドを使用して Object Storage Service(OSS)または OSS-HDFS にアクセスする方法について説明します。
環境の準備
- E-MapReduce(EMR)環境では、JindoSDK がデフォルトでインストールされており、直接使用できます。説明 OSS-HDFS にアクセスするには、EMR V3.42.0 以降のマイナーバージョンのクラスター、または EMR V5.8.0 以降のマイナーバージョンのクラスターを作成する必要があります。
- EMR 以外の環境では、最初に JindoSDK をインストールします。 詳細については、EMR 以外の環境への JindoSDK のデプロイ をご参照ください。説明 OSS-HDFS にアクセスするには、JindoSDK V4.X 以降をインストールする必要があります。
必要な依存関係のインストール
説明 デフォルトでは、次のクラスターに必要な依存関係がインストールされています。
- EMR V3.44.0 以降のマイナーバージョンのクラスター、または EMR V5.10.0 以降のマイナーバージョンのクラスター
- JindoSDK V4.6.2 以降がデプロイされているクラスター
- クラスターで JindoSDK 4.5.0 以前を使用している場合は、次の依存関係をインストールする必要があります。
# CentOS sudo yum install -y fuse3 fuse3-devel # Debian sudo apt install -y fuse3 libfuse3-dev - クラスターで JindoSDK 4.5.1 以降を使用している場合は、libfuse 3.7 以降をインストールする必要があります。
たとえば、次のコマンドを実行して fuse-3.11 をインストールします。
# build fuse required meson & ninja, for debian: apt install -y pkg-config meson ninja-build sudo yum install -y meson ninja-build # compile fuse required newer g++ (only CentOS) sudo yum install -y scl-utils sudo yum install -y alinux-release-experimentals sudo yum install -y devtoolset-8-gcc devtoolset-8-gdb devtoolset-8-binutils devtoolset-8-make devtoolset-8-gcc-c++ sudo su -c "echo 'source /opt/rh/devtoolset-8/enable' > /etc/profile.d/g++.sh" source /opt/rh/devtoolset-8/enable sudo ln -s /opt/rh/devtoolset-8/root/bin/gcc /usr/local/bin/gcc sudo ln -s /opt/rh/devtoolset-8/root/bin/g++ /usr/local/bin/g++ # compile & install libfuse wget https://github.com/libfuse/libfuse/releases/download/fuse-3.11.0/fuse-3.11.0.tar.xz xz -d fuse-3.11.0.tar.xz tar xf fuse-3.11.0.tar cd fuse-3.11.0/ mkdir build; cd build meson .. sudo ninja install
JindoFuse のマウント
JindoSDK を構成した後、次の操作を実行して JindoFuse をマウントできます。
- 次のコマンドを実行して、マウントポイントを作成します。
sudo mkdir -p <mountpoint> - 次のコマンドを実行して、JindoFuse をマウントします。
jindo-fuse <mount_point> -ouri=[<osspath>]コマンドを実行すると、バックグラウンドでデーモンプロセスが開始され、指定された OSS または OSS-HDFS パスがローカルファイルシステムの指定されたマウントポイントにマウントされます。
<mount_point>の値をローカルパスに置き換えます。<oss_path>の値をマップする OSS または OSS-HDFS パスに置き換えます。パスは、OSS または OSS-HDFS バケットのルートディレクトリまたはサブディレクトリにすることができます。例:oss://examplebucket.cn-shanghai.oss-dls.aliyuncs.com/subdir/。説明 OSS パスと OSS-HDFS パスのマウント方法は基本的に同じです。パス内のエンドポイントだけが異なります。 詳細については、パスの説明 をご参照ください。 - 次のコマンドを実行して、JindoFuse がマウントされているかどうかを確認します。
jindo-fuse プロセスが実行中で、起動パラメーターが想定どおりであれば、JindoFuse はマウントされています。ps -ef | grep jindo-fuse
JindoFuse へのアクセス
JindoFS がローカルパス /mnt/oss/ にマウントされている場合は、次の操作を実行して JindoFuse にアクセスします。
- 次のコマンドを実行して、/mnt/oss/ パスにあるすべてのディレクトリを表示します。
ls /mnt/oss/ - 次のコマンドを実行して、dir1 という名前のディレクトリを作成し、ディレクトリを表示します。
mkdir /mnt/oss/dir1 ls /mnt/oss/ - 次のコマンドを実行して、hello.txt という名前のファイルにデータを書き込みます。
echo "hello world" > /mnt/oss/dir1/hello.txt - 次のコマンドを実行して、hello.txt ファイルからデータを読み取ります。
cat /mnt/oss/dir1/hello.txthello worldが表示されます。 - 次のコマンドを実行して、dir1 ディレクトリを削除します。
rm -rf /mnt/oss/dir1/
JindoFuse の手動アンインストール
次のコマンドを実行して、マウントポイントをアンマウントします。
umount <mount_point>JindoFuse の自動アンインストール
-oauto_unmount パラメーターを使用すると、マウントポイントを自動的にアンマウントできます。
このパラメーターを使用する場合は、killall -9 jindo-fuse コマンドを実行して、jindo-fuse プロセスに SIGINT シグナルを送信できます。プロセスが終了する前に、マウントポイントは自動的にアンマウントされます。