Ambariは、アップグレードせずに高バージョンのspark2.xフレームワークを統合します

1.背景紹介

Sparkが2.x以降に一連のより便利で迅速な改善を実装したことは誰もが知っています。Sparkはコミュニティで2.3.1バージョンに更新されました。著者は、2.2.x以降、spark-mlの機能が大幅に強化されました。著者が使用したビッグデータ実験環境はAmbariに基づいており、バージョンは2.2.2であり、対応するHDPバージョンは2.4.xです。著者は、このバージョンがspark2.xを完全にサポートしておらず、当然、spark2.xによってもたらされたすべての機能改善を使用することは不可能であることを発見しました。だから問題は、スパークフレームワークのハイバージョンをアンバリに統合する方法ですか?

 

2.統合計画

1.オプション1:アンバリとHDPの双方向アップグレード

1つの方法は、当然、ambari自体のバージョンを2.4にアップグレードすることです(最新バージョンは2.6.xになっています)。この種のメジャーアップグレードには注意深い操作が必要です。それ以外の場合は、hortonworksドキュメントの公式ドキュメントを参照することをお勧めします。クラスターがクラッシュする可能性があります。同時に、依存関係には科学的なインターネットアクセスが必要なため、アップグレード操作用のローカルリポジトリソースを確立することをお勧めします。バージョンが低すぎる一部のユーザーは、ダブルジャンプ操作が必要になる場合があります(最初に2.2にアップグレードしてから、より高いバージョンにアップグレードします)。全体的なアップグレード計画については、重要な紹介としてではなく簡単に説明します。次に、アップグレードせずにambariとspark2.xフレームワークのより安全な統合を紹介します。

2.オプション2:ambariとspark2.xはアップグレードおよび統合されていません

1. ambariクラスターのhadoopバージョンに従ってsparkバージョンが再コンパイルされた後、クラスターの特定のノードに解凍されます(送信されたタスクの実際のノード制約に従って、1つ以上、多すぎない)。作者が編集したバージョンはspark-2.2.0-bin-hadoop2.7です。

2. spark-env.shファイルを変更し、次のコンテンツを追加します。HDPバージョンのHADOOP_CONF_DIRは、apacheバージョンおよびCDHバージョンとは異なることに注意してください。これは対応するバージョン番号の下の/ hadoop / confフォルダーであり、 / etc / hadoop

*JAVA_HOME
export JAVA_HOME=/usr/local/app/jdk1.8.0_144
*HADOOP_CONF_DIR
export HADOOP_CONF_DIR=/usr/hdp/2.4.2.0-258/hadoop/conf

3.core-site.xmlとhdfs-site.xmlをそれぞれsparkconfディレクトリにコピーします。sparkを既存のハイブと統合する必要がある場合、または外部データソースとしてハイブと一緒にspark-sqlを使用する必要がある場合は、ハイブを追加する必要もあります。 site.xmlファイルをconfディレクトリにコピーします。

4.ジャージーパッケージバージョンの競合の問題を解決します。クラスターhadoop-yarnのジャージー依存関係パッケージバージョンは対応するパッケージバージョンのsparkよりも低いため、関連する依存関係パッケージのsparkを対応するバージョンのhadoopに置き換える必要があります。具体的には、/ usr / hdp / 2.4.2.0-258 / hadoop-yarn / libディレクトリにある2つの依存関係パッケージjersey-core-1.9.jarとjersey-client-1.9.jarをsparkのlibディレクトリにコピーします。同時に、sparkのlibディレクトリにある対応する高バージョンパッケージを削除すると、変更されたsparkのlibディレクトリは次のようになります。

5.上記の4つの手順の後、sparkはすでにambariのローカル、スタンドアロン、およびyarnクライアントモードで実行中のタスクを送信できますが、yarnクラスターモードでタスクを実行すると、次のエラーが表示されます。

18/07/21 20:55:40 INFO yarn.Client: Application report for application_1531149311507_0180 (state: ACCEPTED)
18/07/21 20:55:41 INFO yarn.Client: Application report for application_1531149311507_0180 (state: ACCEPTED)
18/07/21 20:55:42 INFO yarn.Client: Application report for application_1531149311507_0180 (state: ACCEPTED)
18/07/21 20:55:43 INFO yarn.Client: Application report for application_1531149311507_0180 (state: FAILED)
18/07/21 20:55:43 INFO yarn.Client: 
	 client token: N/A
	 diagnostics: Application application_1531149311507_0180 failed 2 times due to AM Container for appattempt_1531149311507_0180_000002 exited with  exitCode: 1
