大資料--Hive的安裝以及三種互動方式
1.3 Hive的安裝(前提是:mysql和hadoop必須已經成功啟動了)
在之前部落格中我有記錄安裝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&useUnicode=true&characterEncoding=utf8&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的區別