hive初級、進階、高級

剛剛研究了hive,從定義,安裝到hive命令、優化高級,不斷完善中。。。

第一部分:Hive簡介

Hive是基於hadoop的一個數據倉庫工具,可以將結構化的數據文件映射成一張數據表,並提供類SQL的查詢功能。

Hive的本質是將SQL轉換成mapreduce程序。

第二部分:爲什麼使用hive

  1. 避免去寫mapreduce,減少開發人員的成本

  2. 操作接口採用類sql語法,提供快速開發能力

  3. 擴展功能比較方便

第三部分:hivehadoop的關係

由圖可以看出,hive必須給予hadoop使用

第四部分:hive與傳統數據庫對比

 

Hive

RDBMS

查詢語言

HQL

SQL

數據存儲

HDFS

Raw Device or Local FS

執行

MapReduce

Excutor

執行延遲

處理數據規模

索引

0.8版本後加入位圖索引

有複雜的索引

第五部分:hive安裝手順

在隨便一臺有hadoop環境的機器上解壓縮:hive-0.9.0-bin.tar.gztar –zxvf hive-0.9.0-bin.tar.gz

修改hive/conf下的配置文件

 cphive-default.xml.template hive-default.xml

 cphive-default.xml hive-site.xml

 cphive-env.sh.template hive-env.sh

hive-env.sh配置HADOOP_HOME=/home/user/hadoop,最好配置一下jvm堆大小,否則使用jdbc服務的時候很容易內存溢出export HADOOP_HEAPSIZE=1024,大小視自己情況而定。

配置環境變量HIVE_HOMEPATHvi /etc/profile ,配置完成後source /etc/profile,使文件立即生效,配置如下:

到此爲止,hive配置完成,輸入hive,啓動,輸入show databases進行驗證、運行web接口:hive --service hwihttp://client:9999/hwi

啓動hivejdbc服務端thrift服務接口 hive --service hiveserver 50000

第六部分:hive配置mysql

默認情況下,hive元數據保存在內嵌的Derby數據庫中,只允許一個會話連接,爲了支持多用戶會話,則需要建立一個獨立的元數據庫,hive內部提供了對mysql很好的支持,配置一個獨立的元數據庫需要以下步驟:

第一步:安裝MySQL服務器端和MySQL客戶端,並啓動MySQL服務(我的安裝在window下,hive在虛擬機下centos6.5),安裝時需要允許遠程登錄(記得最後一步打鉤,如果是在linux上,sudo gedit /etc/mysql/my.cnf #bind-address=127.0.0.1 <---註釋掉這一行就可以遠程登錄了)

第二步:安裝Hive

第三步:Hive建立相應的MySQL賬戶,並賦予足夠的權限,執行命令如下:

$ mysql -uroot -pmysql

mysql> CREATE USER 'hive' IDENTIFIED BY 'mysql';

mysql> GRANT ALL PRIVILEGES ON *.* TO 'hive'@'%' WITH GRANTOPTION;

mysql> flush privileges;

第四步:建立 Hive 專用的元數據庫,記得創建時用剛纔創建的“hive”賬號登陸。

mysql> exit;

$ mysql -uhive –pmysql

mysql> create database hive;

第五步:Hiveconf目錄下的文件“hive-site.xml”中增加如下配置:

<?xml version="1.0"?>

<?xml-stylesheettype="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://192.168.11.157:3306/hive?characterEncoding=UTF-8</value>

   </property>

   <property>

       <name>javax.jdo.option.ConnectionDriverName</name>

       <value>com.mysql.jdbc.Driver</value>

   </property>

   <property>

       <name>javax.jdo.option.ConnectionUserName</name>

       <value>hive</value>

   </property>

   <property>

       <name>javax.jdo.option.ConnectionPassword</name>

       <value>mysql</value>

   </property>

</configuration>

 

從前面我們知道我們的“hive-site.xml”是一個“hive-default.xml.template”的一個拷貝,裏面的配置參數非常之多,但是並不是我們都需要的,我們知道,Hive系統會加載兩個配置文件一個默認配置文件“hive-default.xml”,另一個就是用戶自定義文件“hive-site.xml”。當“hive-site.xml”中的配置參數的值與“hive-default.xml”文件中不一致時,以用戶自定義的爲準。所以我們就把我們不需要的參數都刪除掉,只留下上面所示的內容。

第六步:MySQLJDBC驅動包複製到Hivelib目錄下。
JDBC
驅動包的版本:mysql-connector-java-5.1.18-bin.jar

第七步:啓動 HiveShell,輸入hive,如果沒報錯,執行“show tables;”命令,如果不報錯,表明基於獨立元數據庫的 Hive 已經安裝成功了。

第八步:驗證Hive配置是否有誤,進入Hiveshell新建表,MySQLHive數據庫中可以看到相應的元數據庫信息。
1)
Hive上建立數據表
hive> CREATE TABLE xp(id INT,name string) ROW FORMAT DELIMITED FIELDSTERMINATED BY '\t';
2)
MySQL數據庫上查看元數據信息
用到的 SQL語句:
use hive; //
使用 hive數據庫庫

show tables;//
顯示 hive數據庫中的數據表
select * from TBLS;//
查看 hive的元數據信息
到此Hive集成Mysql作爲元數據已完成。

第七部分:hive內表、外表、分區表、命令

第八部分:hive優化

 

 


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