華為云計(jì)算 云知識(shí) 【云小課】EI第26課 MRS基礎(chǔ)入門之Hive組件介紹
【云小課】EI第26課 MRS基礎(chǔ)入門之Hive組件介紹

Hive是建立在Hadoop上的 數(shù)據(jù)倉(cāng)庫 框架,提供 大數(shù)據(jù) 平臺(tái)批處理計(jì)算能力,能夠?qū)Y(jié)構(gòu)化/半結(jié)構(gòu)化數(shù)據(jù)進(jìn)行批量分析匯總完成數(shù)據(jù)計(jì)算。提供類似SQLHive Query Language語言操作結(jié)構(gòu)化數(shù)據(jù),其基本原理是將HQL語言自動(dòng)轉(zhuǎn)換成MapReduce任務(wù),從而完成對(duì)Hadoop集群中存儲(chǔ)的海量數(shù)據(jù)進(jìn)行查詢和分析。

Hive主要特點(diǎn)如下:

·         海量結(jié)構(gòu)化數(shù)據(jù)分析匯總。

·         將復(fù)雜的MapReduce編寫任務(wù)簡(jiǎn)化為SQL語句。

·         靈活的數(shù)據(jù)存儲(chǔ)格式,支持JSON,CSV,TEXTFILE,RCFILE,SEQUENCEFILE,ORCOptimized Row Columnar)這幾種存儲(chǔ)格式。

image008.jpg

Hive結(jié)構(gòu)

Hive提供服務(wù)的原理是將HQL編譯解析成相應(yīng)的MapReduce或者HDFS任務(wù),如下為Hive的結(jié)構(gòu)概圖。

image010.png

名稱

說明

HiveServer

一個(gè)集群內(nèi)可部署多個(gè)HiveServer,負(fù)荷分擔(dān)。對(duì)外提供Hive 數(shù)據(jù)庫 服務(wù),將用戶提交的HQL語句進(jìn)行編譯,解析成對(duì)應(yīng)的Yarn任務(wù)或者HDFS操作,從而完成數(shù)據(jù)的提取、轉(zhuǎn)換、分析。

MetaStore

·         一個(gè)集群內(nèi)可部署多個(gè)MetaStore,負(fù)荷分擔(dān)。提供Hive的元數(shù)據(jù)服務(wù),負(fù)責(zé)Hive表的結(jié)構(gòu)和屬性信息讀、寫、維護(hù)和修改。

·         提供Thrift接口,供HiveServer、Spark、WebHCatMetaStore客戶端來訪問,操作元數(shù)據(jù)。

WebHCat

一個(gè)集群內(nèi)可部署多個(gè)WebHCat,負(fù)荷分擔(dān)。提供Rest接口,通過Rest執(zhí)行Hive命令,提交MapReduce任務(wù)。

Hive客戶端

包括人機(jī)交互命令行Beeline、提供給JDBC應(yīng)用的JDBC驅(qū)動(dòng)、提供給Python應(yīng)用的Python驅(qū)動(dòng)、提供給MapreduceHCatalog相關(guān)JAR包。

ZooKeeper集群

ZooKeeper作為臨時(shí)節(jié)點(diǎn)記錄各HiveServer實(shí)例的IP地址列表,客戶端驅(qū)動(dòng)連接Zookeeper獲取該列表,并根據(jù)路由機(jī)制選取對(duì)應(yīng)的HiveServer實(shí)例。

HDFS/HBase集群

Hive表數(shù)據(jù)存儲(chǔ)在HDFS集群中。

MapReduce/Yarn集群

提供分布式計(jì)算服務(wù):Hive的大部分?jǐn)?shù)據(jù)操作依賴MapReduce,HiveServer的主要功能是將HQL語句轉(zhuǎn)換成MapReduce任務(wù),從而完成對(duì)海量數(shù)據(jù)的處理。

 

HCatalog建立在Hive Metastore之上,具有HiveDDL能力。從另外一種意義上說,HCatalog還是Hadoop的表和存儲(chǔ)管理層,它使用戶能夠通過使用不同的數(shù)據(jù)處理工具(比如MapReduce),更輕松地在網(wǎng)格上讀寫HDFS上的數(shù)據(jù),HCatalog還能為這些數(shù)據(jù)處理工具提供讀寫接口,并使用Hive的命令行接口發(fā)布數(shù)據(jù)定義和元數(shù)據(jù)探索命令。此外,經(jīng)過封裝這些命令,WebHcat Server還對(duì)外提供了RESTful接口。

image012.png

Hive原理

Hive作為一個(gè)基于HDFSMapReduce架構(gòu)的數(shù)據(jù)倉(cāng)庫,其主要能力是通過對(duì)HQLHive Query Language)編譯和解析,生成并執(zhí)行相應(yīng)的MapReduce任務(wù)或者HDFS操作。

image014.png

·         Metastore:對(duì)表,列和Partition等的元數(shù)據(jù)進(jìn)行讀寫及更新操作,其下層為關(guān)系型數(shù)據(jù)庫。

·         Driver:管理HiveQL執(zhí)行的生命周期并貫穿Hive任務(wù)整個(gè)執(zhí)行期間。

·         Compiler:編譯HiveQL并將其轉(zhuǎn)化為一系列相互依賴的Map/Reduce任務(wù)。

·         Optimizer:優(yōu)化器,分為邏輯優(yōu)化器和物理優(yōu)化器,分別對(duì)HiveQL生成的執(zhí)行計(jì)劃和MapReduce任務(wù)進(jìn)行優(yōu)化。

·         Executor:按照任務(wù)的依賴關(guān)系分別執(zhí)行Map/Reduce任務(wù)。

·         ThriftServer:提供thrift接口,作為JDBC的服務(wù)端,并將Hive和其他應(yīng)用程序集成起來。

·         Clients:包含WebUIJDBC接口,為用戶訪問提供接口。

Hive操作示例

在華為云MRS集群中,您可以通過連接HBase客戶端實(shí)現(xiàn)創(chuàng)建表,往表中插入數(shù)據(jù),修改表,讀取表數(shù)據(jù),刪除表中數(shù)據(jù)以及刪除表的功能。

MRS集群的創(chuàng)建可參考創(chuàng)建集群。

1.    安裝集群客戶端后,登錄客戶端。

cd /opt/client/

source bigdata_env

kinit hiveuser   #集群未開啟Kerberos認(rèn)證忽略

2.    執(zhí)行命令進(jìn)入Hive Beeline命令行。

beeline

 

...

Beeline version 3.1.0-hw-ei-311001-SNAPSHOT by Apache Hive

0: jdbc:hive2://XXX:21066/>

3.    創(chuàng)建一個(gè)表mytable

create table mytable(id int,name string,company string) row format delimited fields terminated by ',' stored as textfile;

執(zhí)行命令,查看表是否創(chuàng)建成功。

show tables;

...

+--------------------------------------+

|               tab_name               |

+--------------------------------------+

| mytable                              |

+--------------------------------------+

 

 

4.    本地源數(shù)據(jù)文件導(dǎo)入表中。

例如本地已提前準(zhǔn)備好源數(shù)據(jù)文件“/tmp/data.txt”,文件內(nèi)容如下:

1,yang,AAA

2,liu,BBB

3,cheng,CCC

beeline命令行中執(zhí)行命令加載數(shù)據(jù)至Hive表中。

load data local inpath '/tmp/data.txt' into table mytable;

數(shù)據(jù)導(dǎo)入后,查詢Hive表內(nèi)容數(shù)據(jù)。

select * from mytable;

 

...

+-------------+---------------+------------------+

| mytable.id  | mytable.name  | mytable.company  |

+-------------+---------------+------------------+

| 1           | yang          | AAA              |

| 2           | liu           | BBB              |

| 3           | cheng         | CCC              |

+-------------+---------------+------------------+

5.    刪除表。

drop table mytable;

image020.png好了,本期云小課就介紹到這里,快去體驗(yàn)MapReduce(MRS)更多功能吧!猛戳這里