溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

Hive基本原理及環(huán)境怎么搭建

發(fā)布時(shí)間:2021-12-01 15:12:14 來源:億速云 閱讀:133 作者:柒染 欄目:云計(jì)算

Hive基本原理及環(huán)境怎么搭建,很多新手對此不是很清楚,為了幫助大家解決這個(gè)難題,下面小編將為大家詳細(xì)講解,有這方面需求的人可以來學(xué)習(xí)下,希望你能有所收獲。

      今天我主要是在折騰這個(gè)Hive,早上看了一下書,最開始有點(diǎn)凌亂,后面慢慢地發(fā)現(xiàn),hive其實(shí)挺簡單的,以我的理解就是和數(shù)據(jù)庫有關(guān)的東西,那這樣的話對我來說就容易多啦,因?yàn)槲覍ql語法應(yīng)該是比較熟悉了,而這個(gè)是HQL的,其實(shí)很多都差不多。先來看一下Hive的基本介紹:

一、Hive基本原理

       hive是基于Hadoop的一個(gè)數(shù)據(jù)倉庫工具,可以將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫表,并提供簡單的sql查詢功能,可以將sql語句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行。 其優(yōu)點(diǎn)是學(xué)習(xí)成本低,可以通過類SQL語句快速實(shí)現(xiàn)簡單的MapReduce統(tǒng)計(jì),不必開發(fā)專門的MapReduce應(yīng)用,十分適合數(shù)據(jù)倉庫的統(tǒng)計(jì)分析。

       Hive將元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(RDBMS)中,比如MySQL、Derby中。Hive有三種模式連接到數(shù)據(jù),其方式是:單用戶模式,多用戶模式和遠(yuǎn)程服務(wù)模式。(也就是內(nèi)嵌模式
、本地模式、遠(yuǎn)程模式)。

1.1 Hive體系結(jié)構(gòu):

Hive體系結(jié)構(gòu)圖:主要分為:用戶接口、Thrift服務(wù)器、元數(shù)據(jù)存儲(chǔ)、解析器、Hadoop

Hive基本原理及環(huán)境怎么搭建

1.2 Hive數(shù)據(jù)類型

Hive的存儲(chǔ)是建立在Hadoop文件系統(tǒng)之上的,它本身沒有專門的數(shù)據(jù)存儲(chǔ)格式,其主要包括四類數(shù)據(jù)模型:
表(Table)
分區(qū)(Partition)
桶(Bucket)
外部表(External Table)

Hive基本原理及環(huán)境怎么搭建

1.3Hive的執(zhí)行流程要點(diǎn)
操作符(Operator)是Hive的最小處理單位;
每個(gè)操作符處理代表HDFS操作或MR作業(yè);
編譯器把Hive SQL轉(zhuǎn)換成一組操作符;
Hive通過ExecMapper和ExecReducer來執(zhí)行MapReduce任務(wù);
執(zhí)行MapReduce時(shí)有兩種模式:本地模式和分布式模式;

常見的Hive操作符(部分)如下:

1.4 Hive的HQL操作

hive基本的運(yùn)行操作其實(shí)和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,我下的就是這個(gè),http://hive.apache.org/downloads.html,

   2、下載mysql驅(qū)動(dòng),目前是5.1.38的 ,我已經(jīng)把這需要的兩個(gè)整理好一個(gè)壓縮包了,可以通過以下鏈接下載:(我后續(xù)貼出)

   3、分別解壓到你需要的目錄中,我是放置在/home/admin1/下載/hive-2.0.1中的,把mysql驅(qū)動(dòng)也放到hive的這個(gè)lib包中,然后在hive-2.0.1/conf中對以下文件進(jìn)行配置:

新建一個(gè)文件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

還需要新建一個(gè)hive-site.xml:

這里我用的是mysql的賬號和密碼來配置的,其他的你也可以參照配置。

<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>

<configuration>
<property>

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

<!--<value>jdbc:derby:;databaseName=metastore_db;create=true</value>-->

<value>jdbc:mysql://localhost:3306/hive?=createDatabaseIfNotExist=true</value>

<description>JDBC connect string for a JDBCmetastore</description>

</property> 

<property>

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

<!--<value>org.apache.derby.jdbc.EmbeddedDriver</value>-->

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

<description>Driver class name for a JDBCmetastore</description>

</property> 

<property>

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

<value>hive</value>

<description>username to use against metastoredatabase</description>

</property>

<property>

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

<value>a</value>

<description>password to use against metastoredatabase</description>

</property>
</configuration>


啟動(dòng):在/home/admin1/下載/hive-2.0.1中執(zhí)行:
bin/hive
 若無法初始化,則:
bin/schematool -dbType mysql  -initSchema

在hive2.0以上版本都需要initSchema一下,否則會(huì)報(bào)錯(cuò),我也是因?yàn)檫@個(gè)問題折騰了好幾個(gè)小時(shí),最后發(fā)現(xiàn)很簡單就解決了。

最后說一下的就是在安裝mysql的時(shí)候,你可以直接用ubuntu里面的uk軟件下載就可以了,在里面搜索mysql,然后下載mysql的服務(wù)器,客戶端和工作平臺(tái)就可以了,這里不再重復(fù)啰嗦了,就是需要在控制臺(tái)創(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賬號進(jìn)行登陸就可以了,

mysql  -u hive -p 

然后輸入密碼hive就成功登陸,把這個(gè)登陸信息配置到hive-site.xml中就可以了。

接下來就可以愉快的進(jìn)行hive的使用了,創(chuàng)建表等。記得要把hadoop的服務(wù)打開哦  ,    sbin/start-all.sh

總結(jié):今天遇到的兩個(gè)主要問題就是,1:bin/hive后一直報(bào)錯(cuò),最后初始化之后就可以了。2、在linux中的sublim-text無法輸入中文,且無法下載gpk解決,無法編譯sublime_imfix.c,后來通過在github上面發(fā)現(xiàn)已經(jīng)編譯好的庫,然后導(dǎo)入,經(jīng)過一系列復(fù)雜的操作最后成功解決了這個(gè)問題。找對方法,找對工具。

看完上述內(nèi)容是否對您有幫助呢?如果還想對相關(guān)知識(shí)有進(jìn)一步的了解或閱讀更多相關(guān)文章,請關(guān)注億速云行業(yè)資訊頻道,感謝您對億速云的支持。

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI