OSS-HDFS サービス (JindoFS サービスとしても知られています) は、Hadoop 分散ファイルシステム (HDFS) インターフェイスと完全に互換性があり、ディレクトリレベルの操作をサポートしています。 Jindo ソフトウェア開発キット (SDK) を使用すると、MapReduce、Hive、Spark、Flink などの Apache Hadoop コンピューティングおよび分析アプリケーションが OSS-HDFS サービスにアクセスできます。 このトピックでは、Elastic Compute Service (ECS) インスタンスに JindoSDK をデプロイし、一般的な操作を実行して OSS-HDFS サービスの使用を開始する方法について説明します。
Alibaba Cloud E-MapReduce (EMR) クラスターを使用している場合は、EMR クラスターから OSS-HDFS サービスに接続します。 詳細については、「EMR クラスターから OSS-HDFS サービスに接続するためのクイックスタート」をご参照ください。
前提条件
デフォルトでは、Alibaba Cloud アカウントは、EMR 以外のクラスターから OSS-HDFS サービスに接続し、一般的な操作を実行する権限を持っています。 Resource Access Management (RAM) ユーザーを使用する場合は、その RAM ユーザーに必要な権限が付与されている必要があります。 詳細については、「EMR 以外のクラスターから OSS-HDFS サービスに接続するための権限を RAM ユーザーに付与」をご参照ください。
例えば、デプロイメント環境が Alibaba Cloud ECS の場合、ECS インスタンスを購入する必要があります。
Hadoop 環境が作成されていること。詳細については、「Hadoop ランタイム環境の作成」をご参照ください。
バケットで OSS-HDFS サービスが有効になっており、そのバケットへのアクセスが承認されていること。 詳細については、「OSS-HDFS サービスの有効化」をご参照ください。
操作手順
ECS インスタンスに接続します。詳細については、「ECS インスタンスへの接続」をご参照ください。
JindoSDK JAR パッケージをダウンロードして解凍します。 ダウンロードリンクについては、GitHub をご参照ください。
次のコマンドを実行して、JindoSDK JAR パッケージを解凍します。
次の例では、
jindosdk-x.x.x-linux.tar.gzを解凍する方法を示します。 異なるバージョンの JindoSDK を使用する場合は、JAR パッケージ名を実際のパッケージ名に置き換えてください。tar zxvf jindosdk-x.x.x-linux.tar.gz説明x.x.x は JindoSDK JAR パッケージのバージョン番号を示します。
環境変数を設定します。
JINDOSDK_HOMEを設定します。この例では、パッケージは /usr/lib/jindosdk-x.x.x-linux ディレクトリに解凍されます。
export JINDOSDK_HOME=/usr/lib/jindosdk-x.x.x-linuxHADOOP_CLASSPATHを設定します。export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:${JINDOSDK_HOME}/lib/*重要インストールディレクトリをデプロイし、必要なすべてのノードで環境変数を設定します。
OSS-HDFS サービスの実装クラスと AccessKey を設定します。
次のコマンドを実行して、Hadoop の core-site.xml 設定ファイルを開きます。
vim /usr/local/hadoop/etc/hadoop/core-site.xmlcore-site.xml ファイルで、JindoSDK DLS 実装クラスを設定します。
<configuration> <property> <name>fs.AbstractFileSystem.oss.impl</name> <value>com.aliyun.jindodata.oss.JindoOSS</value> </property> <property> <name>fs.oss.impl</name> <value>com.aliyun.jindodata.oss.JindoOssFileSystem</value> </property> </configuration>core-site.xml ファイルで、ご利用の Alibaba Cloud アカウントまたは必要な権限を持つ RAM ユーザーの AccessKey ペアを設定します。
このシナリオで RAM ユーザーに必要な権限の詳細については、「EMR 以外のクラスターから OSS-HDFS サービスに接続するための権限を RAM ユーザーに付与」をご参照ください。
<configuration> <property> <name>fs.oss.accessKeyId</name> <value>xxx</value> </property> <property> <name>fs.oss.accessKeySecret</name> <value>xxx</value> </property> </configuration>
OSS-HDFS サービスのエンドポイントを設定します。
OSS バケットにアクセスするには、エンドポイントを設定する必要があります。 次のパス形式を使用します:
oss://<Bucket>.<Endpoint>/<Object>。 例:oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/exampleobject.txt。 JindoSDK は、アクセスパス内のエンドポイントを使用して、対応する OSS-HDFS サービスの API にアクセスします。HDFS シェルコマンドを使用して、OSS-HDFS サービスで一般的な操作を実行します。
ファイルのアップロード
次の例は、ローカルのルートディレクトリから examplebucket に examplefile.txt ファイルをアップロードする方法を示しています。
hdfs dfs -put examplefile.txt oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/ファイルのダウンロード
次の例は、examplebucket からローカルの /tmp ディレクトリに exampleobject.txt ファイルをダウンロードする方法を示しています。
hdfs dfs -get oss://examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/exampleobject.txt /tmp/
その他の操作の詳細については、「Hadoop シェルコマンドを使用した OSS-HDFS サービスへのアクセス」をご参照ください。