hive-1.2.1安裝步驟


.Hive安裝和配置

1.先決條件

       已經安裝好hadoop-2.4.1,hbase-1.0.0。

2.下載Hive安裝包

       當前Hive可到apache官網下載,選擇的是hive-1.2.1。運行:

       wget http://www-us.apache.org/dist/hive/hive-1.2.1/apache-hive-1.2.1-bin.tar.gz
          然后將其解壓到Hadoop所在的目錄:/opt下。

        解壓:tar -zvxf apache-hive-1.2.1-bin.tar.gz /opt

        重命名下:mv /opt/apache-hive-1.2.1-bin /opt/hive-1.2.1

3.配置系統環境變量/etc/profile

        export HIVE_HOME=/opt/hive-1.2.1

        export PATH=$PATH:$HIVE_HOME/bin:$HIVE_HOME/conf

        source /etc/profile 使剛剛的配置生效

4.配置Hive

        hive的配置文件放在$HIVE_HOME/conf下,里面有4個默認的配置文件模板

          hive-default.xml.template                           默認模板

          hive-env.sh.template                hive-env.sh默認配置

          hive-exec-log4j.properties.template    exec默認配置

          hive-log4j.properties.template               log默認配置
        可不做任何修改hive也能運行,默認的配置元數據是存放在Derby數據庫里面的,大多數人都不怎么熟悉,我們得改用mysql來存儲我們的元數據,以及修改數據存放位置和日志存放位置等使得我們必須配置自己的環境,下面介紹如何配置。
        (1)創建配置文件,直接copy默認配置文件再修改即可,用戶自定義配置會覆蓋默認配置
         cp $HIVE_HOME/conf/hive-default.xml.template $HIVE_HOME/conf/hive-site.xml
       cp $HIVE_HOME/conf/hive-env.sh.template $HIVE_HOME/conf/hive-env.sh
       cp $HIVE_HOME/conf/hive-exec-log4j.properties.template $HIVE_HOME/conf/hive-exec-log4j.properties
       cp $HIVE_HOME/conf/hive-log4j.properties.template $HIVE_HOME/conf/hive-log4j.properties
        (2)修改 hive-env.sh
         vi $HIVE_HOME/conf/hive-env.sh 
       export HADOOP_HOME=/opt/hadoop-2.4.1
       export HIVE_CONF_DIR=/opt/hive-1.2.1/conf
        (3)修改 hive-log4j.properties
          mkdir $HIVE_HOME/logs
        vi $HIVE_HOME/conf/hive-log4j.properties
        hive.log.dir=/opt/hive-1.2.1/logs
        (4)修改 hive-site.xml
         vi $HIVE_HOME/conf/hive-site.xml
     <configuration>
     <property>
       <name>hive.metastore.warehouse.dir</name>
       <value>/opt/hive-1.2.1/warehouse</value>
     </property>
     <property>
       <name>hive.exec.scratchdir</name>
       <value>/opt/hive-1.2.1/scratchdir</value>
     </property>
     <property>
       <name>hive.querylog.location</name>
       <value>/opt/hive-1.2.1/logs</value>
     </property>
     <property>
       <name>javax.jdo.option.ConnectionURL</name>
       <value> jdbc:mysql://localhost:3306/hivedb?createDatabaseIfNotExist=true</value>
     </property>
     <property>
       <name>javax.jdo.option.ConnectionDriverName</name>
       <value>com.mysql.jdbc.Driver</value>
     </property>
     <property>
       <name>javax.jdo.option.ConnectionUserName</name>
       <value>*****(根據自己的用戶名填)</value>
     </property>
     <property>
       <name>javax.jdo.option.ConnectionPassword</name>
       <value>*****(根據自己的密碼填)</value>
     </property>
     <property>
       <name>hive.aux.jars.path</name>
      <value>file:///opt/hive-1.2.1/lib/hive-hbase-handler-1.2.1.jar,file:///opt/hive-1.2.1/lib/hbase-client-1.0.0.jar,file:///opt/hive-1.2.1/lib/hbase-common-1.0.0.jar,file:///opt/hive-1.2.1/lib/hbase-common-1.0.0-tests.jar,file:///opt/hive-1.2.1/lib/hbase-protocol-1.0.0.jar,file:///opt/hive-1.2.1/lib/hbase-server-1.0.0.jar,file:///opt/hive-1.2.1/lib/htrace-core-3.1.0-incubating.jar,file:///opt/hive-1.2.1/lib/zookeeper-3.4.6.jar,file:///opt/hive-1.2.1/lib/protobuf-java-2.5.0.jar,file:///opt/hive-1.2.1/lib/guava-12.0.1.jar</value>
     </property>

