大數據之數據倉庫工具Hive

數據倉庫工具Hive可是省事了

介紹

1.hive簡介
Hive:由Facebook開源用於解決海量結構化日誌的數據統計工具。
Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的數據文件映射爲一張表,並提供類SQL查詢功能。
2.1)Hive處理的數據存儲在HDFS
2)Hive分析數據底層的實現是MapReduce
3)執行程序運行在Yarn上
3.
優點:操作接口採用類SQL語法,提供快速開發的能力(簡單、容易上手),通用性強;
缺點:Hive的HQL表達能力有限;Hive的效率比較低;

原理

在這裏插入圖片描述
1)用戶接口:Client
2)元數據:Metastore
元數據包括:表名、表所屬的數據庫(默認是default)、表的擁有者、列/分區字段、表的類型(是否是外部表)、表的數據所在目錄等;
3)Hadoop
使用HDFS進行存儲,使用MapReduce進行計算。
4)驅動器:Driver
(1)解析器(SQL Parser):將SQL字符串轉換成抽象語法樹AST,這一步一般都用第三方工具庫完成,比如antlr;
(2)編譯器(Physical Plan):將AST編譯生成邏輯執行計劃。
(3)優化器(Query Optimizer):對邏輯執行計劃進行優化。
(4)執行器(Execution):把邏輯執行計劃轉換成可以運行的物理計劃。對於Hive來說,就是MR/Spark。

安裝

1.1)Hive官網地址
http://hive.apache.org/
2)安裝mysql之前檢查當前系統是否安裝過Mysql
[shanxi@hadoop1 ~]$ rpm -qa|grep mariadb
mariadb-libs-5.5.56-2.el7.x86_64 //如果存在通過如下命令卸載
[shanxi@hadoop1~]$ sudo rpm -e --nodeps mariadb-libs //用此命令卸載mariadb
3)解壓MySQL安裝包
[shanxi@hadoop1~]$# tar -xf mysql-5.7.28-1.el7.x86_64.rpm-bundle.tar
4)在安裝目錄下執行rpm安裝(不會的私聊)

2.1)把apache-hive-3.1.2-bin.tar.gz上傳到linux的/opt/software目錄下
2)解壓apache-hive-3.1.2-bin.tar.gz到/opt/module/目錄下面
[shanxi@hadoop1~]$ tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/
3)修改apache-hive-3.1.2-bin.tar.gz的名稱爲hive
[shanxi@hadoop1~]$ mv /opt/module/apache-hive-3.1.2-bin/ /opt/module/hive
4)修改/etc/profile.d/my_env.sh,添加環境變量
[shanxi@hadoop1~]$ sudo vim /etc/profile.d/my_env.sh
5)添加內容
#HIVE_HOME
export HIVE_HOME=/opt/module/hive
export PATH=$ PATH: $ HIVE_HOME/bin
6)解決日誌Jar包衝突
[shanxi@hadoop1~]$ rm $HIVE_HOME/lib/log4j-slf4j-impl-2.10.0.jar

3.1)將MySQL的JDBC驅動拷貝到Hive的lib目錄下
[shanxi@hadoop1~]$ cp /opt/software/mysql-connector-java-5.1.48.jar
$HIVE_HOME/lib
2) 配置Metastore到MySql
在 $ HIVE_HOME/conf目錄下新建hive-site.xml文件
[shanxi@hadoop1~]$ vim $ HIVE_HOME/conf/hive-site.xml
4.初始化Hive元數據庫
[shanxi@hadoop1 software]$ schematool -initSchema -dbType mysql -verbose
注意Hive 2.x以上版本,要先啓動這兩個服務,否則會報錯:
FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
(1)啓動metastore
[shanxi@hadoop1 hive]$ hive --service metastore
2020-04-24 16:58:08: Starting Hive Metastore Server
注意: 啓動後窗口不能再操作,需打開一個新的shell窗口做別的操作
(2)啓動 hiveserver2
[shanxi@hadoop1 hive]$ hive --service hiveserver2
which: no hbase in (/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/opt/module/jdk1.8.0_212/bin:/opt/module/hadoop-3.1.3/bin:/opt/module/hadoop-3.1.3/sbin:/opt/module/hive/bin:/home/atguigu/.local/bin:/home/atguigu/bin)
2020-04-24 17:00:19: Starting HiveServer2
注意: 啓動後窗口不能再操作,需打開一個新的shell窗口做別的操作
(3) 爲了避免麻煩可以用下面的:
[shanxi@hadoop1 hive]$ nohup hive --service metastore 2>&1 &
[shanxi@hadoop1 hive]$ nohup hive --service hiveserver2 2>&1 &

也可以自己寫個腳本啓動,注意啓動之前先啓動Hadoop;
5 .有兩種訪問方式 ①HiveJDBC訪問
1)啓動beeline客戶端
[shanxi@hadoop1 hive]$ bin/beeline -u jdbc:hive2://hadoop102:10000 -n atguigu
2)看到如下界面
Connecting to jdbc:hive2://hadoop102:10000
Connected to: Apache Hive (version 3.1.2)
Driver: Hive JDBC (version 3.1.2)
Transaction isolation: TRANSACTION_REPEATABLE_READ
Beeline version 3.1.2 by Apache Hive
0: jdbc:hive2://hadoop102:10000>
② Hive訪問
[shanxi@hadoop1 hive]$ bin/hive

額外再給安利一個連接工具,dbeaver,挺好用,畢竟客戶端

歡迎交流,一起成長

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章