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