【大數據環境篇二】Hive 本地環境搭建概述(四種運行模式)

Hive 3.1.2

Table of Contents

Hive 3.1.2

1 共用配置信息

1.1 配置Hadoop安全設置

1.2 創建數據存放目錄

2. Hive 運行模式

2.1 Embedded Database + Embedded Metastore Server模式

2.2 Embedded Database + Remote Metastore Server 模式

2.3 Remote Database + Embedded Metastore Server 模式

2.4 Remote Database + Remote Metastore Server 模式

 


 

1 共用配置信息

 

1.1 配置Hadoop安全設置

$HADOOP_HOME/etc/hadoop/core-site.xml

<property>
    <name>hadoop.proxyuser.root.hosts</name>
    <value>*</value>
</property>

<property>
    <name>hadoop.proxyuser.root.groups</name>
    <value>*</value>
</property>

這裏使用的root用戶。

 

1.2 創建數據存放目錄

$HADOOP_HOME/bin/hadoop fs -mkdir       /tmp
$HADOOP_HOME/bin/hadoop fs -mkdir       /user/hive/warehouse
$HADOOP_HOME/bin/hadoop fs -chmod g+w   /tmp
$HADOOP_HOME/bin/hadoop fs -chmod g+w   /user/hive/warehouse

 

 

2. Hive 運行模式

 

2.1 Embedded Database + Embedded Metastore Server模式

服務器配置

不給定任何配置,默認情況就是該模式。

 

初始化 metastore 數據庫

$HIVE_HOME/bin/schematool -dbType derby -initSchema

 

啓動服務

使用root用戶來啓動hiveserver2

sudo $HIVE_HOME/bin/hiveserver2

 

測試連接

$HIVE_HOME/bin/beeline -u jdbc:hive2://localhost:10000 -n root

參考: https://cwiki.apache.org/confluence/display/Hive/GettingStarted#GettingStarted-InstallationandConfiguration

 

 

2.2 Embedded Database + Remote Metastore Server 模式

 

服務器配置

hive-site.xml配置文件中,需要指定以下信息:

<configuration>
    <!-- database configuration -->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>org.apache.derby.jdbc.EmbeddedDriver</value>
        <description>Driver class name for a JDBC metastore</description>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:derby:;databaseName=metastore_db;create=true</value>
        <description>
            JDBC connect string for a JDBC metastore.
            To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
            For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
        </description>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>APP</value>
        <description>Username to use against metastore database</description>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>mine</value>
        <description>password to use against metastore database</description>
    </property>

    <!-- metastore mode definition -->
    <property>
        <name>hive.metastore.port</name>
        <value>9083</value>
        <description>Hive metastore listener port</description>
    </property>

    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://localhost:9083</value>
        <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
    </property>
</configuration>

 

初始化 metastore 數據庫

$HIVE_HOME/bin/schematool -dbType derby -initSchema

 

啓動服務

啓動metastore服務

$HIVE_HOME/bin/hive –service metastore

 

使用root用戶來啓動hiveserver2

sudo $HIVE_HOME/bin/hive –service hiveserver2

 

 

測試連接

檢查metastore服務是否啓動成功

lsof -i:9083

如能查詢到信息表示啓動成功。

 

 

使用beeline來測試連接

$HIVE_HOME/bin/beeline -u jdbc:hive2://localhost:10000 -n root

 

 

 

2.3 Remote Database + Embedded Metastore Server 模式

 

依賴包準備

cp mysql-connector-java-5.1.41.jar $HIVE_HOME/lib/

 

服務器配置

hive-site.xml配置文件中,需要指定以下信息:

<configuration>

    <!-- database configuration -->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/metastore</value>
        <description>
            JDBC connect string for a JDBC metastore.
            To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
            For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
        </description>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
        <description>Username to use against metastore database</description>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>abc123</value>
        <description>password to use against metastore database</description>
    </property>

    <!-- metastore mode definition -->
    <property>
        <name>hive.metastore.uris</name>
        <value />
        <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
    </property>

</configuration>

 

初始化 metastore 數據庫

$HIVE_HOME/bin/schematool -dbType mysql -initSchema

啓動服務

使用root用戶來啓動hiveserver2

sudo $HIVE_HOME/bin/hiveserver2

 

測試連接

使用beeline來測試連接

$HIVE_HOME/bin/beeline -u jdbc:hive2://localhost:10000 -n root

2.4 Remote Database + Remote Metastore Server 模式

 

依賴包準備

cp mysql-connector-java-5.1.41.jar $HIVE_HOME/lib/

 

服務器配置

hive-site.xml配置文件中,需要指定以下信息:

<configuration>

    <!-- database configuration -->
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Driver class name for a JDBC metastore</description>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://localhost:3306/metastore</value>
        <description>
            JDBC connect string for a JDBC metastore.
            To use SSL to encrypt/authenticate the connection, provide database-specific SSL flag in the connection URL.
            For example, jdbc:postgresql://myhost/db?ssl=true for postgres database.
        </description>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
        <description>Username to use against metastore database</description>
    </property>

    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>abc123</value>
        <description>password to use against metastore database</description>
    </property>

    <!-- metastore mode definition -->
    <property>
        <name>hive.metastore.port</name>
        <value>9083</value>
        <description>Hive metastore listener port</description>
    </property>

    <property>
        <name>hive.metastore.uris</name>
        <value>thrift://localhost:9083</value>
        <description>Thrift URI for the remote metastore. Used by metastore client to connect to remote metastore.</description>
    </property>

</configuration>

 

初始化 metastore 數據庫

$HIVE_HOME/bin/schematool -dbType mysql -initSchema

 

啓動服務

啓動metastore服務

$HIVE_HOME/bin/hive –service metastore

 

使用root用戶來啓動hiveserver2

sudo $HIVE_HOME/bin/hive –service hiveserver2

 

測試連接

檢查metastore服務是否啓動成功

lsof -i:9083

如能查詢到信息表示啓動成功。

 

 

使用beeline來測試連接

$HIVE_HOME/bin/beeline -u jdbc:hive2://localhost:10000 -n root

 

 

遇到的問題:

MetaException(message:Hive Schema version 3.1.0 does not match metastore's schema version 1.2.0 Metastore is not upgraded or corrupt)

使用spark sql +remote metastore database連接後,在此啓動hive出現上面的錯誤。解決方案:

<property>

    <name>hive.metastore.schema.verification</name>

    <value>false</value>

    <description>

      Enforce metastore schema version consistency.

      True: Verify that version information stored in is compatible with one from Hive jars.  Also disable automatic

            schema migration attempt. Users are required to manually migrate schema after Hive upgrade which ensures

            proper metastore schema migration. (Default)

      False: Warn if the version information stored in metastore doesn't match with one from in Hive jars.

    </description>

  </property>

生產環境,最後設定爲true。

 

參考文章:

https://blog.csdn.net/adorechen/article/details/104882601

https://blog.csdn.net/adorechen/article/details/104601396

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