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

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

最終更新日:Feb 26, 2024

Hortonworks Data Platform (HDP) は、Hortonworksによってリリースされたビッグデータプラットフォームであり、Hadoop、Hive、HBaseなどのオープンソースコンポーネントで構成されています。 Hadoop 3.1.1はHDP 3.0.1に含まれており、Object Storage Service (OSS) をサポートしています。 ただし、以前のバージョンのHDPはOSSをサポートしていません。 このトピックでは、例としてHDP 2.6.1.0を使用して、OSSデータを読み書きするようにHDP 2.6を設定する方法について説明します。

前提条件

HDP 2.6.1.0クラスターが作成されました。

HDP 2.6.1.0クラスターがない場合は、次のいずれかの方法でHDP 2.6.1.0クラスターを作成できます。

  • Ambariを使用してHDP 2.6.1.0クラスターを作成します。
  • Ambariを使用できない場合は、HDP 2.6.1.0クラスターを手動で作成できます。

手順

  1. OSSをサポートするHDP 2.6.1.0パッケージをダウンロードします。
  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/aliyun-java-sdk-ram-3.0.0.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-sts-3.0.0.jar
    hadoop-oss-hdp-2.6.1.0-129/jdom-1.1.jar
    hadoop-oss-hdp-2.6.1.0-129/aliyun-sdk-oss-3.4.1.jar
    hadoop-oss-hdp-2.6.1.0-129/hadoop-aliyun-2.7.3.2.6.1.0-129.jar 
  3. JARパッケージのディレクトリを変更します。
    説明 このトピックでは、${} で囲まれたコンテンツはすべて環境変数です。 実際の環境に基づいて環境変数を変更します。
    1. 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 -- 1ルートルート64K Oct 28 20:56 /usr/hdp/current/hadoop-client/hadoop-aliyun-2.7.3.2.6.1.0-129.jar
    2. 他のjarパッケージを ${/usr/hdp/current}/hadoop-client/lib/ ディレクトリに移動します。 次のコマンドを実行して、ディレクトリが変更されているかどうかを確認します。
      sudo ls -ltrh /usr/hdp/current/hadoop-client/lib

      サンプル成功応答:

      合計27M
      ......
      drwxr-xr-x 2ルートルート4.0K Oct 28 20:10 ranger-hdfs-plugin-impl
      drwxr-xr-x 2ルートルート4.0K Oct 28 20:10 ranger-yarn-plugin-impl
      drwxr-xr-x 2ルートルート4.0K 10月28日20:10ネイティブ
      -rw-r -- 1ルートルート114K Oct 28 20:56 aliyun-java-sdk-core-3.4.0.jar
      -rw-r -- 1ルートルート513K Oct 28 20:56 aliyun-sdk-oss-3.4.1.jar
      -rw-r -- 1ルートルート13K Oct 28 20:56 aliyun-java-sdk-sts-3.0.0.jar
      -rw-r -- 1ルートルート211K Oct 28 20:56 aliyun-java-sdk-ram-3.0.0.jar
      -rw-r -- 1ルートルート770K Oct 28 20:56 aliyun-java-sdk-ecs-4.2.0.jar
      -rw-r -- r -- 1ルートルート150K Oct 28 20:56 jdom-1.1.jar 
  4. すべてのHDPノードで上記の操作を実行します。
  5. Ambariを使用して設定を追加します。 クラスターが管理にAmbariを使用しない場合は、core-site.xmlを変更します。 この例では、Ambariが使用されます。 次の表に、追加する必要がある設定を示します。
    パラメーター説明
    fs.oss.endpointアクセスするバケットが配置されているリージョンのエンドポイントを指定します。

    例: oss-cn-zhangjiakou-internal.aliyuncs.com。

    fs.oss.accessKeyIdOSSへのアクセスに使用するAccessKey IDを入力します。
    fs.oss.accessKeySecretOSSへのアクセスに使用するAccessKeyシークレットを入力します。
    fs.oss.implHadoopに基づくOSSファイルシステムの実装に使用するクラスを指定します。 値をorg.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystemに設定します。
    fs.oss.buffer.dir一时ファイルを格纳するディレクトリ名を指定します。

    このパラメーターを /tmp/ossに設定することを推奨します。

    fs.oss.connection.secure.enabledHTTPSを有効にするかどうかを指定します。 HTTPSを有効にすると、パフォーマンスに影響を与える可能性があります。

    このパラメーターをfalseに設定することを推奨します。

    fs.oss.connection.maximumOSSへの最大接続数を指定します。

    このパラメーターを2048に設定することを推奨します。

    その他のパラメーターの詳細については、Hadoop-Aliyunモジュールをご参照ください。

  6. Ambariの指示に従ってクラスターを再起動します。
  7. データをOSSから読み書きできるかどうかをテストします。
    1. 次のコマンドを実行して、データをOSSから読み取ることができるかどうかをテストします。
      sudo hadoop fs -ls oss://${your-bucket-name}/
    2. 次のコマンドを実行して、データをOSSに書き込むことができるかどうかをテストします。
      sudo hadoop fs -mkdir oss://${your-bucket-name}/hadoop-test
      データをOSSから読み書きできる場合、設定は成功しています。 それ以外の場合は、設定が正しいかどうかを確認します。
  8. MapReduceジョブを実行するには、次のコマンドを実行してHDP 2.6.1.0パッケージをhdfs:// hdp-master:8020/hdp/apps/2.6.1.0-129/mapreduce/mapreduce.tar.gzパッケージに移動します。
    説明 この例では、MapReduceジョブが使用されます。 他のタイプのジョブを実行する方法の詳細については、次の手順とコードを参照してください。 たとえば、TEZジョブを実行するには、HDP 2.6.1.0パッケージをhdfs:// hdp-master:8020/hdp/apps/2.6.1.0-129/tez/tez.tar.gzパッケージに移動します。
    sudo su hdfs
    sudo cd
    sudo hadoop fs -copyToLocal /hdp/apps/2.6.1.0-129/mapreduce/mapreduce.tar.gz
    sudo hadoop fs -rm /hdp/apps/2.6.1.0-129/mapreduce/mapreduce.tar.gz
    sudo cp mapreduce.tar.gz mapreduce.tar.gz.bak
    sudo tar zxf mapreduce.tar.gz
    sudo cp /usr/hdp/current/hadoop-client/hadoop-aliyun-2.7.3.2.6.1.0-129.jar hadoop/share/hadoop/tools/lib /
    sudo cp /usr/hdp/current/hadoop-client/lib/aliyun-* hadoop/share/hadoop/tools/lib /
    sudo cp /usr/hdp/current/hadoop-client/lib/jdom-1.1.jar hadoop/share/hadoop/tools/lib /
    sudo tar zcf mapreduce.tar.gz hadoop
    sudo hadoop fs -copyFromLocal mapreduce.tar.gz /hdp/apps/2.6.1.0-129/mapreduce/ 

