Hive資料倉庫工具安裝
一.Hive介紹
Hive是基於Hadoop的一個數據倉庫工具,可以將結構化的資料檔案對映為一張資料庫表,並提供簡單SQL查詢功能,SQL語句轉換為MapReduce任務進行執行。 優點是可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合資料倉庫的統計分析。缺點是Hive不適合在大規模資料集上實現低延遲快速的查詢。
二.安裝Hive
環境:Docker(17.04.0-ce)、映象Ubuntu(16.04.3)、JDK(1.8.0_144)、Hadoop(3.1.1)、Hive(3.1.0)
1.安裝Hadoop
參考:Hadoop偽分散式模式安裝
2.使用root安裝MySQL
[email protected]:~# apt-get install -y mysql-server [email protected]-bd:~# /etc/init.d/mysql start
3.切換使用者bigdata,解壓Hive
[email protected]:~# su - bigdata [email protected]-bd:~$ tar -xf apache-hive-3.1.0-bin.tar.gz
4.Hive依賴Hadoop,編輯.bashrc檔案,新增環境變數
export HADOOP_HOME=/home/bigdata/hadoop-3.1
5.啟用環境變數
[email protected]:~$ source .bashrc
6.啟動Hdfs服務
[email protected]:~$ hadoop-3.1.1/sbin/start-dfs.sh
7.啟動Yarn服務
[email protected]:~$ hadoop-3.1.1/sbin/start-yarn.sh
8.建立Hive資料倉庫儲存目錄(/tmp已存在則跳過建立)
[email protected]:~$ hadoop-3.1.1/bin/hdfs dfs -mkdir -p /tmp [email protected]-bd:~$ hadoop-3.1.1/bin/hdfs dfs -chmod g+w /tmp [email protected]-bd:~$ hadoop-3.1.1/bin/hdfs dfs -mkdir -p /user/hive/warehouse [email protected]-bd:~$ hadoop-3.1.1/bin/hdfs dfs -chmod g+w /user/hive/warehouse
9.新建conf/hive-site.xml檔案,並增加如下配置項
<configuration> <property> <name>javax.jdo.option.ConnectionURL</name> <value>jdbc:mysql://localhost:3306/hive?useSSL=false&createDatabaseIfNotExist=true</value> </property> <property> <name>javax.jdo.option.ConnectionDriverName</name> <value>com.mysql.jdbc.Driver</value> </property> <property> <name>javax.jdo.option.ConnectionUserName</name> <value>root</value> </property> <property> <name>javax.jdo.option.ConnectionPassword</name> <value>password</value> </property> </configuration>
10.下載mysql-connector驅動包,並移動到lib目錄下
[email protected]:~$ mv mysql-connector-java-5.1.47.jar apache-hive-3.1.0-bin/lib/
11.初始化metastore元資料庫
[email protected]:~$ apache-hive-3.1.0-bin/bin/schematool -dbType mysql -initSchema
三.執行Hive
1.命令列執行Hive
[email protected]:~$ apache-hive-3.1.0-bin/bin/hive
2.Beeline執行Hive
修改etc/hadoop/core-site.xml檔案,增加如下配置項
<property> <name>hadoop.proxyuser.bigdata.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.bigdata.groups</name> <value>*</value> </property>
重啟hadoop服務
[email protected]:~$ hadoop-3.1.1/sbin/stop-dfs.sh [email protected]-bd:~$ hadoop-3.1.1/sbin/start-dfs.sh
啟動hiveserver2服務
[email protected]:~$ nohup apache-hive-3.1.0-bin/bin/hive --service hiveserver2 &
啟動beeline連線hive
[email protected]:~$ apache-hive-3.1.0-bin/bin/beeline -u jdbc:hive2://localhost:10000
四.執行異常
1.執行Hive異常
異常FAILED: HiveException java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
原因是metastore元資料庫沒有初始化
使用schematool命令初始化metastore資料庫
[email protected]:~$ apache-hive-3.1.0-bin/bin/schematool -dbType mysql -initSchema
2.初始化metastore異常
異常org.apache.hadoop.hive.metastore.HiveMetaException: Failed to load driver
原因Hive的lib目錄下無MySQL驅動包
下載mysql-connector驅動包,並移動到lib目錄下
[email protected]:~$ mv mysql-connector-java-5.1.47.jar apache-hive-3.1.0-bin/lib/
3.beeline連線異常
異常User: bigdata is not allowed to impersonate anonymous (state=08S01,code=0)
原因不允許匿名使用者訪問,需要配置etc/hoaddop/core-site.xml檔案,增加如下配置項,proxyuser後為代理使用者(bigdata)
<property> <name>hadoop.proxyuser.bigdata.hosts</name> <value>*</value> </property> <property> <name>hadoop.proxyuser.bigdata.groups</name> <value>*</value> </property>