1、下載hive:wget http://mirrors.cnnic.cn/apache/hive/hive-0.12.0/hive-0.12.0.tar.gz
2、解壓hive安裝文件 tar -zvxf hive-0.12.0.tar.gz
3、配置hive環境變量,初始化hive在hdfs上的工作目錄(因此在部署hive之前,請確保已經完整的部署了hadoop,並設置好相關的環境,hadoop版本是2.2.0,才和此hive版本相符)
vi /etc/profile 添加環境變量值
export HIVE_HOME=/home/likehua/hive/hive-0.12.0
export PATH = $HIVE_HOME/bin:$PATH
source /etc/profile 使修改的環境變量立即生效
初始化hadoop 環境變量
./hadoop fs -mkdir /tmp
./hadoop fs -mkdir /usr/hive/warehouse
./hadoop fs -chmod g+w /tmp
./hadoop fs -chmod g+w /usr/hive/warehouse
配置hive相關的配置文件:/home/likehua/hive/hive-0.12.0/conf
講hive-default.xml.template改為hive-site.xml
hive-log4j.properties.template改為hive-log4j.properties
hive-exec-log4j.properties.template改為hive-exec-log4j.properties
執行命令:cd $HIVE_HOME/bin ./hive
默認將會進入hive的控制台,執行:show tables;如果不出錯,則表明默認版本的hive安裝成功
(其實會報錯,是一個xml的錯誤,沒有想到hive的發布版,xml居然也會有錯誤,汗!xml的開始標簽和結束標簽要
一致,根據錯誤信息,將auth標簽改為value,ok。
如果報錯“SLF4J: Actual binding is of type [org.slf4j.impl.Log4jLoggerFactory]
MetaException(message:Version information not found in metastore. )” 則修改hive-site.xml中hive.metastore.schema.verification 為false
)。
默認版本hive的metastore保存在一個叫derby的數據庫的,該
數據庫是一個嵌入式數據庫,如果同時有兩個人或者多個人操作,就會報錯。下面介紹,如果將hive的metasotre
信息保存到關系型數據庫中,本文以oracle為例,具體步驟如下:
1)、下載oracle jdbc驅動 ojdbc6.jar,放到$HIVE_HOME/lib文件夾下,如果不存在lib則創建。
2)、修改$HIVE_HOME/conf下配置文件hive-site.xml。主要修改:連接字符串、驅動、用戶名、密碼等幾處。
具體參數有:
連接字符串
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:oracle:thin:@192.98.12.60:1521/ORCL</value>
<description>[jdbc:thin:db11gx64.geoway.net/db11g]JDBC connect string for a JDBC metastore</description>
</property>
數據庫jdbc驅動
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>oracle.jdbc.driver.OracleDriver</value>
<description>Driver class name for a JDBC metastore</description>
</property>
用戶名
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>portal</value>
<description>username to use against metastore database</description>
</property>
密碼
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>portal</value>
<description>password to use against metastore database</description>
</property>
3)、將上面幾處修改以后,在目錄$HIVE_HOME/bin下執行./hive 命令進入控制台,執行show talbes;如果不報錯,則
表名部署成功,如果失敗,則需要在日志文件中定位錯誤信息(在linux中部署程序,如果沒有日志信息,那是很悲劇的。記得上面有修改配置文件的步驟
hive-log4j.properties中,會記錄日志的存放路徑,默認路徑:hive.log.dir=/tmp/${user.name}下面的hive.log文件里,${usr.name}表示
登錄的用戶名。加入,登錄用戶為root,那么它的log日志訪問路徑為:/tmp/root/hive.log.)
日志文件中的錯誤主要有以下幾類:a、數據庫驅動不存在。b、數據庫連接參數錯誤。c、表或則視圖不存在。
第三種情況較多,因為當你修改默認的metastore存儲方式時,在新的數據庫中,很多元信息是沒有初始化的。需要我們手動在目標數據庫中初始化。有關
初始化腳本存放在$HIVE_HOME/scripts/metastore/upgrade目錄下,在該目錄中默認會有derby、mysql、oracle、postgres幾類數據庫的初始化或者更新腳本。
由於筆者使用oracle數據庫,所以就進入$HIVE_HOME/scripts/metastore/upgrade/oracle目錄,進去之后,你會發現有很多sql腳本,真是一團糟,不知道怎么更新
或者初始化怎么辦,教你一個土方法,那就是都執行一遍,然后來回啟動hive,查看日志解決問題,最終會把問題解決的,但是,實際上有些規律的,找到
010-HIVE-3072.oracle.sql、011-HIVE-3649.oracle.sql、012-HIVE-1362.oracle.sql、013-HIVE-3255.oracle.sql、014-HIVE-3764.oracle.sql這四個腳本依次執行
,由於我的hive的版本是hive-0.12.0,那么我再執行hive-schema-0.12.0.oracle.sql腳本,然后再進入hive shell執行,show tables;如果沒有報錯,那說明一切ok,
如果還有錯誤,那么根據日志的錯誤信息,在網上搜索找到解決方案。
4)、另外一種方式來初始化hive在關系型數據庫上的metastore的初始化,但是我一直沒有初始化成功,那就是配置好hive以后執行命令 ./hive --service metastore,
此問題以后研究。