Hive 本地調試方法


關鍵詞:hive, debug

 

本地調試(local debug)

Hive 可分為 exec (hive-exec,主要對應源碼里的ql目錄) 和 metastore 兩部分,其中exec對外有兩種接口方式 CLIDriver 和 HiveServer2的ThriftCLIService。前者對應的就是直接執行hive命令的command line,后者對應就是thrift直連或jdbc的連接方式,因此這里其實有個知識點:hive命令的執行是不經過hiveserver2的服務的,雖然底層代碼是共用的。而metastore對外主要是以Thrift方式為主,並實現了一個客戶端 HiveMetaStoreClient。

 

環境准備

  • 首先,需要在本地部署好Hadoop+HDFS並啟動HDFS服務,並且HDFS的目錄/tmp 和 /user/hive 目錄確保 hive用戶有可寫權限(如果hive的doAs配置關了,想調試storageBased權限的自己額外去注意HDFS權限的配置即可)。
  • MySQL並不是必須的,如果你不關注metastore的存儲,則無需指定相關的metastore配置,Hive會自動選擇和初始化嵌入式數據庫derby作為metastore的存儲。
  • 一個好的IDE,Idea或Eclipse,本文用的是Idea。
  • maven3,JDK1.7+

代碼准備

  • 去Hive官網或對應發行版的官網(HDP、CDH)等去找到官方提供的對應版本的Hive源碼下載
  • 去Hive官網或對應發行版的官網(HDP、CDH)等去找到官方提供的對應版本的Hive 運行版下載 。需要運行版的原因是用hive傳統方式啟動需要hive/lib/下的依賴jar。
  • 先對源碼打包一次,防止導入IDE時太慢。命令如下:
    mvn clean package -P hadoop-2 -DskipTests 
    記得要指定hadoop版本的profile,初次打包沒什么問題可以跳過測試,不然要挺久的。然后大陸連apache central repo有時可能會超時,超時請在不同時間段多試幾次或使用梯子。
  • 源碼maven項目導入IDE

調試exec

  • 在Hive運行版目錄下執行 hive --service metastore 啟動 metastore
  • 將本地Hadoop的core-site.xml放到 hive 源碼目錄的 src/main/resources 下,重新打包(如有必要)
  • debug模式運行hive-cli中的CLIDriver類,此時控制台可見hive command line,可以輸入命令然后再ql的相應代碼中打斷點進行單步或攔截。

調試metastore

  • 以debug模式啟動HiveMetastore
  • 另外寫testcase使用HiveMetastoreClient類進行交互訪問

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM