Hive遠端模式安裝配置

junsansi發表於2013-05-02
 

Hive是由Facebook貢獻給Apache的開源專案,這個工具可以說是完全為DBA而生,它的的目標,是希望能讓精通SQL但不熟悉JAVA程式設計的工程師,在HADOOP的大潮中不至於下崗待業,即使完全不懂JAVA,也能在HDFS資料分析中繼續發揮光和熱。Hive是做什麼呢,個人理解可以將其視為一個SQL語言的直譯器,它能將DBA提交的SQL語句,轉換成能夠在HADOOP上執行的M-R作業,對於DBA或前端使用者來說,不必再將精力花在編寫M-R應用上,直接藉助SQL的易用性來實現大規模資料的查詢和分析。

 

與Hadoop類似,Hive也有三種執行模式:

 
       
  • 內嵌模式:將後設資料儲存在本地內嵌的Derby資料庫中,這得使用Hive最簡單的方式,不過使用內嵌模式的話,缺點也比較明顯,因為一個內嵌的Derby資料庫每次只能訪問一個資料檔案,這也就意味著不支援多會話連線。這種情況應對本地測試可能都有所不足,僅供初學者熟悉應用Hive;
  •    
  • 本地模式:這種模式是將後設資料庫儲存在本地的獨立資料庫中(比如說MySQL),這樣就能夠支援多會話和多使用者連線。
  •    
  • 遠端模式:如果我們的Hive客戶端比較多,在每個客戶端都安裝MySQL服務還是會造成一定的冗餘和浪費,這種情況下,就可以更進一步,將MySQL也獨立出來,將後設資料儲存在遠端獨立的MySQL服務中。
  •  
 

本例中,我們使用遠端模式。

 

Hive的安裝是極簡單的,下載安裝包,解壓縮並修改目錄屬主為grid,執行命令如下:

 
 

基本上來說,純粹的安裝這就算完成了。最重要的工作是配置,尤其當我們希望使用遠端模式時,配置的步驟就相當多了。

 

 

首先安裝MySQL資料庫,具體步驟略(如果mysql不是安裝在hive本地,那麼則需要在本地安裝mysql client,以及Connectior/J的連線驅動),詳細可參考:http://www.5ienet.com/note/html/stmysql55/index.shtml 。

 

登入到mysql命令列介面,建立hive專用帳戶並授權:

 
     

    mysql> grant all on *.* to hive identified by "hive";

     

    Query OK, 0 rows affected (0.00 sec)

     

     

    mysql> create database hivedb;

     

    Query OK, 1 row affected (0.00 sec)

     

     

    mysql> create database hivestat;

      Query OK, 1 row affected (0.00 sec)
 

下載mysql-connector-java-5.1.25-bin.jar,解壓縮到/usr/loca/hive-0.8.1/lib目錄下。

 

 

而後切換至grid使用者,配置hive執行環境:

 
     

    # su - grid

      $ vi /usr/local/hive-0.8.1/bin/hive-config.sh
 

增加三項HOME路徑的設定:

 
     

    export JAVA_HOME=/usr/local/jdk1.7.0_09

     

    export HADOOP_HOME=/usr/local/hadoop-0.20.2

      export HIVE_HOME=/usr/local/hive-0.8.1
 

通過模板建立一個hive配置檔案:

 
    $ cp /usr/local/hive-0.8.1/conf/hive-default.xml.template /usr/local/hive-0.8.1/conf/hive-site.xml
 

這個xml檔案可以根據實際需要進行配置,在本例中,重點關注下列選項:

 
       
  • hive.metastore.warehouse.dir:指定資料目錄,預設值是/user/hive/warehouse;
  •    
  • hive.exec.scratchdir:指定臨時檔案目錄,預設值是/tmp/hive-${user.name};
  •    
  • hive.metastore.local:指定是否使用本地後設資料,此處改為false,使用遠端的MySQL資料庫儲存後設資料;
  •    
  • javax.jdo.option.ConnectionURL:指定資料庫的連線串,此處修改為:jdbc:mysql://192.168.10.203:3306/hivedb?characterEncoding=utf8;
  •    
  • javax.jdo.option.ConnectionDriverName:指定資料庫連線驅動,此處修改為com.mysql.jdbc.Driver;
  •    
  • javax.jdo.option.ConnectionUserName:指定連線MySQL的使用者名稱,根據實際情況設定;
  •    
  • javax.jdo.option.ConnectionPassword:指定連線MySQL的密碼,根據實際情況設定;
  •    
  • hive.stats.dbclass:指定資料庫型別,此處修改為jdbc:mysql;
  •    
  • hive.stats.jdbcdriver:指定資料庫連線驅動,此處指定為com.mysql.jdbc.Driver;
  •    
  • hive.stats.dbconnectionstring:指定hive臨時統計資訊的資料庫連線方式,此處指定為jdbc:mysql://192.168.10.203:3306/hivestat?useUnicode=true&characterEncoding=utf8$amp;user=hive&password=hive$amp;createDatabaseIfNotExist=true;
  •    
  • hive.metastore.uris:指定hive後設資料訪問路徑,此處指定為thrift://127.0.0.1:9083;
  •  
 

 

而後通過模板建立hive的日誌輸出配置檔案:

 
    $ cp /usr/local/hive-0.8.1/conf/hive-log4j.properties.template /usr/local/hive-0.8.1/conf/hive-log4j.properties
 

將Hive軟體路徑加入到使用者的環境變數:

 
     

    $ vi ~/.bash_profile

     

    export HIVE_HOME=/usr/local/hive-0.8.1

      export PATH=${HIVE_HOME}/bin:$PATH
 

啟動兩項後臺服務:

 
     

    $ hive --service metastore & 

      $ hive --service hiveserver &
 

這樣就配置好了。Hive提供了多種介面訪問,接下來我們可以執行hive命令,進入到其命令列介面。

 
     

    [grid@hdnode3 ~]$ hive

     

    Logging initialized using configuration in file:/usr/local/hive-0.8.1/conf/hive-log4j.properties

     

    Hive history file=/tmp/grid/hive_job_log_grid_201305021152_1796409405.txt

     

    hive> show tables;

     

    OK

      Time taken: 1.338 seconds
 

若要通過HWI方式訪問,則先啟動hwi服務:

 
    $ hive --service hwi &
 

而後就可以通過瀏覽器訪問,預設訪問埠9999:http://[hive_host]:9999/hwi/

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/7607759/viewspace-759612/,如需轉載,請註明出處,否則將追究法律責任。

相關文章