使用spark群集模式时缺少配置单元站点

7xzttuei  于 2021-05-31  发布在  Hadoop
关注(0)|答案(4)|浏览(667)

使用hdp2.5.3,我一直在尝试调试一些yarn容器类路径问题。
由于hdp同时包含spark1.6和2.0.0,因此存在一些冲突的版本
我支持的用户能够在yarn中将spark2成功地用于配置单元查询 client 模式,但不是从 cluster 模式,它们会得到关于找不到表的错误,或者类似的错误,因为没有建立元存储连接。
我也猜是这样 --driver-class-path /etc/spark2/conf:/etc/hive/conf 或路过 --files /etc/spark2/conf/hive-site.xml 之后 spark-submit 会有用,但为什么不行 hive-site.xml 已从加载 conf 文件夹?
向hortonworks的医生求助 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接受

[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的位置 HADOOP_CONF_DIR 作为 HIVE_CONF_DIR 是分开的,但我的问题是我们如何让spark2来接电话 hive-site.xml 不需要在运行时手动将其作为参数传递?
编辑自然,因为我在hdp我使用ambari。以前的集群管理员已经在所有机器上安装了spark2客户机,因此所有可能是spark驱动程序的yarn节点管理器都应该具有相同的配置文件

w51jfk4q

w51jfk4q1#

发现此问题
你创造了一个 org.apache.spark.sql.SQLContext 在创建配置单元上下文之前 hive-site.xml 创建配置单元上下文时未正确拾取。
解决方案:在创建另一个sql上下文之前创建配置单元上下文。

os8fio9y

os8fio9y2#

我的理解是 local 或者 yarn-client 模式。。。
启动器检查hdfs、yarn、hive和hbase是否需要kerberos令牌

hive-site.xml 在类路径中由hive/hadoop客户端libs搜索(包括 driver.extraClassPath 因为驱动程序在启动程序内部运行,并且此时已经构建了合并的类路径)
驱动程序检查用于内部目的的元存储类型:由volatile derby示例支持的独立元存储或常规配置单元元存储
那是 $SPARK_CONF_DIR/hive-site.xml 使用配置单元接口时,元存储连接用于读取/写入驱动程序中的配置单元元数据
hive-site.xml 在类路径中由hive/hadoop客户端libs搜索(并且使用kerberos令牌,如果有的话)
所以你可以有一个 hive-site.xml 声明spark应该使用一个嵌入式内存derby示例作为沙盒(在内存中意味着“停止将所有这些临时文件留在身后”),而另一个 hive-site.xml 提供实际的配置单元元存储uri。一切都很好。
现在,在 yarn-cluster 模式,所有的机制几乎在一个肮脏的,没有文件记录的混乱爆炸。
启动程序需要自己的类路径设置来创建kerberos令牌,否则它将以静默方式失败。最好转到源代码,找出应该使用哪个未记录的env变量。
它可能还需要重写某些属性,因为硬编码的默认值突然不再是默认值(静默地)。
驱动程序无法点击原始文件 $SPARK_CONF_DIR ,它必须依赖于启动器提供的上传内容。包括一份 $SPARK_CONF_DIR/hive-site.xml ? 看来不是这样。
所以你可能在用德比的东西作为存根。
驱动程序必须处理在容器类路径上以任何顺序强制执行的任何东西。
此外,还有 driver.extraClassPath 默认情况下,添加不优先;为此你必须强迫 spark.yarn.user.classpath.first=true (它被翻译成了标准的hadoop属性,我现在记不清它的确切名称了,特别是因为有多个具有类似名称的道具可能在hadoop2.x中被弃用和/或不起作用)
你觉得这样不好吗?尝试在中连接到kerberized hbase yarn-cluster 模式。这种联系是在遗嘱执行人身上完成的,这是另一层邪恶。但我不高兴。
底线:重新开始诊断。
答。你真的确定神秘的“元存储连接错误”是由丢失的属性,特别是元存储uri引起的吗?
b。顺便问一下,您的用户是否明确使用 HiveContext ???
c。yarn呈现给驱动程序jvm的类路径到底是什么,驱动程序在打开metastore连接时呈现给hadoop libs的类路径到底是什么?
d。如果由yarn构建的类路径由于某种原因被弄乱了,那么最简单的解决方法是什么——更改优先级规则?加法?两者都有?

kjthegm6

kjthegm63#

你可以使用spark属性- spark.yarn.dist.files 并在那里指定hive-site.xml的路径。

bvpmtnay

bvpmtnay4#


cluster mode 配置是从 conf 运行 driver 容器,不是用来 spark-submit .

相关问题