HIVE安裝配置


Hive簡介

Hive 基本介紹
Hive 實現機制
Hive 數據模型
Hive 如何轉換成MapReduce
Hive 與其他數據庫的區別
以上詳見:https://chu888chu888.gitbooks.io/hadoopstudy/content/Content/8/chapter8.html

Hive 和 Hbase 的區別
詳見:http://www.cnblogs.com/justinzhang/p/4273470.html


Hive環境模式

  • 內嵌模式
    將元數據保存在本地內嵌的 Derby 數據庫中,這是使用 Hive 最簡單的方式。但是這種方式缺點也比較明顯,因為一個內嵌的 Derby 數據庫每次只能訪問一個數據文件,這也就意味着它不支持多會話連接。

  • 本地模式
    這種模式是將元數據保存在本地獨立的數據庫中(一般是 MySQL),這用就可以支持多會話和多用戶連接了。

  • 遠程模式
    此模式應用於 Hive 客戶端較多的情況。把 MySQL 數據庫獨立出來,將元數據保存在遠端獨立的 MySQL 服務中,避免了在每個客戶端都安裝 MySQL 服務從而造成冗余浪費的情況。


下載安裝HIVE

Hive 是基於 Hadoop 文件系統之上的數據倉庫。因此,安裝Hive之前必須確保 Hadoop 已經成功安裝。

本次教程,使用hive2.0.1版本,下載地址:http://mirrors.hust.edu.cn/apache/hive/hive-2.0.1/
下載apache-hive-2.0.1-bin.tar.gz,解壓至/data/hive

tar -zxvf apache-hive-2.0.1-bin.tar.gz -C /data
cd /data
mv apache-hive-2.0.1-bin hive

配置環境變量

# 編輯文件
vim /etc/profile

# 文件末尾添加
export HIVE_HOME=/data/hive
export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH

# 使修改生效
source /etc/profile

內嵌模式

(1)修改 Hive 配置文件

Hive工程的配置文件為 hive-site.xml,默認情況下,該文件並不存在,需要拷貝它的模版來實現。

cd /data/hive/conf
cp hive-default.xml.template hive-site.xml

hive-site.xml的主要配置有

<property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    <description>location of default database for the warehouse</description>
</property>
..
<property>
    <name>hive.exec.scratchdir</name>
    <value>/tmp/hive</value>
    <description>HDFS root scratch dir for Hive jobs which gets created with write all (733) permission. For each connecting user, an HDFS scratch dir: ${hive.exec.scratchdir}/&lt;username&gt; is created, with ${hive.scratch.dir.permission}.</description>
</property>
  • hive.metastore.warehouse.dir
    該參數指定了 Hive 的數據存儲目錄,默認位置在 HDFS 上面的 /user/hive/warehouse 路徑下。
  • hive.exec.scratchdir
    該參數指定了 Hive 的數據臨時文件目錄,默認位置為 HDFS 上面的 /tmp/hive 路徑下。

hive-site.xml文件內容不需修改,文件配置詳解移步:https://my.oschina.net/HIJAY/blog/503842?p=1

接下來我們還要修改Hive目錄下的/conf/hive-env.sh 文件,該文件默認也不存在,同樣是拷貝它的模版來修改:

cd /data/hive/conf
cp hive-env.sh.template hive-env.sh

vim hive-env.sh

# 做如下修改
export HADOOP_HEAPSIZE=1024
# Set HADOOP_HOME to point to a specific hadoop install directory
HADOOP_HOME=/data/hadoop
# Hive Configuration Directory can be controlled by:
export HIVE_CONF_DIR=/data/hive/conf
# Folder containing extra ibraries required for hive compilation/execution can be controlled by:
export HIVE_AUX_JARS_PATH=/data/hive/lib

(2)創建必要目錄

前面我們看到 hive-site.xml 文件中有兩個重要的路徑【/user/hive/warehouse】與【/tmp/hive】。
切換到hadoop 用戶下查看HDFS是否有這些路徑,如果沒有,就新建目錄,並且給它們賦予用戶寫權限。

$ hadoop dfs -mkdir /user/hive/warehouse
$ hadoop dfs -mkdir /tmp/hive
$ hadoop dfs -chmod 777 /user/hive/warehouse
$ hadoop dfs -chmod 777 /tmp/hive

