Hive下載安裝


一、Hive安裝地址

二、部署安裝

  1. 把下載的apache-hive-3.1.2-bin.tar.gz  上傳到linux的/opt/software目錄下 
  2. 解壓apache-hive-3.1.2-bin.tar.gz到/opt/module/目錄下面 
    $ tar -zxvf /opt/software/apache-hive-3.1.2-bin.tar.gz -C /opt/module/
    #修改hive名字
    $ mv apache-hive-3.1.2-bin hive
  3. 修改 /etc/profile環境變量
    $ sudo vim /etc/profile
    
    #添加內容
    #HIVE_HOME 
    export HIVE_HOME=/opt/module/hive 
    export PATH=$PATH:$HIVE_HOME/bin 

    #更新環境變量
    $ sudo source /etc/profile
  4. 解決Jar包沖突 
    #hadoop中已經有了log4j
    $ mv /opt/module/hive/lib/log4j-slf4j-impl-2.10.0.jar  /opt/module/hive/lib/log4j-slf4j-impl-2.10.0.jar.bak

    以及guava-19.0.jar包的沖突,通過 find命令可以查看與hadoop的包沖突

     需要移除hive中的guava-19.0.jar包並將hadoop中的guava-27-jre.0.jar包復制到hive中

    $ mv /opt/module/hive/lib/guava-19.0.jar  /opt/module/hive/lib/guava-19.0.jar.bak
    $ cp /opt/module/hadoop-3.2.2/share/hadoop/common/lib/guava-27.0-jre.jar   /opt/module/hive/lib/
  5. 初始化元數據庫
    $ $HIVE_HOME/bin/schematool -dbType derby -initSchema 

    測試hive,輸入以下內容會報異常

hive> show databases; 

原因

  Hive默認使用的元數據庫為derby,開啟Hive之后就會占用元數據庫,且不與其他客戶端共享數據,所以我們需要將Hive的元數據地址改為MySQL。

解決辦法

  下載安裝mysql:在Linux中安裝mysql5.7 - 干了這瓶老干媽 - 博客園 (cnblogs.com)

三、Hive元數據配置到MySQL

3.1 下載並拷貝mysql驅動

下載mysql-connector-java-5.1.37.jar並上傳到 /opt/software目錄下,將MySQL的JDBC驅動拷貝到Hive的lib目錄下 

$ cp /opt/software/mysql-connector-java-5.1.37.jar $HIVE_HOME/lib 

3.2 在$HIVE_HOME/conf目錄下新建hive-site.xml文件 

$ vim $HIVE_HOME/conf/hive-site.xml

添加以下內容:

<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
        <!-- jdbc連接的URL -->
        <property>
           <name>javax.jdo.option.ConnectionURL</name>
           <value>jdbc:mysql://hadoop102:3306/metastore?useSSL=false</value>
        </property>

        <!-- jdbc連接的Driver-->
        <property>
           <name>javax.jdo.option.ConnectionDriverName</name>
           <value>com.mysql.jdbc.Driver</value>
        </property>

        <!-- jdbc連接的username-->
        <property>
           <name>javax.jdo.option.ConnectionUserName</name>
           <value>root</value>
        </property>

        <!-- jdbc連接的password -->
        <property>
           <name>javax.jdo.option.ConnectionPassword</name>
           <value>123456</value>
        </property>

        <!-- Hive元數據存儲版本的驗證 -->
        <property>
           <name>hive.metastore.schema.verification</name>
           <value>false</value>
        </property>

        <!--元數據存儲授權-->
        <property>
           <name>hive.metastore.event.db.notification.api.auth</name>
           <value>false</value>
        </property>

        <!-- Hive默認在HDFS的工作目錄 -->
        <property>
           <name>hive.metastore.warehouse.dir</name>
           <value>/user/hive/warehouse</value>
        </property>
</configuration>

3.3 登錄Mysql並新建Hive的元數據庫

$ mysql -uroot -p123456
mysql> create database metastore; 
mysql> quit;

3.4 初始化Hive數據庫

$ schematool -initSchema -dbType mysql -verbose 

3.5 再次啟動Hive並測試

$  $HIVE_HOME/bin/hive 
hive> show databases; 
hive> show tables;
hive> create table test (id int);
hive> insert into test values(1);
hive> select id form test;
 

四、配置Hive的訪問方式

以上內容我們配置好了hive,但是只能在我們的主機能訪問,其他人的都不行,所以我們這里需要配置Hive的訪問方式,並且知道有幾種訪問hive的方式。

4.1 使用 元數據服務的方式 訪問Hive

  1. 在hive-site.xml文件中添加如下配置信息
    <!-- 指定存儲元數據要連接的地址 -->          
    <property>             
        <name>hive.metastore.uris</name>                         
        <value>thrift://node01:9083</value>     
    </property>
  2. 啟動metastore 
    $ hive --service metastore
    2022-01-23 17:09:32: Starting Hive Metastore Server
    
    #注意: 啟動后窗口不能再操作,需打開一個新的shell窗口做別的操作 
  3. 啟動Hive(另外打開一個窗口
    $ bin/hive 

4.2 使用 JDBC的方式 訪問Hive(推薦方式)

注意,通過JDBC訪問hive,是需要提前配置好第一種訪問方式,即:元數據服務訪問Hive 。JDBC的方式是通過server2訪問元數據服務。

  1. 在hive-site.xml文件中添加如下配置信息 
    #將以下部分加入到hive-site.xml文件中 
    # thrift:Hive擁有HiveServer (Thrift)或者Hiveserver2組件,提供了JDBC驅動服務,
    #使得我們可以用Java代碼或者Python來連接Hive並進行一些關系型數據庫的sql語句查詢等操作。

    <!-- 指定hiveserver2連接的host --> 
    <property> <name>hive.server2.thrift.bind.host</name> <value>node01</value> </property> <!-- 指定 hiveserver2 連接的端口號 --> <property> <name>hive.server2.thrift.port</name> <value>10000</value> </property>
  2. 啟動hiveserver2 
    #建議使用命令
    $ /bin/hive --service hiveserver2
    
    #也可以用
    $ hiveserver2  //該命令需要校驗兩次,啟動較慢

    注意:啟動hiveserver2前,要先啟動 metastore(見第一種方式)

  3. 啟動beeline客戶端(需要多等待一會) 
    $ beeline -u jdbc:hive2://node01:10000 -n user
  4. (啟動成功)看到如下界面 
    Connecting to jdbc:hive2://node01:10000
    Connected to: Apache Hive (version 3.1.2)
    Driver: Hive JDBC (version 3.1.2)
    Transaction isolation: TRANSACTION_REPEATABLE_READ
    Beeline version 3.1.2 by Apache Hive
    0: jdbc:hive2://node01:10000> 

     

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM