すべてのプロダクト
Search
ドキュメントセンター

Object Storage Service:HDP 2.6 ベースの Hadoop を使用した OSS データの読み書き

最終更新日:Mar 21, 2026

Hortonworks Data Platform (HDP) 3.0.1 には Hadoop 3.1.1 が含まれており、Object Storage Service (OSS) をネイティブでサポートしています。しかし、それ以前の HDP バージョンではサポートされていません。このガイドでは、OSS コネクタの JAR をインストールし、Hadoop ファイルシステムの設定を行い、MapReduce ジョブで接続性を検証することで、HDP 2.6.1.0 クラスターに OSS サポートを追加する方法について説明します。

前提条件

開始する前に、以下が準備できていることを確認してください。

  • HDP 2.6.1.0 クラスター。お持ちでない場合は、以下のいずれかの方法で作成してください。

    • Ambari — 管理 UI を使用したクラスター作成

    • 手動セットアップ — ご利用の環境で Ambari が利用できない場合

  • すべてのクラスターノードに対する sudo アクセス権

  • OSS バケットとそのエンドポイント。エンドポイントの形式については、「リージョンとエンドポイント」をご参照ください。

  • バケットに対する読み書き権限を持つ AccessKey ID と AccessKey Secret

OSS コネクタ JAR のインストール

  1. HDP 2.6.1.0 用の OSS コネクタパッケージをダウンロードします。

  2. アーカイブを展開します。

       sudo tar -xvf hadoop-oss-hdp-2.6.1.0-129.tar

    展開されたディレクトリには、以下のファイルが含まれています。

       hadoop-oss-hdp-2.6.1.0-129/
       hadoop-oss-hdp-2.6.1.0-129/hadoop-aliyun-2.7.3.2.6.1.0-129.jar
       hadoop-oss-hdp-2.6.1.0-129/aliyun-sdk-oss-3.4.1.jar
       hadoop-oss-hdp-2.6.1.0-129/aliyun-java-sdk-core-3.4.0.jar
       hadoop-oss-hdp-2.6.1.0-129/aliyun-java-sdk-ecs-4.2.0.jar
       hadoop-oss-hdp-2.6.1.0-129/aliyun-java-sdk-ram-3.0.0.jar
       hadoop-oss-hdp-2.6.1.0-129/aliyun-java-sdk-sts-3.0.0.jar
       hadoop-oss-hdp-2.6.1.0-129/jdom-1.1.jar
  3. hadoop-aliyun-2.7.3.2.6.1.0-129.jar を Hadoop クライアントディレクトリに移動します。

       sudo mv hadoop-oss-hdp-2.6.1.0-129/hadoop-aliyun-2.7.3.2.6.1.0-129.jar \
         /usr/hdp/current/hadoop-client/

    ファイルが正しく配置されたことを確認します。

       sudo ls -lh /usr/hdp/current/hadoop-client/hadoop-aliyun-2.7.3.2.6.1.0-129.jar

    期待される出力:

       -rw-r--r-- 1 root root 64K Oct 28 20:56 /usr/hdp/current/hadoop-client/hadoop-aliyun-2.7.3.2.6.1.0-129.jar
  4. 他のすべての JAR ファイルを Hadoop クライアントの lib ディレクトリに移動します。

       sudo mv hadoop-oss-hdp-2.6.1.0-129/aliyun-*.jar \
         hadoop-oss-hdp-2.6.1.0-129/jdom-1.1.jar \
         /usr/hdp/current/hadoop-client/lib/

    ファイルが正しく配置されたことを確認します。

       sudo ls -ltrh /usr/hdp/current/hadoop-client/lib

    出力には、以下のようなエントリが含まれているはずです。

       -rw-r--r-- 1 root root 114K Oct 28 20:56 aliyun-java-sdk-core-3.4.0.jar
       -rw-r--r-- 1 root root 513K Oct 28 20:56 aliyun-sdk-oss-3.4.1.jar
       -rw-r--r-- 1 root root  13K Oct 28 20:56 aliyun-java-sdk-sts-3.0.0.jar
       -rw-r--r-- 1 root root 211K Oct 28 20:56 aliyun-java-sdk-ram-3.0.0.jar
       -rw-r--r-- 1 root root 770K Oct 28 20:56 aliyun-java-sdk-ecs-4.2.0.jar
       -rw-r--r-- 1 root root 150K Oct 28 20:56 jdom-1.1.jar
  5. HDP クラスター内のすべてのノードで、ステップ 1〜4 を繰り返します。

    このガイドに示されているすべてのパス (例: /usr/hdp/current) は、標準的な HDP 2.6 のデフォルトレイアウトを反映しています。クラスターがカスタムインストールディレクトリを使用している場合は、パスを適宜調整してください。