</configuration>
        下面解釋下一些重要的配置項:
         hive.metastore.warehouse.dir:指定hive的數據存儲目錄,指定的是HDFS上的位置,默認值:/user/hive/warehouse,為了便於管理,hive-1.2.1文件下創建文件warehouse。
         hive.exec.scratchdir:指定hive的臨時數據目錄,默認位置為:/tmp/hive-${user.name}。為了便於管理,hive-1.2.1文件下創建文件scratchdir。
               javax.jdo.option.ConnectionURL:指定hive連接的數據庫的數據庫連接字符串
         javax.jdo.option.ConnectionDriverName:指定驅動的類入口名稱
         hive.aux.jars.path:是與hbase整合的時候需要用到的jar包,必須加上
5.復制hbase庫到hive下面
         cp $HBASE_HOME/lib/hbase-* $HIVE_HOME/lib/
         cp $HBASE_HOME/lib/htrace-core-3.1.0-incubating.jar $HIVE_HOME/lib/
         cp $HBASE_HOME/lib/zookeeper-3.4.6.jar $HIVE_HOME/lib/

提示已有文件,是否覆蓋,選y。
         cp $HBASE_HOME/lib/protobuf-java-2.5.0.jar $HIVE_HOME/lib/
         cp $HBASE_HOME/lib/guava-12.0.1.jar $HIVE_HOME/lib/

並刪除了,原HIVE_HOME/lib/下的guava-14.0.1.jar。
6.上傳jdbc jar包
         默認hive使用Derby數據庫存放元數據,並且也集成了Derby數據庫及連接驅動jar包,但此處我們換成了MySQL作為數據庫,所以還必須得有MySQL的JDBC驅動包。
          由於之前系統已經有jdbc jar包,且在cd /usr/share/java目錄下,直接將驅動包復制到$HIVE_HOME/lib下:cp mysql-connector-java-5.1.17.jar $HIVE_HOME/lib        
 7.安裝並配置MySQL
          由於已經安裝好mysql,故可以直接使用。

啟動hive在進行檢測的時候 ,系統提示:

 

經查閱資料,發現hive-1.2.1與hbase-1.0.0有版本不兼容的問題,需要重新編譯hive-hbase-handle-1.2.1.jar。

8.編譯hive-hbase-handle-1.2.1.jar

(1)下載hive-1.2.1源碼

        在虛擬機中,用wget命令在http://www-eu.apache.org/dist/hive/中下載apache-hive-1.2.1-src.tar.gz,下載好后,把下載好的文件復制到Windows系統中。

(2)在Windows系統中,用eclipse建立編譯工程,名稱隨便,普通Java project,這里以hivehbase為名。

 

(3)將hive源碼中的hbase-hadler部分導入到編譯項目中

選擇src右擊import-->General-->FileSytem,下一步

 

找到下載解壓的hive源碼目錄,找到hbase-hadler目錄,在scr中選擇java目錄,確認后保證包名以org開頭
 

(4)然后開始給eclipse項目下,創建一個Referenced Libraries目錄,加入相關的jar包,確保順利通過編譯,根據hive的版本,導入的jar包也會有所差異,直到項目沒有小紅叉。

        需要引入的jar包,如下圖所示,這些包在虛擬機中的/opt/hive-1.2.1/lib和/opt/hbase-1.0.0目錄下都有,直接復制拷貝過來即可,注意的是,jar的版本號會根據你所使用的hadoop、hbase、hive版本號,有所變化。

        具體需要引入的jar包如下圖:

 

 

(5)編譯打包

選擇項目src目錄,右擊Export-->Java-->JAR file-->Next,選擇項目下的src,並設置導出路徑,名稱可以直接寫作hive-hbase-handler-1.2.1.jar其他默認,Finish后即可。

 