如果你遇到 no such file or directory 類似的錯誤,就一步一步新建目錄,例如:

$ hadoop dfs -mkdir /tmp
$ hadoop dfs -mkdir /tmp/hive

然后通過相關命令檢查是否新建成功,比如【hdfs dfs -lsr /】。

(3)運行 Hive

前面我們已經提到過,內嵌模式使用默認配置和 Derby 數據庫,所以無需其它特別修改,先 ./start-all.sh 啟動 Hadoop, 然后直接運行 hive:

[root@iZwz9b62gfdv0s2e67yo8kZ /]$ cd /data/hive/bin/
[root@iZwz9b62gfdv0s2e67yo8kZ bin]$ hive

你很可能會遇到與【${system:java.io.tmpdir}】有關的這個錯誤:

解決方法是修改 hive-site.xml 中所有包含 ${system:java.io.tmpdir} 字段的 value。
可自己新建一個目錄來替換它,例如 /data/hive/iotmp,同時賦予相關寫權限。

修改后再次啟動 hive,可能又遇到數據庫未初始化的錯誤:

執行以下命令初始化即可

cd /data/hive/bin
./schematool -initSchema -dbType derby

繼續報錯:

Initialization script hive-schema-2.0.0.derby.sql
Error: FUNCTION 'NUCLEUS_ASCII' already exists. (state=X0Y68,code=30000)
org.apache.hadoop.hive.metastore.HiveMetaException: Schema initialization FAILED! Metastore state would be inconsistent !!
*** schemaTool failed ***

這個function的構建是數據庫初始化的一部分,既然存在了,就直接去hive-schema-2.0.0-derby.sql里面注釋掉【CREATE FUNCTION】的相關語句好了。

注釋后再次啟動hive,就ok了


本地模式

(1)安裝 MySQL
成功安裝mysql后啟動服務,並創建名為hive的數據庫,再創建一個hive用戶為HIVE所用。
mysql安裝方法詳見:MySQL安裝及卸載

MySQL安裝后,還需要下載一個MySQL的JDBC驅動包。
這里使用的是mysql-connector-java-5.1.40-bin.jar,需將其復制到$HIVE_HOME/lib目錄下。

$ tar -zxvf mysql-connector-java-5.1.40.tar.gz
$ cd mysql-connector-java-5.1.40
$ mv mysql-connector-java-5.1.40-bin.jar /data/hive/lib/

(2)修改 hive-site.xml 配置文件

最后,依然是修改 $HIVE_HOME/conf 下的 hive-site.xml 文件,把默認的 Derby 修改為 MySQL :

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    //所連接的MySQL數據庫實例
    <value>jdbc:mysql://localhost:3306/hive</value>
</property>

<property>
    <name>javax.jdo.option.ConnectionDriverName</name>
    //連接的MySQL數據庫驅動
    <value>com.mysql.jdbc.Driver</value>
</property>

<property>
    <name>javax.jdo.option.ConnectionUserName</name>
    //連接的MySQL數據庫用戶名
    <value>hive</value>
</property>

<property>
    <name>javax.jdo.option.ConnectionPassword</name>
    //連接的MySQL數據庫密碼
    <value>hive</value>
</property>

(3)啟動 Hive

啟動 Hive 的方式同內嵌模式一樣,需先初始化數據庫.

cd /data/hive/bin
./schematool -initSchema -dbType mysql

然后運行HIVE,可能發現運行不成功,並一直收到警告

修改hive-site.xml文件的javax.jdo.option.ConnectionURL選項即可

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    //所連接的MySQL數據庫實例
    <value>jdbc:mysql://localhost:3306/hive?characterEncoding=utf8&useSSL=false</value>
</property>

再次啟動HIVE,仍然報錯

經查,再次修改javax.jdo.option.ConnectionURL選項,然后啟動HIVE,發現啟動成功。

<property>
    <name>javax.jdo.option.ConnectionURL</name>
    //所連接的MySQL數據庫實例
    <value>jdbc:mysql://localhost:3306/hive?characterEncoding=utf8&amp;useSSL=false</value>
</property>

鏈接相關

大數據進階計划
http://wangxin123.com/2017/02/18/大數據進階計划/

Hive下載地址
http://mirrors.hust.edu.cn/apache/hive/hive-2.0.1/


免責聲明!

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



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