華為云計算 云知識 【云小課】EI第26課 MRS基礎入門之Hive組件介紹
【云小課】EI第26課 MRS基礎入門之Hive組件介紹

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

Hive主要特點如下:

·         海量結構化數(shù)據(jù)分析匯總。

·         將復雜的MapReduce編寫任務簡化為SQL語句。

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

image008.jpg

Hive結構

Hive提供服務的原理是將HQL編譯解析成相應的MapReduce或者HDFS任務,如下為Hive的結構概圖。

image010.png

名稱

說明

HiveServer

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

MetaStore

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

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

WebHCat

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

Hive客戶端

包括人機交互命令行Beeline、提供給JDBC應用的JDBC驅(qū)動、提供給Python應用的Python驅(qū)動、提供給MapreduceHCatalog相關JAR包。

ZooKeeper集群

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

HDFS/HBase集群

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

MapReduce/Yarn集群

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

 

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

image012.png

Hive原理

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

image014.png

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

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

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

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

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

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

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

Hive操作示例

在華為云MRS集群中,您可以通過連接HBase客戶端實現(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認證忽略

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

beeline

 

...

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

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

3.    創(chuàng)建一個表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ù)文件導入表中。

例如本地已提前準備好源數(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ù)導入后,查詢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好了,本期云小課就介紹到這里,快去體驗MapReduce(MRS)更多功能吧!猛戳這里