1. 程式人生 > 其它 >大資料--Hive的安裝以及三種互動方式

大資料--Hive的安裝以及三種互動方式

1.3 Hive的安裝(前提是:mysqlhadoop必須已經成功啟動了)

在之前部落格中我有記錄安裝JDK和Hadoop和Mysql的過程,如果還沒有安裝,請先進行安裝配置好,對應的隨筆我也提供了百度雲下載連線。

安裝JDK: https://www.cnblogs.com/wyh-study/p/12014368.html

安裝Hadoop https://www.cnblogs.com/wyh-study/p/12043948.html

安裝Mysql https://www.cnblogs.com/wyh-study/p/12044652.html

(注意:安裝mysql的時候一定要確保已經執行 :

1.3.1 上傳壓縮包並解壓

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

1.3.2 修改目錄名稱

mv apache-hive-1.2.1-bin hive-1.2.1

1.3.3 備份配置檔案

cp hive-env.sh.template hive-env.sh

cp hive-default.xml.template hive-site.xml

1.3.4 修改配置hive的配置檔案(在conf目錄下)

修改hive-env,sh

加入三行內容(大家根據自己的情況來新增,每個人安裝路徑可能有所不同)

<! -- 先進入目錄下  cd /usr/local/soft/hive-1.2.1/conf
HADOOP_HOME=/usr/local/soft/hadoop-2.7.6
JAVA_HOME=/usr/local/soft/jdk1.8.0_171
HIVE_HOME=/usr/local/soft/hive-1.2.1

修改hive-site.xml (找到對應的鍵對值進行修改,注意!!!是修改,而不是全部直接複製貼上)

<!--資料儲存位置就是我們在HDFS上看的目錄-->
<property>
   <name>hive.metastore.warehouse.dir</name>
   <value>/user/hive/warehouse</value>
</property>

(注意:修改自己安裝mysql的主機地址)
<property>
<name>javax.jdo.option.ConnectionURL</name>
<value>jdbc:mysql://192.168.40.110:3306/hive?createDatabaseIfNotExist=true&amp;useUnicode=true&amp;characterEncoding=utf8&amp;useSSL=false</value>
</property>

(固定寫法,mysql驅動類的位置)
<property>
<name>javax.jdo.option.ConnectionDriverName</name>
<value>com.mysql.jdbc.Driver</value>
</property>

(mysql的使用者名稱)
<property>
<name>javax.jdo.option.ConnectionUserName</name>
<value>root</value>
</property>


(mysql的使用者密碼)
<property>
<name>javax.jdo.option.ConnectionPassword</name>
<value>123456</value>
</property>


(你的hive安裝目錄的tmp目錄)
<property>
<name>hive.querylog.location</name>
<value>/usr/local/soft/hive-1.2.1/tmp</value>
</property>


(同上)
<property>
<name>hive.exec.local.scratchdir</name>
<value>/usr/local/soft/hive-1.2.1/tmp</value>
</property>


(同上)
<property>
<name>hive.downloaded.resources.dir</name>
<value>/usr/local/soft/hive-1.2.1/tmp</value>
</property>

<!--指定這個的時候,為了啟動metastore服務的時候不用指定埠-->
<!--hive --service metastore -p 9083 & | hive --service metastore-->
<property>
   <name>hive.metastore.uris</name>
   <value/>
   <description>thrift://master:9083</description>
</property>

修改core-site.xml 直接改,改完重啟就行,為後面beeline連線做準備

注意:三個節點上的都要改。

<!--該引數表示可以通過httpfs介面hdfs的ip地址限制-->
<property>
<name>hadoop.proxyuser.hadoop.hosts</name>
<value>*</value>
</property>
<!--通過httpfs介面訪問的使用者獲得的群組身份-->
<property>
<name>hadoop.proxyuser.hadoop.groups</name>
<value>*</value>
</property>

1.3.5 拷貝mysql驅動到$HIVE_HOME/lib目錄下

cp /usr/local/soft/mysql-connector-java-5.1.49.jar ../lib/

1.3.6 將hadoop的jline-0.9.94.jar的jar替換成hive的版本。

cp /usr/local/soft/hive-1.2.1/lib/jline-2.12.jar /usr/local/soft/hadoop-2.7.6/share/hadoop/yarn/lib/

1.3.7 將hive的bin目錄配置到環境變數中去

export HIVE_HOME=/usr/local/soft/hive-1.2.1
export PATH=.:$HIVE_HOME/bin

1.3.8 source命令讓環境變數生效

1.3.9 拷貝到其他兩個節點中去,因為可能我們會在其他的節點上當作客戶端訪問hive,注意,也需要配置環境變數,增加驅動jar包,將hadoop的jline-0.9.94.jar的jar替換成hive的版本

<! -- 先進入目錄下  cd /usr/local/soft/
scp -r hive-1.2.1/ node1:`pwd`
scp -r hive-1.2.1/ node2:`pwd`
<! -- 先進入目錄下 cd /usr/local/soft/ hadoop-2.7.6/etc/hadoop/
  scp core-site.xml node1:`pwd`
<! -- 環境變數也需要配置,這裡就直接遠端複製,配置完成後source一下  
scp /etc/profile node1:/etc/profile
scp /etc/profile node2:/etc/profile

1.3.10 啟動

啟動hadoop

start-all.sh

啟動hive

hive --service metastore

nohup hive --service metastore >/dev/null &

hive

啟動HiveServer2

hiveserver2

nohup hiveserver2 >/dev/null &

beeline -u jdbc:hive2://master:10000 -n root

1.4 Hive的三種互動方式

1)第一種互動方式

shell互動Hive,用命令hive啟動一個hive的shell命令列,在命令列中輸入sql或者命令來和Hive互動。

服務端啟動metastore服務(後臺啟動):nohup hive --service metastore > /usr/local/soft/mylogs 2>&1 &
進入命令:hive
退出命令列:quit;

2)第二種互動方式

Hive啟動為一個伺服器,對外提供服務,其他機器可以通過客戶端通過協議連線到伺服器,來完成訪問操作,這是生產環境用法最多的

服務端啟動hiveserver2服務:
nohup hive --service metastore >/dev/null &
nohup hiveserver2 >/dev/null &

需要稍等一下,啟動服務需要時間:
進入命令:1)先執行: beeline ,再執行: !connect jdbc:hive2://master:10000
       2)或者直接執行: beeline -u jdbc:hive2://master:10000 -n root
退出命令列:!exit

第三方連線工具 DBeaver (熊logo)。

3)第三種互動方式

使用 –e 引數來直接執行hql的語句

bin/hive -e "show databases;"

使用 –f 引數通過指定文字檔案來執行hql的語句

特點:執行完sql後,回到linux命令列。

vim hive.sql

use myhive;
select * from test;
hive -f hive.sql

4)hive cli和beeline cli的區別