HDP 2.5.3を使用して、YARNコンテナのクラスパスの問題をデバッグしようとしています。
HDPにはSpark 1.6と2.0.0の両方が含まれているため、いくつかの競合するバージョンがあります
私がサポートするユーザーは、YARN client
モードでHiveクエリを使用してSpark2を正常に使用できますが、cluster
モードからは、テーブルが見つからないなどのエラーが発生します。これは、メタストア接続がないためです。 tが確立されました。
--driver-class-path /etc/spark2/conf:/etc/Hive/conf
の設定または--files /etc/spark2/conf/Hive-site.xml
の後にspark-submit
を渡すことは機能すると思いますが、Hive-site.xml
がconf
フォルダーから既にロードされていないのはなぜですか?
Hortonworks docs によると、Hive-site
は$SPARK_HOME/conf
に配置する必要があります。
たとえば、hdfs-site.xml
とcore-site.xml
、およびHADOOP_CONF_DIR
の一部である他のファイルが表示されます。これは、YARNUIコンテナ情報からのものです。
2232355 4 drwx------ 2 yarn hadoop 4096 Aug 2 21:59 ./__spark_conf__
2232379 4 -r-x------ 1 yarn hadoop 2358 Aug 2 21:59 ./__spark_conf__/topology_script.py
2232381 8 -r-x------ 1 yarn hadoop 4676 Aug 2 21:59 ./__spark_conf__/yarn-env.sh
2232392 4 -r-x------ 1 yarn hadoop 569 Aug 2 21:59 ./__spark_conf__/topology_mappings.data
2232398 4 -r-x------ 1 yarn hadoop 945 Aug 2 21:59 ./__spark_conf__/taskcontroller.cfg
2232356 4 -r-x------ 1 yarn hadoop 620 Aug 2 21:59 ./__spark_conf__/log4j.properties
2232382 12 -r-x------ 1 yarn hadoop 8960 Aug 2 21:59 ./__spark_conf__/hdfs-site.xml
2232371 4 -r-x------ 1 yarn hadoop 2090 Aug 2 21:59 ./__spark_conf__/hadoop-metrics2.properties
2232387 4 -r-x------ 1 yarn hadoop 662 Aug 2 21:59 ./__spark_conf__/mapred-env.sh
2232390 4 -r-x------ 1 yarn hadoop 1308 Aug 2 21:59 ./__spark_conf__/hadoop-policy.xml
2232399 4 -r-x------ 1 yarn hadoop 1480 Aug 2 21:59 ./__spark_conf__/__spark_conf__.properties
2232389 4 -r-x------ 1 yarn hadoop 1602 Aug 2 21:59 ./__spark_conf__/health_check
2232385 4 -r-x------ 1 yarn hadoop 913 Aug 2 21:59 ./__spark_conf__/rack_topology.data
2232377 4 -r-x------ 1 yarn hadoop 1484 Aug 2 21:59 ./__spark_conf__/ranger-hdfs-audit.xml
2232383 4 -r-x------ 1 yarn hadoop 1020 Aug 2 21:59 ./__spark_conf__/commons-logging.properties
2232357 8 -r-x------ 1 yarn hadoop 5721 Aug 2 21:59 ./__spark_conf__/hadoop-env.sh
2232391 4 -r-x------ 1 yarn hadoop 281 Aug 2 21:59 ./__spark_conf__/slaves
2232373 8 -r-x------ 1 yarn hadoop 6407 Aug 2 21:59 ./__spark_conf__/core-site.xml
2232393 4 -r-x------ 1 yarn hadoop 812 Aug 2 21:59 ./__spark_conf__/rack-topology.sh
2232394 4 -r-x------ 1 yarn hadoop 1044 Aug 2 21:59 ./__spark_conf__/ranger-hdfs-security.xml
2232395 8 -r-x------ 1 yarn hadoop 4956 Aug 2 21:59 ./__spark_conf__/metrics.properties
2232386 8 -r-x------ 1 yarn hadoop 4221 Aug 2 21:59 ./__spark_conf__/task-log4j.properties
2232380 4 -r-x------ 1 yarn hadoop 64 Aug 2 21:59 ./__spark_conf__/ranger-security.xml
2232372 20 -r-x------ 1 yarn hadoop 19975 Aug 2 21:59 ./__spark_conf__/yarn-site.xml
2232397 4 -r-x------ 1 yarn hadoop 1006 Aug 2 21:59 ./__spark_conf__/ranger-policymgr-ssl.xml
2232374 4 -r-x------ 1 yarn hadoop 29 Aug 2 21:59 ./__spark_conf__/yarn.exclude
2232384 4 -r-x------ 1 yarn hadoop 1606 Aug 2 21:59 ./__spark_conf__/container-executor.cfg
2232396 4 -r-x------ 1 yarn hadoop 1000 Aug 2 21:59 ./__spark_conf__/ssl-server.xml
2232375 4 -r-x------ 1 yarn hadoop 1 Aug 2 21:59 ./__spark_conf__/dfs.exclude
2232359 8 -r-x------ 1 yarn hadoop 7660 Aug 2 21:59 ./__spark_conf__/mapred-site.xml
2232378 16 -r-x------ 1 yarn hadoop 14474 Aug 2 21:59 ./__spark_conf__/capacity-scheduler.xml
2232376 4 -r-x------ 1 yarn hadoop 884 Aug 2 21:59 ./__spark_conf__/ssl-client.xml
ご覧のとおり、spark-submitが取るためのHive-site
は間違いなくありますが、conf/Hive-site.xml
はありません。
[spark@asthad006 conf]$ pwd && ls -l
/usr/hdp/2.5.3.0-37/spark2/conf
total 32
-rw-r--r-- 1 spark spark 742 Mar 6 15:20 Hive-site.xml
-rw-r--r-- 1 spark spark 620 Mar 6 15:20 log4j.properties
-rw-r--r-- 1 spark spark 4956 Mar 6 15:20 metrics.properties
-rw-r--r-- 1 spark spark 824 Aug 2 22:24 spark-defaults.conf
-rw-r--r-- 1 spark spark 1820 Aug 2 22:24 spark-env.sh
-rwxr-xr-x 1 spark spark 244 Mar 6 15:20 spark-thrift-fairscheduler.xml
-rw-r--r-- 1 Hive hadoop 918 Aug 2 22:24 spark-thrift-sparkconf.conf
したがって、HADOOP_CONF_DIR
が分離されているため、HiveサイトをHive_CONF_DIR
に配置することになっていないと思いますが、私の質問は、Spark2にHive-site.xml
を取得せずに実行時にパラメータとして手動で渡す必要がありますか?
[〜#〜] edit [〜#〜]当然、私はHDPを使用しているので、Ambariを使用しています。以前のクラスター管理者はすべてのマシンにSpark2クライアントをインストールしたため、潜在的なSparkドライバーである可能性のあるすべてのYARNNodeManagerは同じ構成ファイルを持つ必要があります
spark property --spark.yarn.dist.files
を使用して、そこでHive-site.xmlへのパスを指定できます。
cluster
mode
構成は、マシンのconf
ディレクトリから読み取られます。このディレクトリは、spark-submit
に使用されるものではなく、driver
コンテナを実行します。
これに関する問題が見つかりました
Hiveコンテキストを作成する前にorg.Apache.spark.sql.SQLContext
を作成すると、Hiveコンテキストを作成するときにHive-site.xml
が適切に選択されません。
ソリューション:別のSQLコンテキストを作成する前に、Hiveコンテキストを作成します。