Hive基本原理及環(huán)境怎么搭建,很多新手對此不是很清楚,為了幫助大家解決這個難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。
創(chuàng)新互聯(lián)公司專業(yè)為企業(yè)提供忻城網(wǎng)站建設(shè)、忻城做網(wǎng)站、忻城網(wǎng)站設(shè)計、忻城網(wǎng)站制作等企業(yè)網(wǎng)站建設(shè)、網(wǎng)頁設(shè)計與制作、忻城企業(yè)網(wǎng)站模板建站服務(wù),10余年忻城做網(wǎng)站經(jīng)驗,不只是建網(wǎng)站,更提供有價值的思路和整體網(wǎng)絡(luò)服務(wù)。
今天我主要是在折騰這個Hive,早上看了一下書,最開始有點凌亂,后面慢慢地發(fā)現(xiàn),hive其實挺簡單的,以我的理解就是和數(shù)據(jù)庫有關(guān)的東西,那這樣的話對我來說就容易多啦,因為我對sql語法應(yīng)該是比較熟悉了,而這個是HQL的,其實很多都差不多。先來看一下Hive的基本介紹:
一、Hive基本原理
hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供簡單的sql查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務(wù)進行運行。 其優(yōu)點是學(xué)習(xí)成本低,可以通過類SQL語句快速實現(xiàn)簡單的MapReduce統(tǒng)計,不必開發(fā)專門的MapReduce應(yīng)用,十分適合數(shù)據(jù)倉庫的統(tǒng)計分析。
Hive將元數(shù)據(jù)存儲在數(shù)據(jù)庫(RDBMS)中,比如MySQL、Derby中。Hive有三種模式連接到數(shù)據(jù),其方式是:單用戶模式,多用戶模式和遠程服務(wù)模式。(也就是內(nèi)嵌模式
、本地模式、遠程模式)。
1.1 Hive體系結(jié)構(gòu):
Hive體系結(jié)構(gòu)圖:主要分為:用戶接口、Thrift服務(wù)器、元數(shù)據(jù)存儲、解析器、Hadoop
1.2 Hive數(shù)據(jù)類型
Hive的存儲是建立在Hadoop文件系統(tǒng)之上的,它本身沒有專門的數(shù)據(jù)存儲格式,其主要包括四類數(shù)據(jù)模型:
表(Table)
分區(qū)(Partition)
桶(Bucket)
外部表(External Table)
1.3Hive的執(zhí)行流程要點
操作符(Operator)是Hive的最小處理單位;
每個操作符處理代表HDFS操作或MR作業(yè);
編譯器把Hive SQL轉(zhuǎn)換成一組操作符;
Hive通過ExecMapper和ExecReducer來執(zhí)行MapReduce任務(wù);
執(zhí)行MapReduce時有兩種模式:本地模式和分布式模式;
常見的Hive操作符(部分)如下:
1.4 Hive的HQL操作
hive基本的運行操作其實和sql差不多,例如:
select u.name, o.orderid from order o join user u on o.uid = u.uid; select dealid, count(distinct uid), count(distinct date) from order group by dealid;
簡單Hive表語句:
create table student
(
name string,
sex string,
age int
);
二、Hive基本配置
1、從apache官網(wǎng)的hadoop找到hive,目前最新版本是2.0.1,我下的就是這個,http://hive.apache.org/downloads.html,
2、下載mysql驅(qū)動,目前是5.1.38的 ,我已經(jīng)把這需要的兩個整理好一個壓縮包了,可以通過以下鏈接下載:(我后續(xù)貼出)
3、分別解壓到你需要的目錄中,我是放置在/home/admin1/下載/hive-2.0.1中的,把mysql驅(qū)動也放到hive的這個lib包中,然后在hive-2.0.1/conf中對以下文件進行配置:
新建一個文件hive-env.sh
把里面的目錄改成你的hadoop放置的目錄就可以了。
export HIVE_HOME=/home/admin1/下載/hive-2.0.1 export PATH=$PATH:$HIVE_HOME/bin HADOOP_HOME=/home/admin1/下載/hadoop-2.5.2 export HIVE_CONF_DIR=/home/admin1/下載/hive-2.0.1/conf export HIVE_AUX_JARS_PATH=/home/admin1/下載/hive-2.0.1/lib
還需要新建一個hive-site.xml:
這里我用的是mysql的賬號和密碼來配置的,其他的你也可以參照配置。
javax.jdo.option.ConnectionURL jdbc:mysql://localhost:3306/hive?=createDatabaseIfNotExist=true JDBC connect string for a JDBCmetastore javax.jdo.option.ConnectionDriverName com.mysql.jdbc.Driver Driver class name for a JDBCmetastore javax.jdo.option.ConnectionUserName hive username to use against metastoredatabase javax.jdo.option.ConnectionPassword a password to use against metastoredatabase
啟動:在/home/admin1/下載/hive-2.0.1中執(zhí)行:
bin/hive
若無法初始化,則:
bin/schematool -dbType mysql -initSchema
在hive2.0以上版本都需要initSchema一下,否則會報錯,我也是因為這個問題折騰了好幾個小時,最后發(fā)現(xiàn)很簡單就解決了。
最后說一下的就是在安裝mysql的時候,你可以直接用ubuntu里面的uk軟件下載就可以了,在里面搜索mysql,然后下載mysql的服務(wù)器,客戶端和工作平臺就可以了,這里不再重復(fù)啰嗦了,就是需要在控制臺創(chuàng)建一下新用戶:
mysql -uroot
create user 'hive' identify by 'hive';
create database hive;
grant all privileges on *.* to 'hive'@'localhost' identified by 'hive';
flush privileges
然后可以通過hive賬號進行登陸就可以了,
mysql -u hive -p
然后輸入密碼hive就成功登陸,把這個登陸信息配置到hive-site.xml中就可以了。
接下來就可以愉快的進行hive的使用了,創(chuàng)建表等。記得要把hadoop的服務(wù)打開哦 , sbin/start-all.sh
總結(jié):今天遇到的兩個主要問題就是,1:bin/hive后一直報錯,最后初始化之后就可以了。2、在linux中的sublim-text無法輸入中文,且無法下載gpk解決,無法編譯sublime_imfix.c,后來通過在github上面發(fā)現(xiàn)已經(jīng)編譯好的庫,然后導(dǎo)入,經(jīng)過一系列復(fù)雜的操作最后成功解決了這個問題。找對方法,找對工具。
看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識有進一步的了解或閱讀更多相關(guān)文章,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝您對創(chuàng)新互聯(lián)的支持。