1. 程式人生 > >hive2.1.1安裝部署

hive2.1.1安裝部署

version -c sset direct out replace 感謝 查看表 變量

一、Hive 運行模式

與 Hadoop 類似,Hive 也有 3 種運行模式:

1. 內嵌模式

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

2. 本地模式

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

3. 遠程模式

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

二、下載安裝 Hive

http://hive.apache.org/downloads.html

tar -xzvf apache-hive-2.1.1-bin.tar.gz ##解壓

三、配置系統環境變量
修改 /etc/profile 文件 vi /etc/profile 來修改(root用戶操作):
[html] view plain copy 技術分享圖片技術分享圖片
  1. 設置 Hive環境變量
  2. # Hive environment
  3. export HIVE_HOME=/home/hadoop/cloud/apache-hive-2.1.1-bin
  4. export PATH=$HIVE_HOME/bin:$HIVE_HOME/conf:$PATH
[html] view plain copy 技術分享圖片技術分享圖片
  1. 使環境變量生效:
  2. source /etc/profile


四、內嵌模式

(1)修改 Hive 配置文件

$HIVE_HOME/conf 對應的是 Hive 的配置文件路徑,類似於之前學習的Hbase, 該路徑下的 hive-site.xml 是 Hive 工程的配置文件。默認情況下,該文件並不存在,我們需要拷貝它的模版來實現:

[html] view plain copy 技術分享圖片技術分享圖片
  1. cp hive-default.xml.template hive-site.xml


hive-site.xml 的主要配置有:

技術分享圖片

技術分享圖片

  • hive.metastore.warehouse.dir
    該參數指定了 Hive 的數據存儲目錄,默認位置在 HDFS 上面的 /user/hive/warehouse 路徑下。

  • hive.exec.scratchdir
    該參數指定了 Hive 的數據臨時文件目錄,默認位置為 HDFS 上面的 /tmp/hive 路徑下。

同時我們還要修改 Hive 目錄下 /conf/hive-env.sh 文件(請根據自己的實際路徑修改),該文件默認也不存在,同樣是拷貝它的模版來修改:
cp hive-env.sh.template hive-env.sh
[html] view plain copy 技術分享圖片技術分享圖片
  1. # Set HADOOP_HOME to point to a specific hadoop install directory
  2. HADOOP_HOME=/home/hadoop/cloud/hadoop-2.7.3
  3. # Hive Configuration Directory can be controlled by:
  4. export HIVE_CONF_DIR=/home/hadoop/cloud/apache-hive-2.1.1-bin/conf
  5. # Folder containing extra ibraries required for hive compilation/execution can be controlled by:
  6. export HIVE_AUX_JARS_PATH=/home/hadoop/cloud/apache-hive-2.1.1-bin/lib

(2)創建必要目錄


前面我們看到 hive-site.xml 文件中有兩個重要的路徑,切換到 hadoop 用戶下查看 HDFS 是否有這些路徑:
[html] view plain copy 技術分享圖片技術分享圖片
  1. hadoop fs -ls /
沒有發現上面提到的路徑,因此我們需要自己新建這些目錄,並且給它們賦予用戶寫(W)權限。
[html] view plain copy 技術分享圖片技術分享圖片
  1. $HADOOP_HOME/bin/hadoop fs -mkdir -p /user/hive/warehouse
  2. $HADOOP_HOME/bin/hadoop fs -mkdir -p /tmp/hive/
  3. hadoop fs -chmod 777 /user/hive/warehouse
  4. hadoop fs -chmod 777 /tmp/hive

檢查是否新建成功 hadoop fs -ls / 以及 hadoop fs -ls /user/hive/ :

(3)修改 io.tmpdir 路徑

同時,要修改 hive-site.xml 中所有包含 ${system:java.io.tmpdir} 字段的 value 即路徑(vim下 / 表示搜索,後面跟你的關鍵詞,比如搜索 hello,則為 /hello , 再回車即可),你可以自己新建一個目錄來替換它,例如 /home/Hadoop/cloud/apache-hive-2.1.1-bin/iotmp

[html] view plain copy 技術分享圖片技術分享圖片
  1. mkdir /home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp
  2. chmod 777 /home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp
  3. 把hive-site.xml 中所有包含 ${system:Java.io.tmpdir}替換成/home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp
全局替換命令 先按Esc鍵 再同時按shift+:把以下替換命令粘貼按回車即可全局替換
[html] view plain copy 技術分享圖片技術分享圖片
  1. %s#${system:java.io.tmpdir}#/home/hadoop/cloud/apache-hive-2.1.1-bin/iotmp#g

(4)運行 Hive
[html] view plain copy 技術分享圖片技術分享圖片
  1. ./bin/hive
報錯
技術分享圖片

解決辦法:./bin/schematool -initSchema -dbType derby

報錯
技術分享圖片

解決方法:刪除/home/hadoop/cloud/apache-hive-2.1.1-bin目錄下 rm -rf metastore_db/ 在初始化:./bin/schematool -initSchema -dbType derby
重新運行

./bin/hive

報錯

技術分享圖片

/tem/hive 沒寫的權限

Hive本身自帶一個數據庫,但是有弊端,hive本身數據庫,每次只允許一個用戶登錄

mysql安裝:http://blog.csdn.net/u014695188/article/details/51532410

設置mysql關聯hive

修改配置文件

### 創建hive-site.xml文件
在hive/conf/目錄下創建hive-site.xml文件

[html] view plain copy 技術分享圖片技術分享圖片
  1. <?xml version="1.0" encoding="UTF-8" standalone="no"?>
  2. <?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
  3. <configuration>
  4. <property>
  5. <name>javax.jdo.option.ConnectionURL</name>
  6. <value>jdbc:mysql://192.168.169.134:3306/hive?createDatabaseIfNotExist=true</value>
  7. </property>
  8. <property>
  9. <name>javax.jdo.option.ConnectionDriverName</name>
  10. <value>com.mysql.jdbc.Driver</value>
  11. </property>
  12. <property>
  13. <name>javax.jdo.option.ConnectionUserName</name>
  14. <value>root</value>
  15. </property>
  16. <property>
  17. <name>javax.jdo.option.ConnectionPassword</name>
  18. <value>123456</value>
  19. </property>
  20. <property>
  21. <name>hive.metastore.schema.verification</name>
  22. <value>false</value>
  23. <description>
  24. Enforce metastore schema version consistency.
  25. True: Verify that version information stored in metastore matches with one from Hive jars. Also disable automatic
  26. schema migration attempt. Users are required to manully migrate schema after Hive upgrade which ensures
  27. proper metastore schema migration. (Default)
  28. False: Warn if the version information stored in metastore doesn‘t match with one from in Hive jars.
  29. </description>
  30. </property>
  31. </configuration>

報錯:Caused by: MetaException(message:Version information not found in metastore. )

解決:hive-site.xml加入

[html] view plain copy 技術分享圖片技術分享圖片
  1. <property>
  2. <name>hive.metastore.schema.verification</name>
  3. <value>false</value>
  4. <description>
  5. Enforce metastore schema version consistency.
  6. True: Verify that version information stored in metastore matches with one from Hive jars. Also disable automatic
  7. schema migration attempt. Users are required to manully migrate schema after Hive upgrade which ensures
  8. proper metastore schema migration. (Default)
  9. False: Warn if the version information stored in metastore doesn‘t match with one from in Hive jars.
  10. </description>
  11. </property>



報錯:缺少mysql jar包

解決:將其(如mysql-connector-Java-5.1.15-bin.jar)拷貝到$HIVE_HOME/lib下即可。

報錯:

[html] view plain copy 技術分享圖片技術分享圖片
  1. Exception in thread "main" java.lang.RuntimeException: Hive metastore database is not initialized.
  2. Please use schematool (e.g. ./schematool -initSchema -dbType ...) to create the schema. If needed,
  3. don‘t forget to include the option to auto-create the underlying database in your JDBC connection string (e.g. ?createDatabaseIfNotExist=true for mysql)

解決:

[html] view plain copy 技術分享圖片技術分享圖片
  1. #數據庫的初始化。
  2. bin/schematool -initSchema -dbType mysql

啟動:

[html] view plain copy 技術分享圖片技術分享圖片
  1. bin/hive


啟動後mysql 多了hive 數據庫

技術分享圖片

測試

創建數據庫

create database db_hive_test; 技術分享圖片

創建測試表

use db_hive_test;

create table student(id int,name string) row format delimited fields terminated by ‘\t‘;

技術分享圖片

技術分享圖片

加載數據到表中

新建student.txt 文件寫入數據(id,name 按tab鍵分隔)

vi student.txt

[html] view plain copy 技術分享圖片技術分享圖片
  1. 1001 zhangsan
  2. 1002 lisi
  3. 1003 wangwu
  4. 1004 zhaoli

load data local inpath ‘/home/hadoop/student.txt‘ into table db_hive_test.student

技術分享圖片

查詢表信息

select * from student;

查看表的詳細信息

desc formatted student;

通過ui頁面查看創建的數據位置

http://192.168.169.132:50070/explorer.html#/user/hive/warehouse/db_hive_test.db

技術分享圖片

通過Mysql查看創建的表

技術分享圖片

查看hive的函數

show functions;

查看函數詳細信息

desc function sum;
desc function extended

技術分享圖片

感謝:https://www.cnblogs.com/hmy-blog/p/6506417.html

hive2.1.1安裝部署