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クラスターを手動で作成できます。
手順
- OSSをサポートするHDP 2.6.1.0パッケージをダウンロードします。
- 次のコマンドを実行して、ダウンロードしたパッケージを解凍します。
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
- JARパッケージのディレクトリを変更します。 説明 このトピックでは、${} で囲まれたコンテンツはすべて環境変数です。 実際の環境に基づいて環境変数を変更します。
- 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
- 他の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
- Hadoop-aliyun-2.7.3.2.6.1.0-129.jarパッケージを ${/usr/hdp/current}/hadoop-client/ ディレクトリに移動します。 次のコマンドを実行して、ディレクトリが変更されているかどうかを確認します。
- すべてのHDPノードで上記の操作を実行します。
- Ambariを使用して設定を追加します。 クラスターが管理にAmbariを使用しない場合は、core-site.xmlを変更します。 この例では、Ambariが使用されます。 次の表に、追加する必要がある設定を示します。
パラメーター 説明 fs.oss.endpoint アクセスするバケットが配置されているリージョンのエンドポイントを指定します。 例: oss-cn-zhangjiakou-internal.aliyuncs.com。
fs.oss.accessKeyId OSSへのアクセスに使用するAccessKey IDを入力します。 fs.oss.accessKeySecret OSSへのアクセスに使用するAccessKeyシークレットを入力します。 fs.oss.impl Hadoopに基づくOSSファイルシステムの実装に使用するクラスを指定します。 値をorg.apache.hadoop.fs.aliyun.oss.AliyunOSSFileSystemに設定します。 fs.oss.buffer.dir 一时ファイルを格纳するディレクトリ名を指定します。 このパラメーターを /tmp/ossに設定することを推奨します。
fs.oss.connection.secure.enabled HTTPSを有効にするかどうかを指定します。 HTTPSを有効にすると、パフォーマンスに影響を与える可能性があります。 このパラメーターをfalseに設定することを推奨します。
fs.oss.connection.maximum OSSへの最大接続数を指定します。 このパラメーターを2048に設定することを推奨します。
その他のパラメーターの詳細については、Hadoop-Aliyunモジュールをご参照ください。
- Ambariの指示に従ってクラスターを再起動します。
- データをOSSから読み書きできるかどうかをテストします。
- 次のコマンドを実行して、データをOSSから読み取ることができるかどうかをテストします。
sudo hadoop fs -ls oss://${your-bucket-name}/
- 次のコマンドを実行して、データをOSSに書き込むことができるかどうかをテストします。
sudo hadoop fs -mkdir oss://${your-bucket-name}/hadoop-test
データをOSSから読み書きできる場合、設定は成功しています。 それ以外の場合は、設定が正しいかどうかを確認します。
- 次のコマンドを実行して、データをOSSから読み取ることができるかどうかをテストします。
- 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 ...
テストが成功すると、設定が有効になります。