然后把導出的hive-hbase-handler-1.2.1.jar 包放入hive-1.2.1安裝路徑的lib下,覆蓋原來的包。此時,hive-1.2.1安裝成功。

 

二.驗證hive和hbase的整合

(1)開始時:

hive為空

 

hbase為空

 

(2)執行

 

(3)對比發生變化

hbase顯示新建表xyz

 

hive顯示新建表hbase_table_1

 

(4)通過hbase添加數據

在hbase中插入一條記錄

 

分別查看hbase和hive表發生的變化:

  1. hbase變化

 

     2.hive變化

 

.Hive網絡接口(Web UI)

1.查看hive-site.xml中有關hwi的內容,默認是

 

將hive.hwi.war.file的值修改為/lib/hive-hwi-1.2.1.war

 

2.下載hive-1.2.1源碼包

wget http://www-us.apache.org/dist/hive/hive-1.2.1/ apache-hive-1.2.1-src.tar.gz

tar -zxvf apache-hive-1.2.1-src.tar.gz 

cd apache-hive-1.2.1-src 

cd hwi/web 

zip hive-hwi-1.2.1.zip ./*

再更改后綴名為war,復制到HIVE_HOME/lib/

mv hive-hwi-1.2.1.zip hive-hwi-1.2.1.war

mv hive-hwi-1.2.1.war $HIVE_HOME/lib

 

3.拷貝tools包

cp /usr/java/jdk1.7.0_51/lib/tools.jar /opt/hive-1.2.1/lib

如果不進行此步驟,將無法啟動界面。

 

配置完成后,開啟服務:

 

並且可以查看到HIVE的網頁界面:

 

.Hivejdbc接口

vi $HIVE_HOME/conf/hive-site.xml

 

將上標簽修改為:

<property>

  <name>hive.server2.thrift.bind.host</name>

  <value>172.16.0.147</value>

  <description>Bind host on which to run the HiveServer2 Thrift interface.

  Can be overridden by setting $HIVE_SERVER2_THRIFT_BIND_HOST</description>

</property>

 

測試hiveserver2,出現:

 

修改hadoop 配置文件/opt/hadoop-2.4.1/etc/hadoop里的core-site.xml,加入

<property>

    <name>hadoop.proxyuser.root.hosts</name>

    <value>*</value>

</property>

<property>

    <name>hadoop.proxyuser.root.groups</name>

    <value>*</value>

</property>

 

重啟hadoop

將hadoop退出安全模式:

hadoop dfsadmin -safemode leave

 

重新啟動:

 

啟動成功!

遇到的問題一:

 

解決方案:刪除/opt/hive-2.0.0/lib/log4j-slf4j-impl-2.4.1.jar

遇到的問題二:

解決方案:刪除/opt/hive-2.0.0/lib/hive-jdbc-2.0.0-standalone.jar

 

遇到的問題三:

 

查閱http://blog.csdn.net/zwx19921215/article/details/42776589后,采用如下方案:

1.查看hive-site.xml配置,會看到配置值含有"system:java.io.tmpdir"的配置項

2.新建文件夾/opt/hive-1.0.1/iotmp
3.將含有"system:java.io.tmpdir"的配置項的值修改為如上地址

 

遇到的問題四:

默認的是Derby類型,但是只支持單用戶,刪除/root/metastore_db,即可。

 

遇到的問題五:

 

hadoop下的jline版本較老,用hive中的jline將其替換

cp /opt/hive-1.2.1/lib/jline-2.12.jar /opt/hadoop-2.4.1/share/hadoop/yarn/lib/

為防止誤刪,將老版本jline改名

mv /opt/hadoop-2.4.1/share/hadoop/yarn/lib/jline-0.9.94.jar /opt/hadoop-2.4.1/share/hadoop/yarn/lib/old-jline-0.9.94.jar

 

遇到的問題六:

但是有提示metastore.local不存在,解決方案參考下圖:

 

經測試:

 

注:此項是配置在hive-site.xml中,解決報錯之后就沒有在之前的安裝步驟寫入此項。

 




免責聲明!

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



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