0556-6.1.0-Hive On Spark修改作业临时配置文件生成目录
- 2019 年 11 月 28 日
- 筆記
作者:李继武
1
文档编写目的
在Hive On Spark的模式下,无论是通过Beeline还是hive CLI访问Hive,使用Spark引擎执行SQL语句时,都会在/tmp目录下生成一个spark_submit.*.properties文件。Hive CLI方式会在当前节点/tmp目录生成,使用Beeline方式则会在HiveServer2所在节点的/tmp目录下生成。
一般情况下spark-submit.xxx.properties文件生成在/tmp目录下并没有问题,该文件主要是用向集群提交Spark作业时指定作业的运行参数。
但在一些场景中,由于各种原因不允许往/tmp目录写入文件时,就需要修改生成该文件的目录,本文档主要介绍如何修改该目录。
- 测试环境:CDH6.1.0
2
控制台配置
尝试通过控制台在hive或者spark组件的配置中进行修改
1.查看hive组件,搜索/tmp
从图上可以得知hive组件的配置中原来有关/tmp的配置只有两项,一项为heapdump输出目录,另一项为配置审计过滤条件,均不是配置spark-submit.xxx.properties的生成目录。
2.查看spark组件,搜索/tmp
从图上可以得知hive组件的配置中原来有关/tmp的配置只有一项,为heap dump输出目录,不是配置spark-submit.xxx.properties的生成目录。
从以上可知,控制台上并没有显著可直接配置该目录的配置项。
3
查看官网
1.查看hive官网配置介绍地址如下
https://cwiki.apache.org/confluence/display/Hive/Configuration+Properties
为默认情况下该文件生成在/tmp目录下,因此仍然直接搜索”/tmp”,得到以下几个与“/tmp”目录有相关的配置项,依次查看。
从以上配置项的描述中,可以看到并没有相符合的配置项存在。
2.查看spark官网配置介绍
http://spark.apache.org/docs/latest/configuration.html
同样直接搜索”/tmp”,得到以下几个与“/tmp”目录有相关的配置项,依次查看。
从以上配置项的描述中,可以看到并没有相符合的配置项存在。
4
Hive源码查看
通过hive2源代码,查看spark-submit.xxx.properties文件生成时目录的选择。生成该配置文件所在的类为org.apache.hive.spark.client.AbstractSparkClient,在该类的startDriver()方法中通过如下代码生成该配置文件:
查看调用关系
通过调用关系我们可以看到,该文件生成在java.io.tmpdir配置的目录当中,默认情况下,不同的系统该默认值不同,window系统下该值是C:Users登录用户~1AppDataLocalTemp,而Linux系统该值是/tmp。
因此,通过在hiveserver2的启动配置内,添加“-Djava.io.tmodir=目标目录”,就能修改该文件生成的目录。
5
验证
这里我们通过将该目录修改到/data0/tmp目录下为例进行测试
1.在hiveserver2所在节点上,创建/data0/tmp目录,并赋予1777权限
mkdir -p /data0/tmp chmod 1777 /data0/tmp
2.在控制台上打开hive组件的配置界面,搜索“JavaConfiguration Options for HiveServer2”,在末尾添加:
-Djava.io.tmpdir=/data0/tmp
保存并根据提示重启Hive服务。
3.打开beeline连接hiveserver2
在未执行需要spark参与的sql之前,未生成spark-submit.xxx.properties文件:
4.执行count()操作
5.查看spark-submit.xxx.properties文件生成情况
可以看到,现在该文件已不再生成在/tmp目录下,而是生成在新配置的/data0/tmp目录下。
提示:代码块部分可以左右滑动查看噢
为天地立心,为生民立命,为往圣继绝学,为万世开太平。 温馨提示:如果使用电脑查看图片不清晰,可以使用手机打开文章单击文中的图片放大查看高清原图。
推荐关注Hadoop实操,第一时间,分享更多Hadoop干货,欢迎转发和分享。
原创文章,欢迎转载,转载请注明:转载自微信公众号Hadoop实操