Hadoop之hive安裝配置

介紹

hive是在Hadoop中非常重要的角色。hive在1.2.0之前可以將編寫的SQL翻譯爲MapReduce程序,在2.0版本後將程序翻譯爲Spark程序。安裝前提

  1. Hadoop環境(hive不存儲實際的業務數據,數據存儲在HDFS上)
  2. mysql(此處hive中元數據存儲在mysql)

Hadoop環境

不在贅述,可以參考博文: Hadoop之Hadoop安裝

mysql環境準備

  1. 此處安裝mysql版本爲5.7
  2. 允許遠程登錄,不在贅述,可以參考博文: mysql允許root遠程登錄
    注意: 如果正式環境,在瞭解真正的風險前,還請不要允許root遠程登錄。
  3. 創建數據庫
mysql> CREATE DATABASE `hive_db` CHARACTER SET 'utf8mb4' COLLATE 'utf8mb4_bin';

建庫

安裝hive

與linux下其他軟件一樣,下載,解壓、配置。
如果不清楚兼容那個版本的Hadoop建議根據CDH提供的版本進行安裝。如果資源足夠使用,使用CDH安裝和管理Hadoop更爲簡易快捷。
CDH官方版本配置

hive配置

hive-site.xml配置

[gugu@master ~]$ vim ~/application/apache-hive-2.3.6-bin/conf/hive-site.xml

添加以下內容

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>hive.metastore.local</name>
        <value>true</value>
    </property>
<property>
        <name>javax.jdo.option.ConnectionURL</name>
         <value>jdbc:mysql://master:3306/hive_db?characterEncoding=UTF-8&amp;useSSL=false</value>
    <!-- 指定元數據數據庫jdbc鏈接,注意原來鏈接地址上的&要修改成&amp;否者會提示&後面必須要“;”的錯誤 -->
    </property>
    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</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>root</value>
        <!-- 元數據數據庫密碼 -->
    </property>
   <property>
    <name>datanucleus.schema.autoCreateAll</name>
    <value>true</value>
  </property>
  <property>
    <name>hive.metastore.warehouse.dir</name>
    <value>/user/hive/warehouse</value>
    <!-- hive在HDFS存儲路徑 -->
  </property>
</configuration>

mysql驅動複製

在hive-site.xml中指定了驅動是mysql,我們需要將mysql的驅動複製到hive的lib下,hive才能連接mysql

[gugu@master ~]$ cp file/mysql-connector-java-5.1.47.jar ~/application/apache-hive-2.3.6-bin/lib/                      

環境變量添加

[gugu@master ~]$ vim .bash_profile

添加下面內容

 # hive
 export HIVE_HOME=/home/gugu/application/apache-hive-2.3.6-bin
 export PATH=$PATH:$HIVE_HOME/bin

啓動hive

hive的啓動可以包含以下方式

  1. hive直接以交互式啓動

[gugu@master ~]$ hive
  1. 將hive啓動爲一個服務
    可以在任意一臺機器上使用beeline客戶端連接hive服務,進行交互式查詢
# 啓動元數據服務
[gugu@master ~] nohup hive --service metastore >> /home/gugu/application/apache-hive-2.3.6-bin/log/metastore/metastore.log 2>&1 &
# 啓動hiveserver2
[gugu@master ~] nohup hive --service  hiveserver2 >> /home/gugu/application/apache-hive-2.3.6-bin/log/hiveserver/hiveserver.log  2>&1 &

上面命令的介紹
"nohup"可以防止終端的session關閉時,服務退出
“>>” 表示輸出重定向,且以追加的方式,後面的路徑是標準輸出的輸出路徑,
“2>&1” 2表示的是錯誤輸出,&1指標準輸出,合起來就是將錯誤輸出和標準輸出到同一個文件
“&”最後面的指這條命令運行在後臺

linux輸出輸入擴展

設備 設備文件名 文件描述符 類型
鍵盤 /dev/stdin 0 標準輸入
顯示器 /dev/stdout 1 標準輸出
顯示器 /dev/stdout 2 錯誤輸出

遇見問題

  1. 啓動時因爲xml中&轉義報錯
    錯誤信息如下:
[Fatal Error] hive-site.xml:10:80: The reference to entity "useSSL" must end with the ';' delimiter.
Exception in thread "main" java.lang.RuntimeException: org.xml.sax.SAXParseException; systemId: file:/home/gugu/application/apache-hive-2.3.6-bin/conf/hive-site.xml; lineNumber: 10; columnNumber: 80; The reference to entity "useSSL" must end with the ';' delimiter.

在這裏插入圖片描述
出現原因:xml中&需要轉義
解決方法:將hive-site.xml中的"&“改成”&amp;"
在這裏插入圖片描述

  1. 啓動時校驗版本報錯
    錯誤如下:
MetaException(message:Version information not found in metastore. )
        at org.apache.hadoop.hive.metastore.RetryingHMSHandler.<init>(RetryingHMSHandler.java:83)
        at org.apache.hadoop.hive.metastore.RetryingHMSHandler.getProxy(RetryingHMSHandler.java:92)
        at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:6896)
        at org.apache.hadoop.hive.metastore.HiveMetaStore.newRetryingHMSHandler(HiveMetaStore.java:6891)
        at org.apache.hadoop.hive.metastore.HiveMetaStore.startMetaStore(HiveMetaStore.java:7149)
        at org.apache.hadoop.hive.metastore.HiveMetaStore.main(HiveMetaStore.java:7076)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
        at java.lang.reflect.Method.invoke(Method.java:498)
        at org.apache.hadoop.util.RunJar.run(RunJar.java:239)
        at org.apache.hadoop.util.RunJar.main(RunJar.java:153)

在這裏插入圖片描述
解決方法:
在hive-site.xml中添加

    <property>
        <name>hive.metastore.schema.verification</name>
        <value>false</value>
        <!-- 初始化的時候設置檢查版本,否者有可能初始化錯誤 -->
    </property>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章