大數據平臺搭建(三):hive 介紹和安裝配置

前言

     集羣我們已經弄好了,本章開始搭建hive。

1.hive介紹

    1.Hive是什麼?
     官方解釋:Hive是基於Hadoop的數據倉庫解決方案。由於Hadoop本身在數據存儲和計算方面有很好的可擴展性和高容錯性,因此使用Hive構建的數據倉庫也秉承了這些特性。
     簡單來說,Hive就是在Hadoop上架了一層SQL接口,可以將SQL翻譯成MapReduce去Hadoop上執行,這樣就使得數據開發和分析人員很方便的使用SQL來完成海量數據的統計和分析,而不必使用編程語言開發MapReduce那麼麻煩。
    2.hive經典架構圖

這裏寫圖片描述

     如圖中所示,Hive通過給用戶提供的一系列交互接口,接收到用戶的指令(SQL),使用自己的Driver,結合元數據(MetaStore),將這些指令翻譯成MapReduce,提交到Hadoop中執行,最後,將執行返回的結果輸出到用戶交互接口。
     在使用過程中,至需要將Hive看做是一個數據庫就行,本身Hive也具備了數據庫的很多特性和功能。
     Hive擅長的是非實時的、離線的、對響應及時性要求不高的海量數據批量計算,即席查詢,統計分析。

2. centos7安裝mysql

     目的:爲了存儲hive的元數據表,如果用hive自帶的Derby庫,起一個hive shell連接就要單獨創建一個庫,不能夠共享元數據表。
     1.直接yum安裝沒有源,所以先下載rpm包
     rpm -Uvh http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm
     2.查看當前可用的mysql安裝資源
     yum repolist enabled | grep “mysql.-community.
     3.yum方式安裝mysql
     yum -y install mysql-community-server
     4.開機啓動
     systemctl enable mysqld
     5.啓動mysql服務進程
     systemctl start mysqld
     6.重置密碼
     mysql_secure_installation
     這裏寫圖片描述
     7.進入mysql命令行,mysql -uroot -p123
       執行下面的語句 ( .:所有庫下的所有表 %:任何IP地址或主機都可以連接 root 和 123是mysql的用戶密碼):
       GRANT ALL PRIVILEGES ON . TO ‘root’@’%’ IDENTIFIED BY ‘123’ WITH GRANT OPTION;
       FLUSH PRIVILEGES; //權限立即生效
    
      

3.安裝hive

     1.將下載好的tar包(版本別下錯,前面章節已經介紹版本)上傳到hadoop203
     2.tar -zxvf 解壓,將hive加入環境變量
vim /etc/profile

export HIVE_HOME=/home/hadoop/hive
export PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HIVE_HOME/bin

source /etc/profile
    3.新增hive-site.xml並配置,其他文件我沒有配置都是默認的。

這裏寫圖片描述

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<configuration>
    <property>
        <name>hive.metastore.warehouse.dir</name>
        <value>/hivedata/warehouse/</value>
        <description>Hive在HDFS上的根目錄,內部表的hdfs目錄</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionURL</name>
        <value>jdbc:mysql://192.168.8.203:3306/hive?createDatabaseIfNotExist=true</value>
        <description>Hive元數據庫的連接串,紅色爲數據庫名</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionDriverName</name>
        <value>com.mysql.jdbc.Driver</value>
        <description>Hive元數據庫JDBC驅動</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionUserName</name>
        <value>root</value>
        <description>Hive元數據庫用戶名</description>
    </property>
    <property>
        <name>javax.jdo.option.ConnectionPassword</name>
        <value>123</value>
        <description>Hive元數據庫密碼</description>
    </property>
    <property>
        <name>datanucleus.autoCreateTables</name>
        <value>true</value>
        <description>不存在時,自動創建Hive元數據表</description>
    </property>
    <property>
        <name>datanucleus.autoCreateColumns</name>
        <value>true</value>
        <description>不存在時,自動創建Hive元數據列</description>
    </property>
    <property>
        <name>datanucleus.fixedDatastore</name>
        <value>false</value>
    </property>
    <property>
        <name>datanucleus.autoStartMechanism</name>
        <value>SchemaTable</value>
    </property>
</configuration>

至此,hive配置就基本完成!


4.hive版本的選擇,影響hive用戶接口

     1.hive cli, 1.0.0後已經被廢棄,但是還是能用的。

這裏寫圖片描述

    2. hive1.0.0之後官方推薦beeline + httpserver2的方式,但是考慮到hive cli 用的比較廣泛,所以在beeline之上又封裝了一層。
     新hive cli 切換命令:export USE_DEPRECATED_CLI=false
     詳情可參考官方解釋:
      https://cwiki.apache.org/confluence/display/Hive/Replacing+the+Implementation+of+Hive+CLI+Using+Beeline
      但是,我發現1.1.0版本的新cli不太好使,所以決定要麼用老的cli ,要麼用beeline。這裏寫圖片描述
    3.beeline簡單介紹
     HiveServer2提供了一個新的命令行工具Beeline,它是基於SQLLine CLI的JDBC客戶端。Beeline工作模式有兩種,即本地嵌入模式和遠程模式。嵌入模式情況下,它返回一個嵌入式的Hive(類似於Hive CLI);而遠程模式則是通過Thrift協議與某個單獨的HiveServer2進程進行連接通信。
    4.beeline本地嵌入模式操作hive這裏寫圖片描述
     遠程模式(暫不研究,下圖標錯,應該是先啓動hiveserver2):

這裏寫圖片描述

5.hive使用

     1.上面可知,我用的是beeline,進入命令行後,需要進行連接,如下圖,用戶密碼直接回車跳過

這裏寫圖片描述


總結:

     本文主要講了centos7中mysql安裝和hive安裝,並簡單介紹了hive的用戶接口(3種,看hive架構圖)。下一章節介紹hive表和UDF等。

大數據平臺搭建(四):hive中的表及UDF

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