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实操