OSS 設定の構成

Hadoop 設定に以下のプロパティを追加します。適用方法は、クラスターが Ambari を使用しているかどうかによって異なります。

オプション 1: Ambari の使用 (推奨)

  1. Ambari の Web UI で、[HDFS] > [Configs] > [Custom core-site] に移動します。

  2. 以下の表から各プロパティを追加します。

  3. Ambari からプロンプトが表示されたら、クラスターを再起動します。

オプション 2: core-site.xml の直接編集

クラスターが Ambari を使用していない場合は、各ノードの /etc/hadoop/conf/core-site.xml にプロパティを直接追加し、関連サービスを再起動します。

必須および推奨プロパティ

以下の XML ブロックをコピーし、ご利用の環境に合わせて変更してください。これには、すべての必須および推奨プロパティと、そのデフォルト値および説明が含まれています。

<property>
  <name>fs.oss.endpoint</name>
  <value>oss-cn-zhangjiakou-internal.aliyuncs.com</value>
  <description>バケットが配置されている OSS リージョンのエンドポイント。
  クラスターが Alibaba Cloud 内で実行されている場合は、内部エンドポイントを使用して下り料金を回避します。</description>
</property>

<property>
  <name>fs.oss.accessKeyId</name>
  <value>YOUR_ACCESS_KEY_ID</value>
  <description>OSS との認証に使用される AccessKey ID。</description>
</property>

<property>
  <name>fs.oss.accessKeySecret</name>
  <value>YOUR_ACCESS_KEY_SECRET</value>
  <description>OSS との認証に使用される AccessKey Secret。</description>
</property>

<property>
  <name>fs.oss.impl</name>
  <value>org.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystem</value>
  <description>OSS ファイルシステムの実装クラス。この値は変更しないでください。</description>
</property>

<property>
  <name>fs.oss.buffer.dir</name>
  <value>/tmp/oss</value>
  <description>OSS の読み書き操作中の一時ファイルのローカルディレクトリ。</description>
</property>

<property>
  <name>fs.oss.connection.secure.enabled</name>
  <value>false</value>
  <description>OSS 接続に HTTPS を使用するかどうか。クラスター内部のトラフィックの場合、
  TLS のパフォーマンスオーバーヘッドを避けるために false に設定します。セキュリティポリシーで転送中の暗号化が必要な場合は true に設定します。</description>
</property>

<property>
  <name>fs.oss.connection.maximum</name>
  <value>2048</value>
  <description>OSS への同時接続の最大数。アップストリームのデフォルト値は 32 です。
  高い並列処理を行うワークロードの場合は、この値を増やしてください。</description>
</property>

YOUR_ACCESS_KEY_IDYOUR_ACCESS_KEY_SECRET を実際の認証情報に置き換えてください。サポートされているプロパティの完全なリストについては、「Hadoop-Aliyun モジュールリファレンス」をご参照ください。

接続性の検証

クラスターを再起動した後、以下のコマンドを実行して、Hadoop が OSS からの読み取りと OSS への書き込みができることを確認します。<your-bucket-name> を実際のバケット名に置き換えてください。

