【发布时间】:2018-01-10 15:24:58
【问题描述】:
使用 HDP 2.5.3,我一直在尝试调试一些 YARN 容器类路径问题。
由于 HDP 包含 Spark 1.6 和 2.0.0,因此存在一些冲突的版本
我支持的用户能够在 YARN client 模式下成功使用 Spark2 和 Hive 查询,但不是在 cluster 模式下,他们会收到有关未找到表的错误,或者类似的错误,因为未建立 Metastore 连接。
我猜想在spark-submit 之后设置--driver-class-path /etc/spark2/conf:/etc/hive/conf 或传递--files /etc/spark2/conf/hive-site.xml 会起作用,但为什么没有从conf 文件夹中加载hive-site.xml?
根据Hortonworks docs,说hive-site应该放在$SPARK_HOME/conf,而且是……
例如,我看到了 hdfs-site.xml 和 core-site.xml,以及属于 HADOOP_CONF_DIR 的其他文件,这是来自 YARN UI 容器信息的信息。
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
如您所见,hive-site 不存在,尽管我肯定有 conf/hive-site.xml 供 spark-submit 使用
[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
所以,我认为我不应该将 hive-site 放置在 HADOOP_CONF_DIR 中,因为 HIVE_CONF_DIR 是分开的,但我的问题是我们如何让 Spark2 在不需要手动的情况下获取 hive-site.xml在运行时将其作为参数传递?
编辑当然,因为我在 HDP 上,所以我正在使用 Ambari。之前的集群管理员已经在所有机器上安装了 Spark2 客户端,因此所有可能成为 Spark 驱动程序的 YARN NodeManager 都应该具有相同的配置文件
【问题讨论】:
-
我有点慢,所以去年我没有考虑过,但是... (a)
$HADOOP_CONF_DIR可能包含一个 list 条目,就像任何 CLASSPATH (b) Spark 也考虑$YARN_CONF_DIR这可能是注入 Hive 配置 (c) 源代码的肮脏解决方法很明显,并非$SPARK_CONF_DIR中的所有内容都被运送到 YARN 容器中,参见。 github.com/apache/spark/blob/branch-2.2/resource-managers/yarn/… -
请随时使用新信息更新您的答案;)
标签: apache-spark hive hortonworks-data-platform spark-hive