【Hive】Hive2.x.x超詳細安裝教程(hadoop平臺上的數據倉庫)

Hive2.x.x超詳細安裝教程(hadoop平臺上的數據倉庫)




環境: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!(如下圖)
1.2

3、點擊https://mirrors.tuna.tsinghua.edu.cn/apache/hive/(如下圖)
1.3

4、點擊hive-2.3.7/(如下圖)
1.4

5、點擊apache-hive-2.3.7-bin.tar.gz(如下圖,bin代表二進制文件,不用編譯)
1.5

6、下載到Windows本地,使用telnet/ssh客戶端(作者爲SecureCRT)連接master機器
輸入1:cd /root/coding/hive(進入自定目錄)
輸入2:rz,然後選擇Windows下的壓縮文件,上傳到該目錄下

如果提示不存在該命令,則輸入yum install -y lrzsz安裝lrzsz
上傳成功可以輸入ls查看存在
1.6


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 tmpchmod -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驅動點擊下載網址,選擇適合自己的版本下載
2.7.1
下載完畢後在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,輸入提示如下圖則啓動成功
3.2

退出輸入exitquit


四、常見錯誤


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;



(全文完)

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