読み取りテスト — バケットのルートをリスト表示します。

sudo hadoop fs -ls oss://<your-bucket-name>/

書き込みテスト — バケット内にディレクトリを作成します。

sudo hadoop fs -mkdir oss://<your-bucket-name>/hadoop-test

両方のコマンドがエラーなく成功した場合、コネクタは正常に動作しています。認証エラーが表示された場合は、fs.oss.accessKeyIdfs.oss.accessKeySecret の値を確認してください。接続エラーが表示された場合は、fs.oss.endpoint がバケットの所在地リージョンと一致していることを確認してください。

OSS に対する MapReduce ジョブの実行

MapReduce ジョブを実行する前に、クラスターの分散 MapReduce アーカイブを更新して、OSS コネクタの JAR を含めます。

以下の手順では MapReduce を例として使用しています。Tez などの他のフレームワークの場合も、同じアプローチを適用します。つまり、コネクタの JAR を同等のアーカイブ (例: hdfs://hdp-master:8020/hdp/apps/2.6.1.0-129/tez/tez.tar.gz) にコピーし、再パッケージ化します。

hdfs ユーザーとして以下のコマンドを実行します。

sudo su hdfs

# HDFS から既存の MapReduce アーカイブをダウンロード
hadoop fs -copyToLocal /hdp/apps/2.6.1.0-129/mapreduce/mapreduce.tar.gz

# 元のアーカイブをバックアップ
cp mapreduce.tar.gz mapreduce.tar.gz.bak

# アーカイブを展開
tar zxf mapreduce.tar.gz

# OSS コネクタ JAR をアーカイブの tools/lib ディレクトリにコピー
cp /usr/hdp/current/hadoop-client/hadoop-aliyun-2.7.3.2.6.1.0-129.jar \
   hadoop/share/hadoop/tools/lib/
cp /usr/hdp/current/hadoop-client/lib/aliyun-*.jar \
   hadoop/share/hadoop/tools/lib/
cp /usr/hdp/current/hadoop-client/lib/jdom-1.1.jar \
   hadoop/share/hadoop/tools/lib/

# 更新されたアーカイブを再パッケージ化してアップロード
tar zcf mapreduce.tar.gz hadoop
hadoop fs -rm /hdp/apps/2.6.1.0-129/mapreduce/mapreduce.tar.gz
hadoop fs -copyFromLocal mapreduce.tar.gz /hdp/apps/2.6.1.0-129/mapreduce/

TeraGen と TeraSort による検証

標準の Hadoop ベンチマークスイートを実行して、MapReduce ジョブが OSS に対してエンドツーエンドで読み書きできることを確認します。<bucket-name> を実際のバケット名に置き換えてください。

TeraGen でテストデータを生成:

sudo hadoop jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar \
  teragen -Dmapred.map.tasks=100 10995116 oss://<bucket-name>/1G-input

正常に実行されると、以下のような出力で終了します。

18/10/28 21:35:15 INFO mapreduce.Job: Job job_1540728986531_0005 completed successfully
18/10/28 21:35:15 INFO mapreduce.Job: Counters: 36
...

TeraSort でデータをソート:

sudo hadoop jar /usr/hdp/current/hadoop-mapreduce-client/hadoop-mapreduce-examples.jar \
  terasort -Dmapred.map.tasks=100 \
  oss://<bucket-name>/1G-input \
  oss://<bucket-name>/1G-output

正常に実行されると、以下の出力で終了します。

18/10/28 21:43:56 INFO mapreduce.Job: Job job_1540728986531_0006 completed successfully
18/10/28 21:43:56 INFO mapreduce.Job: Counters: 54
...

両方のジョブが正常に完了した場合、HDP 2.6.1.0 クラスターは OSS に対する MapReduce ワークロードを実行するために完全に設定されています。

次のステップ