環境:Centos7Hadoop-2.10.0MySQL-8.0.20
安裝:Hive-2.3.7
零、開始
Hive簡而言之就是一個Hadoop平臺上數據倉庫的管理軟件,這個軟件將類SQL語句方便的轉換成mapreduce操作hdfs(mysql中存儲元數據(如表結構),所以在master上安裝就夠了)。
並使用HQL(類SQL語句)作爲查詢接口,使用HDFS作爲底層存儲, 使用MapReduce作爲執行層,即將HQL語句轉譯成M/R Job然後在Hadoop執行。
本篇上接Linux下的MySQL8.0安裝。
所有操作都在hadoop集羣master機器下完成。
本文所有輸出都是在作者虛擬機上的輸入得到的,輸出因人而異,結果沒問題就好。
一、下載Hive
1、點擊下載地址
2、點擊Download a release now!(如下圖)
3、點擊https://mirrors.tuna.tsinghua.edu.cn/apache/hive/(如下圖)
4、點擊hive-2.3.7/(如下圖)
5、點擊apache-hive-2.3.7-bin.tar.gz(如下圖,bin代表二進制文件,不用編譯)
6、下載到Windows本地,使用telnet/ssh客戶端(作者爲SecureCRT)連接master機器
輸入1:cd /root/coding/hive
(進入自定目錄)
輸入2:rz
,然後選擇Windows下的壓縮文件,上傳到該目錄下
如果提示不存在該命令,則輸入
yum install -y lrzsz
安裝lrzsz
上傳成功可以輸入ls
查看存在
7、解壓到當前目錄
輸入:tar -zxvf apache-hive-2.3.7-bin.tar.gz
輸出:略
8、配置環境變量
輸入1:vi /etc/profile
輸入2:在文件末尾追加下列代碼(按i進入編輯模式,自行替換第一行路徑):
export HIVE_HOME=/root/coding/hive/apache-hive-2.3.7-bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
export PATH=$PATH:$HIVE_HOME/bin
輸入3:按Esc進入命令模式後按:wq
保存退出文件
輸入4(使修改生效):source /etc/profile
配置成功後可以輸入
hive --version
驗證,會輸出hive版本信息
二、配置Hive
1、開啓hadoop集羣(輸入因安裝位置不同而不同)
輸入:/root/coding/hadoop/hadoop-2.10.0/sbin/start-all.sh
2、在集羣上建立目錄,並賦予權限
hdfs dfs -mkdir -p /user/hive/warehouse
hdfs dfs -chmod -R 777 /user/hive/warehouse
hdfs dfs -mkdir -p /tmp/hive
hdfs dfs -chmod -R 777 /tmp/hive
3、在Linux下建立tmp文件夾
輸入1:cd /root/coding/hive/apache-hive-2.3.7-bin
輸入2:mkdir tmp
和chmod -R 777 tmp/
4、修改配置文件1
輸入1:cd /root/coding/hive/apache-hive-2.3.7-bin/conf
(進入文件夾)
輸入2:(copy配置文件)
cp hive-default.xml.template hive-site.xml
cp hive-env.sh.template hive-env.sh
輸入3:sed -i 's#\${system:user.name}#root#g; s#\${system:java.io.tmpdir}#/root/coding/hive/apache-hive-2.3.7-bin/tmp#g' /root/coding/hive/apache-hive-2.3.7-bin/conf/hive-site.xml
1.修改用戶名,將文件中所有${system:user.name}替換爲root
2.修改臨時目錄,將文件中所有${system:java.io.tmpdir}替換爲/root/coding/hive/apache-hive-2.3.7-bin/tmp
輸入
grep '${system:user.name}' hive-site.xml
驗證,如果無輸出,着替換成功
5、修改配置文件2(/root/coding/hive/apache-hive-2.3.7-bin/conf/目錄下)
(大家可以直接到 第6步 對應行號找就可以了,位置不會差太多,不需要再找一遍)
輸入1:grep -n 'hive.metastore.uris' hive-site.xml
(查找元數據服務)
輸出1:370: <name>hive.metastore.uris</name>
(370是我們需要的行號)
輸入2:grep -n ' ConnectionURL' hive-site.xml
(查找與數據庫連接的URL)
輸出2:544: <name>javax.jdo.option.ConnectionURL</name>
(544是我們需要的行號)
輸入3:grep -n 'ConnectionDriverName' hive-site.xml
(查找jdbc驅動)
輸出3:1019: <name>javax.jdo.option.ConnectionDriverName</name>
(1019是我們需要的行號)
輸入4:grep -n 'ConnectionUserName' hive-site.xml
(查找登錄數據庫的用戶)
輸出4:1044: <name>javax.jdo.option.ConnectionUserName</name>
(1044是我們需要的行號)
輸入5:grep -n 'ConnectionPassword' hive-site.xml
(查找對應用戶的密碼)
輸出5:529: <name>javax.jdo.option.ConnectionPassword</name>
(529是我們需要的行號)
6、修改配置文件3(value值因配置的不同而不同,/root/coding/hive/apache-hive-2.3.7-bin/conf/目錄下)
文本輸入模式:在命令行模式下按i(最常用)
命令行模式:按Esc
末行模式:在命令模式下輸入:加命令
輸入1(顯示行號編輯):vi -n hive-site.xml
輸入2::370
(命令行模式,設置元數據服務)
<property>
<name>hive.metastore.uris</name> ##370
<value>thrift://master:9083</value>
</property>
輸入3::544
(命令行模式,修改與數據庫連接的URL,ip地址改爲數據庫所在ip,/後跟數據庫名,如不存在則會在後面初始化hive時進行創建)
<property>
<name>javax.jdo.option.ConnectionURL</name> ##544
<value>jdbc:mysql://192.168.150.100:3306/hive?createDatabaseIfNotExist=true</value>
</property>
輸入4(命令行模式,修改jdbc驅動)::1019
<property>
<name>javax.jdo.option.ConnectionDriverName</name> ##1019
<value>com.mysql.cj.jdbc.Driver</value> ##這是mysql8.0的驅動,mysql5的驅動爲com.mysql.jdbc.Driver
</property>
輸入5(命令行模式,修改登錄數據庫的用戶)::1044
<property>
<name>javax.jdo.option.ConnectionUserName</name> #1044
<value>root</value> ##對應用戶名稱
</property>
輸入6(命令行模式,修改對應用戶的密碼)::529
<property>
<name>javax.jdo.option.ConnectionPassword</name> #529
<value>對應用戶的密碼</value>
</property>
7、設置jdbc驅動點擊下載網址,選擇適合自己的版本下載
下載完畢後在Windows下解壓,並在Linux中使用rz命令把裏面的mysql-connector-java-8.0.20.jar文件上傳到/root/coding/hive/apache-hive-2.3.7-bin/lib目錄下
8、配置hive-env.sh
輸入1:cd /root/coding/hive/apache-hive-2.3.7-bin/conf
輸入2:vi hive-env.sh
輸入3:(文件末尾加入)
export JAVA_HOME=/root/coding/java/jdk-11.0.6
export HADOOP_HOME=/root/coding/hadoop/hadoop-2.10.0
export HIVE_HOME=/root/coding/hive/apache-hive-2.3.7-bin
export HIVE_CONF_DIR=$HIVE_HOME/conf
export HIVE_AUX_JARS_PATH=$HIVE_HOME/lib
9、在HA(高可用)集羣上還需要配置如下參數
文件路徑:/root/coding/hive/apache-hive-2.3.7-bin/conf/hive-site.xml
<property>
<name>hive.metastore.warehouse.dir</name>
<value>hdfs://user/hive/warehouse</value>
</property>
<property>
<name>hive.exec.scratchdir</name>
<value>hdfs://tmp/hive</value>
</property>
<property>
<name>hive.querylog.location</name>
<value>/root/coding/hive/apache-hive-2.3.7-bin/logs</value>
</property>
三、啓動Hive
1、初始化Hive(只一次)
輸入1:cd /root/coding/hive/apache-hive-2.3.7-bin/bin
輸入2:schematool -dbType mysql -initSchema
2、在該目錄下輸入hive,輸入提示如下圖則啓動成功
退出輸入exit或quit
四、常見錯誤
1、FAILED: SemanticException org.apache.hadoop.hive.ql.metadata.HiveException: java.lang.RuntimeException: Unable to instantiate org.apache.hadoop.hive.ql.metadata.SessionHiveMetaStoreClient
解決方法1:hive的服務端沒有打開
代碼:hive --service metastore &
(Linux下,輸入後按ctrl+c退出,回到hive即可)
解決方法2:hive-site.xml中的數據庫用戶和密碼配置錯誤,重新檢查
解決方法3:用戶權限不足(root賬戶不會出現這種情況)
代碼:
格式:
grant all privileges on 'databasename.tablename' to 'user'@'host' identified by 'password';
授予user用戶全局全部權限:
GRANT ALL PRIVILEGES ON *.* TO 'user'@'%' IDENTIFIED BY 'password' WITH GRANT OPTION;
(全文完)