OSS-HDFSはRootPolicyをサポートしています。 RootPolicyを使用して、OSS-HDFSのカスタムプレフィックスを設定できます。 これにより、元のアクセスプレフィックスhdfs://
を変更することなく、ジョブをOSS-HDFSで実行できます。
前提条件
Hadoop環境、Hadoopクラスター、またはHadoopクライアントが作成されます。 Hadoopのインストール方法の詳細については、「手順2: Hadoopランタイム環境の作成」をご参照ください。
特定のバケットに対してOSS-HDFSが有効になります。 OSS-HDFSを有効にする方法の詳細については、「OSS-HDFSの有効化とアクセス許可の付与」をご参照ください。
JindoSDK 4.5.0以降がインストールおよび設定されています。 詳細については、「非EMRクラスターのOSS-HDFSへの接続」をご参照ください。
手順
環境変数を設定します。
ECS インスタンスに接続します。 詳細については、「ECS インスタンスへの接続」をご参照ください。
インストールされているJindoSDK JARパッケージのbinディレクトリに移動します。
cd jindosdk-x.x.x /ビン /
説明x.x.xは、JindoSDK JARパッケージのバージョン番号を示します。
binディレクトリの
jindo-util
ファイルに読み取りおよび書き込み権限を付与します。chmod 700 jindo-util
jindo-util
ファイルの名前をjindo
に変更します。mv jindo-util jindo
jindosdk.cfg
という名前の設定ファイルを作成し、次のパラメーターを設定ファイルに追加します。[common] 以下のデフォルト設定を保持します。 logger.dir = /tmp/jindo-util / logger.sync = false logger.consolelogger = false logger.level = 0 logger.verbose = 0 logger.cleaner.enable = true hadoopConf.enable = false [jindosdk] 以下のパラメータを指定します。 <!-- この例では、中国 (杭州) リージョンが使用されています。 実際のリージョンを指定します。 -> fs.oss.endpoint = cn-hangzhou.oss-dls.aliyuncs.com <! -- OSS-HDFSへのアクセスに使用するAccessKey IDとAccessKey secretを設定します。 -> fs.oss.accessKeyId = LTAI5tJCTj5SxJepqxQ2 **** fs.oss.accessKeySecret = i0uLwyd0mHxXetZo7b4j4CXP16 ****
環境変数を設定します。
エクスポートJINDOSDK_CONF_DIR=<JINDOSDK_CONF_DIR>
<JINDOSDK_CONF_DIR> を
jindosdk.cfg
設定ファイルの絶対パスに設定します。
RootPolicyを設定します。
次のSetRootPolicyコマンドを実行して、バケットのカスタムプレフィックスを含む登録済みアドレスを指定します。
jindo admin -setRootPolicy oss://<bucket_name>.<dls_endpoint>/ hdfs://<your_ns_name>/
SetRootPolicyコマンドのパラメーターを次の表に示します。
パラメーター
説明
bucket_name
OSS-HDFSが有効になっているバケットの名前。
dls_endpoint
OSS-HDFSが有効になっているバケットが存在するリージョンのエンドポイント。 例:
cn-hangzhou.oss-dls.aliyuncs.com
。RootPolicyを実行するたびにSetRootPolicyコマンドに <dls_endpoint> パラメーターを繰り返し追加しない場合は、次のいずれかの方法を使用して、Hadoopの
core-site.xml
ファイルに設定項目を追加できます。方法1:
<configuration> <property> <name>fs.oss.endpoint</name> <value><dls_endpoint></value> </property> </configuration>
方法2:
<configuration> <property> <name>fs.oss.bucket.<bucket_name>.endpoint</name> <value><dls_endpoint></value> </property> </configuration>
your_ns_name
OSS-HDFSへのアクセスに使用されるカスタムnsname。
test
など、空でない文字列がサポートされます。 現在のバージョンはルートディレクトリのみをサポートしています。アクセスポリシー検出アドレスとScheme実装クラスを設定します。
Hadoopのcore-site.xmlファイルで次のパラメーターを設定する必要があります。
<configuration> <property> <name>fs.accessPolicies.discovery</name> <value>oss://<bucket_name>.<dls_endpoint>/</value> </property> <property> <name>fs.AbstractFileSystem.hdfs.impl</name> <value>com.aliyun.jindodata.hdfs.HDFS</value> </property> <property> <name>fs.hdfs.impl</name> <value>com.aliyun.jindodata.hdfs.JindoHdfsFileSystem</value> </property> </configuration>
複数のバケットに対してアクセスポリシー検出アドレスとScheme実装クラスを設定する場合は、バケットをコンマ (
,
) で区切ります。次のコマンドを実行して、RootPolicyが正常に設定されているかどうかを確認します。
hadoop fs -ls hdfs://<your_ns_name>/
次の結果が返された場合、RootPolicyは正常に設定されます。
drwxr-x -- x - hdfs hadoop 0 2023-01-05 12:27 hdfs://<your_ns_name>/apps drwxrwxrwx - spark hadoop 0 2023-01-05 12:27 hdfs://<your_ns_name>/spark-history drwxrwxrwx - hdfs hadoop 0 2023-01-05 12:27 hdfs://<your_ns_name>/tmp drwxrwxrwx - hdfs hadoop 0 2023-01-05 12:27 hdfs://<your_ns_name>/user
カスタムプレフィックスを使用してOSS-HDFSにアクセスします。
HiveやSparkなどのサービスを再起動した後、カスタムプレフィックスを使用してOSS-HDFSにアクセスできます。
オプションです。 他の目的でRootPolicyを使用します。
バケットに指定されたカスタムプレフィックスを含むすべての登録済みアドレスを一覧表示する
次のlistAccessPoliciesコマンドを実行して、バケットに指定されたカスタムプレフィックスを含むすべての登録済みアドレスを一覧表示します。
jindo admin -listAccessPolicies oss://<bucket_name>.<dls_endpoint>/
バケットに指定されたカスタムプレフィックスを含む登録済みアドレスをすべて削除します。
次のunsetRootPolicyコマンドを実行して、バケットに指定されたカスタムプレフィックスを含む登録済みアドレスをすべて削除します。
jindo admin -unsetRootPolicy oss://<bucket_name>.<dls_endpoint>/ hdfs://<your_ns_name>/
RootPolicyコマンドの詳細については、「Jindo CLIユーザーガイド」をご参照ください。