For more detailed output, check application tracking page:http://bdp03.szmg.com.cn:8088/cluster/app/application_1531149311507_0180Then, click on links to logs of each attempt.
Diagnostics: Exception from container-launch.
Container id: container_e22_1531149311507_0180_02_000001
Exit code: 1
Exception message: /hadoop/yarn/local/usercache/root/appcache/application_1531149311507_0180/container_e22_1531149311507_0180_02_000001/launch_container.sh: line 22: $PWD:$PWD/__spark_conf__:$PWD/__spark_libs__/*:$HADOOP_CONF_DIR:/usr/hdp/current/hadoop-client/*:/usr/hdp/current/hadoop-client/lib/*:/usr/hdp/current/hadoop-hdfs-client/*:/usr/hdp/current/hadoop-hdfs-client/lib/*:/usr/hdp/current/hadoop-yarn-client/*:/usr/hdp/current/hadoop-yarn-client/lib/*:$PWD/mr-framework/hadoop/share/hadoop/mapreduce/*:$PWD/mr-framework/hadoop/share/hadoop/mapreduce/lib/*:$PWD/mr-framework/hadoop/share/hadoop/common/*:$PWD/mr-framework/hadoop/share/hadoop/common/lib/*:$PWD/mr-framework/hadoop/share/hadoop/yarn/*:$PWD/mr-framework/hadoop/share/hadoop/yarn/lib/*:$PWD/mr-framework/hadoop/share/hadoop/hdfs/*:$PWD/mr-framework/hadoop/share/hadoop/hdfs/lib/*:$PWD/mr-framework/hadoop/share/hadoop/tools/lib/*:/usr/hdp/${hdp.version}/hadoop/lib/hadoop-lzo-0.6.0.${hdp.version}.jar:/etc/hadoop/conf/secure: bad substitution

Stack trace: ExitCodeException exitCode=1: /hadoop/yarn/local/usercache/root/appcache/application_1531149311507_0180/container_e22_1531149311507_0180_02_000001/launch_container.sh: line 22: $PWD:$PWD/__spark_conf__:$PWD/__spark_libs__/*:$HADOOP_CONF_DIR:/usr/hdp/current/hadoop-client/*:/usr/hdp/current/hadoop-client/lib/*:/usr/hdp/current/hadoop-hdfs-client/*:/usr/hdp/current/hadoop-hdfs-client/lib/*:/usr/hdp/current/hadoop-yarn-client/*:/usr/hdp/current/hadoop-yarn-client/lib/*:$PWD/mr-framework/hadoop/share/hadoop/mapreduce/*:$PWD/mr-framework/hadoop/share/hadoop/mapreduce/lib/*:$PWD/mr-framework/hadoop/share/hadoop/common/*:$PWD/mr-framework/hadoop/share/hadoop/common/lib/*:$PWD/mr-framework/hadoop/share/hadoop/yarn/*:$PWD/mr-framework/hadoop/share/hadoop/yarn/lib/*:$PWD/mr-framework/hadoop/share/hadoop/hdfs/*:$PWD/mr-framework/hadoop/share/hadoop/hdfs/lib/*:$PWD/mr-framework/hadoop/share/hadoop/tools/lib/*:/usr/hdp/${hdp.version}/hadoop/lib/hadoop-lzo-0.6.0.${hdp.version}.jar:/etc/hadoop/conf/secure: bad substitution

	at org.apache.hadoop.util.Shell.runCommand(Shell.java:576)
	at org.apache.hadoop.util.Shell.run(Shell.java:487)
	at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:753)
	at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:212)
	at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:303)
	at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:82)
	at java.util.concurrent.FutureTask.run(FutureTask.java:266)
	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
	at java.lang.Thread.run(Thread.java:748)

糸のログを確認し、次のステートメントで問題を特定します。クラスが見つかりません

Error: Could not find or load main class org.apache.spark.deploy.yarn.ApplicationMaster
 

解決策: 
1)
sparkconfファイルspark.driver.extraJavaOptions-Dhdp.version = 2.4.2.0-258
spark.yarn.am.extraJavaOptions -Dhdp.version = 2.4.2.0-の下のspark-default.xmlにHDPバージョンのサポートを追加します。  258

ここでのバージョン番号2.4.2.0-258は、/ usr / hdpの下の対応するフォルダー名であり、hadoopバージョンを実行するための対応するhadoopバージョン番号ではないことに注意してください。

2)hdp.version情報をHADOOP_CONF_DIRの下のmapred-site.xmlフォルダー内の現在のバージョンに置き換え、バッチでsidに置き換えます。

sed -i 's/${hdp.version}/2.4.2.0-258/g'  mapred-site.xml

3.まとめ

ヤーンクラスターモードでスパークをテストするワードカウントプログラムを作成します。

/usr/local/app/spark-2.2.0-bin-hadoop2.7/bin/spark-submit \
--class com.szmg.SparkWordCount \
--master yarn \
--deploy-mode cluster \
--driver-memory 2G \
--num-executors 4 \
--executor-memory 4G \
--executor-cores 5 \
--conf spark.app.coalesce=1 \
/usr/local/app/spark_test_projects/word_count/jar/scalaProject.jar  \
/testdata/README.md \
/testdata/output2

実行のために糸に提出する:成功!

これまでのところ、アンバリと高バージョンのスパークの任意のバージョンとの互換性が実現されています。著者は、spark2.2.xとspark2.3.xをテストし、ヤーンクラスターでスパークのモードを正常に実現し、アンバリクラスターを実現しました。さまざまなバージョンのsparkスタンバイ用。

おすすめ

転載: blog.csdn.net/weixin_36714575/article/details/81149181