OSS-HDFS (JindoFS) は、Hadoop分散ファイルシステム (HDFS) API操作と完全に互換性があり、ディレクトリレベルの操作をサポートします。 JindoSDKでは、MapReduce、Hive、Spark、FlinkなどのApache Hadoopベースのコンピューティングおよび分析アプリケーションがHDFSにアクセスできます。 このトピックでは、Elastic Compute Service (ECS) インスタンスにJindoSDKをデプロイし、OSS-HDFSに関連する一般的な操作を実行する方法について説明します。
Alibaba Cloud E-MapReduce (EMR) クラスターを使用する場合、「EMRクラスターをOSS-HDFSに接続する」で説明されている方法を使用して、EMRクラスターをOSS-HDFSに接続します。
前提条件
デフォルトでは、Alibaba Cloudアカウントには、EMR以外のクラスターをOSS-HDFSに接続し、OSS-HDFSに関連する一般的な操作を実行する権限があります。 必要な権限が付与されたAlibaba CloudアカウントまたはRAMユーザーが作成されます。 RAMユーザーを使用して非EMRクラスターをOSS-HDFSに接続する場合、RAMユーザーに必要な権限が必要です。
ECS インスタンスを作成済み。 詳細については、「インスタンスの作成」をご参照ください。
Hadoop環境が作成されます。 Hadoopのインストール方法の詳細については、「手順2: Hadoopランタイム環境の作成」をご参照ください。
バケットのOSS-HDFSが有効になり、RAMロールにアクセスする権限が付与されOSS-HDFS。 詳細については、「OSS-HDFSの有効化とアクセス許可の付与」をご参照ください。
ビデオチュートリアル
次のビデオでは、非EMRクラスターをOSS-HDFSに接続し、一般的な操作を実行する方法の例を示します。
手順
ECS インスタンスに接続します。 詳細については、「インスタンスへの接続」をご参照ください。
JindoSDK JARパッケージをダウンロードして解凍します。 JindoSDKをダウンロードするには、 GitHubを実行します。
次のコマンドを実行して、JindoSDK JARパッケージを解凍します。
次のサンプルコードは、
jindosdk-x.x.x-linux.tar.gz
という名前のJindoSDK JARパッケージを解凍する方法の例を示しています。 別のバージョンのJindoSDKを使用する場合は、パッケージ名を対応する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-linux
設定
HADOOP_CLASSPATH
.export HADOOP_CLASSPATH=$HADOOP_CLASSPATH:${JINDOSDK_HOME}/lib/*
重要パッケージのインストールディレクトリを指定し、必要なすべてのノードに環境変数を設定します。
バケットの実装クラスを設定し、OSS-HDFSへのアクセスに使用するAccessKeyペアを指定します。
次のコマンドを実行して、core-site.xmlという名前のHadoop構成ファイルに移動します。
vim /usr/local/hadoop/etc/hadoop/core-site.xml
core-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ペアを設定します。
<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-HDFSを使用してOSSバケットにアクセスする場合は、OSS-HDFSのエンドポイントを指定する必要があります。
oss://<Bucket>.<Endpoint>/<Object>
の形式でアクセスパスを設定することを推奨します。 例:oss:// examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/exampleobject.txt
アクセスパスを設定した後、JindoSDKはアクセスパスで指定されたエンドポイントに基づいて対応するOSS-HDFS操作を呼び出します。他の方法を使用してOSS-HDFSのエンドポイントを設定することもできます。 異なる方法を使用して構成されたエンドポイントの優先度は異なります。 詳細については、「付録1: OSS-HDFSのエンドポイントの設定に使用されるその他の方法」をご参照ください。
HDFS Shellコマンドを実行して、OSS-HDFSに関連する一般的な操作を実行します。
ローカルファイルをオブジェクトグループにアップロードします。
次のコマンドを実行して、ローカルルートディレクトリにあるexamplefile.txtという名前のローカルファイルをexamplebucketという名前のバケットにアップロードします。
hdfs dfs -put examplefile.txt oss:// examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/
オブジェクトのダウンロード
次のコマンドを実行して、exampleobject.txtという名前のオブジェクトを、examplebucketという名前のバケットからコンピュータの /tmpという名前のルートディレクトリにダウンロードします。
hdfs dfs -get oss:// examplebucket.cn-hangzhou.oss-dls.aliyuncs.com/exampleobject.txt /tmp/
詳細については、「Hadoop Shellコマンドを使用したOSS-HDFSへのアクセス」をご参照ください。