設定を確認します。

TeraGenとTeraSortをテストして、設定が有効かどうかを確認できます。

  • 次のコマンドを実行して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:32:38 INFOクライアント。RMProxy: cdh-master/192.168.0.161でResourceManagerに接続: 8050
    18/10/28 21:32:38 INFOクライアント。AHSProxy: cdh-master/192.168.0.161でアプリケーション履歴サーバーに接続: 10200
    18/10/28 21:32:38 INFO aliyun.oss: [サーバー] HTTPリクエストを実行できません: 見つかりません
    [ErrorCode]: NoSuchKey
    [RequestId]: 5BD5BA7641FCE369BC1D052C
    [HostId]: null
    18/10/28 21:32:38 INFO aliyun.oss: [サーバー] HTTPリクエストを実行できません: 見つかりません
    [ErrorCode]: NoSuchKey
    [RequestId]: 5BD5BA7641FCE369BC1D052F
    [HostId]: null
    18/10/28 21:32:39 INFO terasort.TeraSort: 100を使用した10995116の生成
    18/10/28 21:32:39 INFO mapreduce.JobSubmitter: 分割数: 100
    18/10/28 21:32:39 INFO mapreduce.JobSubmitter: ジョブのトークンの送信: job_1540728986531_0005
    18/10/28 21:32:39 INFO impl.YarnClientImpl: 提出されたアプリケーションapplication_1540728986531_0005
    18/10/28 21:32:39 INFO mapreduce.Job: ジョブを追跡するurl: http:// cdh-master:8088/proxy/application_1540728986531_0005 /
    18/10/28 21:32:39 INFO mapreduce.Job: Running job: job_1540728986531_0005
    18/10/28 21:32:49 INFO mapreduce.Job: Job job_1540728986531_0005 uberモードで実行中: false
    18/10/28 21:32:49 INFO mapreduce.Job: map 0% reduce 0%
    18/10/28 21:32:55 INFO mapreduce.Job: map 1% reduce 0%
    18/10/28 21:32:57 INFO mapreduce.Job: map 2% reduce 0%
    18/10/28 21:32:58 INFO mapreduce.Job: map 4% reduce 0%
    ...
    18/10/28 21:34:40 INFO mapreduce.Job: map 99% reduce 0%
    18/10/28 21:34:42 INFO mapreduce.Job: map 100% reduce 0%
    18/10/28 21:35:15 INFO mapreduce.Job: Job job_1540728986531_0005が正常に完了しました
    18/10/28 21:35:15 INFO mapreduce.Job: カウンタ: 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:39:00 INFO terasort.TeraSort: 開始
    ...
    18/10/28 21:39:02 INFO mapreduce.JobSubmitter: 分割数: 100
    18/10/28 21:39:02 INFO mapreduce.JobSubmitter: ジョブのトークンの送信: job_1540728986531_0006
    18/10/28 21:39:02 INFO impl.YarnClientImpl: 提出されたアプリケーションapplication_1540728986531_0006
    18/10/28 21:39:02 INFO mapreduce.Job: ジョブを追跡するurl: http:// cdh-master:8088/proxy/application_1540728986531_0006 /
    18/10/28 21:39:02 INFO mapreduce.Job: Running job: job_1540728986531_0006
    18/10/28 21:39:09 INFO mapreduce.Job: Job job_1540728986531_0006 uberモードで実行中: false
    18/10/28 21:39:09 INFO mapreduce.Job: map 0% reduce 0%
    18/10/28 21:39:17 INFO mapreduce.Job: map 1% reduce 0%
    18/10/28 21:39:19 INFO mapreduce.Job: map 2% reduce 0%
    18/10/28 21:39:20 INFO mapreduce.Job: map 3% reduce 0%
    ...
    18/10/28 21:42:50 INFO mapreduce.Job: map 100% reduce 75%
    18/10/28 21:42:53 INFO mapreduce.Job: map 100% reduce 80%
    18/10/28 21:42:56 INFO mapreduce.Job: map 100% reduce 86%
    18/10/28 21:42:59 INFO mapreduce.Job: map 100% reduce 92%
    18/10/28 21:43:02 INFO mapreduce.Job: map 100% reduce 98%
    18/10/28 21:43:05 INFO mapreduce.Job: map 100% reduce 100%
    ^ @ 18/10/28 21:43:56 INFO mapreduce.Job: Job job_1540728986531_0006が正常に完了しました
    18/10/28 21:43:56 INFO mapreduce.Job: カウンター: 54
    ... 

テストが成功すると、設定が有効になります。