BigData之Hive:Hive数据管理的简介、下载、案例应用之详细攻略
BigData之Hive:Hive數(shù)據(jù)管理的簡(jiǎn)介、下載、案例應(yīng)用之詳細(xì)攻略
?
?
?
?
目錄
Hive數(shù)據(jù)管理的簡(jiǎn)介
1、Hive的適用場(chǎng)景——不適合那些需要高實(shí)性的應(yīng)用(不能夠在大規(guī)模數(shù)據(jù)集上實(shí)現(xiàn)低延遲快速的查詢)、不適合用聯(lián)機(jī)(online)事務(wù)處理、不提供實(shí)時(shí)查詢
2、Hive 的設(shè)計(jì)特點(diǎn)
3、Hive數(shù)據(jù)存儲(chǔ)模型的四類(lèi)數(shù)據(jù)模型—Table、External Table、Partition、Bucket
4、Hive數(shù)據(jù)管理的三個(gè)使用層次:元數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)交換
4.1、元數(shù)據(jù)存儲(chǔ)
4.2、數(shù)據(jù)存儲(chǔ)
4.3、數(shù)據(jù)交換
Hive數(shù)據(jù)管理的下載
Hive數(shù)據(jù)管理的案例應(yīng)用
1、Getting Started With Apache Hive Software?
2、Getting Involved With The Apache Hive Community?
?
?
?
Hive數(shù)據(jù)管理的簡(jiǎn)介
? ? ? ? ?Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,用來(lái)進(jìn)行數(shù)據(jù)提取、轉(zhuǎn)化、加載,這是一種可以存儲(chǔ)、查詢和分析存儲(chǔ)在Hadoop中的大規(guī)模數(shù)據(jù)的機(jī)制。hive數(shù)據(jù)倉(cāng)庫(kù)工具能將結(jié)構(gòu)化的數(shù)據(jù)文件映射為一張數(shù)據(jù)庫(kù)表,并提供SQL查詢功能,能將SQL語(yǔ)句轉(zhuǎn)變成MapReduce任務(wù)來(lái)執(zhí)行。Hive的優(yōu)點(diǎn)是學(xué)習(xí)成本低,可以通過(guò)類(lèi)似SQL語(yǔ)句實(shí)現(xiàn)快速M(fèi)apReduce統(tǒng)計(jì),使MapReduce變得更加簡(jiǎn)單,而不必開(kāi)發(fā)專(zhuān)門(mén)的MapReduce應(yīng)用程序。hive是十分適合數(shù)據(jù)倉(cāng)庫(kù)的統(tǒng)計(jì)分析和Windows注冊(cè)表文件。
? ? ? ? ?Hive提供完整的SQL查詢功能??梢詫QL語(yǔ)句轉(zhuǎn)換為MapReduce任務(wù)運(yùn)行,通過(guò)自己的SQL查詢分析需要的內(nèi)容,這套SQL簡(jiǎn)稱(chēng)Hive SQL,使不熟悉mapreduce的用戶可以很方便地利用SQL語(yǔ)言‘查詢、匯總和分析數(shù)據(jù)。而mapreduce開(kāi)發(fā)人員可以把自己寫(xiě)的mapper和reducer作為插件來(lái)支持hive做更復(fù)雜的數(shù)據(jù)分析。它與關(guān)系型數(shù)據(jù)庫(kù)的SQL略有不同,但支持了絕大多數(shù)的語(yǔ)句如DDL、DML以及常見(jiàn)的聚合函數(shù)、連接查詢、條件查詢。它還提供了一系列工具進(jìn)行數(shù)據(jù)提取轉(zhuǎn)化加載,用來(lái)存儲(chǔ)、查詢和分析存儲(chǔ)在Hadoop中的大規(guī)模數(shù)據(jù)集,并支持UDF(User-Defined Function)、UDAF(User-Defnes AggregateFunction)和USTF(User-Defined Table-Generating Function),也可以實(shí)現(xiàn)對(duì)map和reduce函數(shù)的定制,為數(shù)據(jù)操作提供了良好的伸縮性和可擴(kuò)展性。
? ? ? ? ?Hive可以把Hadoop下結(jié)構(gòu)化數(shù)據(jù)文件映射為一張成Hive中的表,并提供類(lèi)sql查詢功能,除了不支持更新、索引和事務(wù),sql其它功能都支持。可以將sql語(yǔ)句轉(zhuǎn)換為MapReduce任務(wù)進(jìn)行運(yùn)行,作為sql到MapReduce的映射器。提供shell、JDBC/ODBC、Thrift、Web等接口。優(yōu)點(diǎn)是成本低,可以通過(guò)類(lèi)sql語(yǔ)句快速實(shí)現(xiàn)簡(jiǎn)單的MapReduce統(tǒng)計(jì)。
官網(wǎng):https://hive.apache.org/
?
1、Hive的適用場(chǎng)景——不適合那些需要高實(shí)性的應(yīng)用(不能夠在大規(guī)模數(shù)據(jù)集上實(shí)現(xiàn)低延遲快速的查詢)、不適合用聯(lián)機(jī)(online)事務(wù)處理、不提供實(shí)時(shí)查詢
? ? ? ? ?Hive構(gòu)建在基于靜態(tài)批處理的Hadoop 之上,Hadoop 通常都有較高的延遲并且在作業(yè)提交和調(diào)度的時(shí)候需要大量的開(kāi)銷(xiāo)。因此,hive 并不能夠在大規(guī)模數(shù)據(jù)集上實(shí)現(xiàn)低延遲快速的查詢,例如,hive 在幾百M(fèi)B 的數(shù)據(jù)集上執(zhí)行查詢一般有分鐘級(jí)的時(shí)間延遲。?因此,hive 并不適合那些需要高實(shí)性的應(yīng)用,例如,聯(lián)機(jī)事務(wù)處理(OLTP)。hive 查詢操作過(guò)程嚴(yán)格遵守Hadoop MapReduce 的作業(yè)執(zhí)行模型,hive 將用戶的hiveQL 語(yǔ)句通過(guò)解釋器轉(zhuǎn)換為MapReduce 作業(yè)提交到Hadoop 集群上,Hadoop 監(jiān)控作業(yè)執(zhí)行過(guò)程,然后返回作業(yè)執(zhí)行結(jié)果給用戶。hive 并非為聯(lián)機(jī)事務(wù)處理而設(shè)計(jì),Hive并不提供實(shí)時(shí)的查詢和基于行級(jí)的數(shù)據(jù)更新操作。hive 的最佳使用場(chǎng)合是大數(shù)據(jù)集的批處理作業(yè),例如,網(wǎng)絡(luò)日志分析。
? ? ? ? ?Hive不適合用于聯(lián)機(jī)(online)事務(wù)處理,也不提供實(shí)時(shí)查詢功能。它最適合應(yīng)用在基于大量不可變數(shù)據(jù)的批處理作業(yè)。hive的特點(diǎn)包括:可伸縮(在Hadoop的集群上動(dòng)態(tài)添加設(shè)備)、可擴(kuò)展、容錯(cuò)、輸入格式的松散耦合。
?
?
2、Hive 的設(shè)計(jì)特點(diǎn)
? ? ? ? ?Hive是一種底層封裝了Hadoop 的數(shù)據(jù)倉(cāng)庫(kù)處理工具,使用類(lèi)SQL 的hiveSQL 語(yǔ)言實(shí)現(xiàn)數(shù)據(jù)查詢,所有Hive 的數(shù)據(jù)都存儲(chǔ)在Hadoop 兼容的文件系統(tǒng)(例如,Amazon S3、HDFS)中。Hive 在加載數(shù)據(jù)過(guò)程中不會(huì)對(duì)數(shù)據(jù)進(jìn)行任何的修改,只是將數(shù)據(jù)移動(dòng)到HDFS 中hive 設(shè)定的目錄下,因此,Hive 不支持對(duì)數(shù)據(jù)的改寫(xiě)和添加,所有的數(shù)據(jù)都是在加載的時(shí)候確定的。hive 的設(shè)計(jì)特點(diǎn)如下。
- 支持創(chuàng)建索引,優(yōu)化數(shù)據(jù)查詢。
- 不同的存儲(chǔ)類(lèi)型,例如,純文本文件、HBase 中的文件。?
- 將元數(shù)據(jù)保存在關(guān)系數(shù)據(jù)庫(kù)中,大大減少了在查詢過(guò)程中執(zhí)行語(yǔ)義檢查的時(shí)間。
- 可以直接使用存儲(chǔ)在Hadoop 文件系統(tǒng)中的數(shù)據(jù)。
- 內(nèi)置大量用戶函數(shù)UDF 來(lái)操作時(shí)間、字符串和其他的數(shù)據(jù)挖掘工具,支持用戶擴(kuò)展UDF 函數(shù)來(lái)完成內(nèi)置函數(shù)無(wú)法實(shí)現(xiàn)的操作。
- 類(lèi)SQL 的查詢方式,將SQL 查詢轉(zhuǎn)換為MapReduce 的job 在Hadoop集群上執(zhí)行。
?
?
3、Hive數(shù)據(jù)存儲(chǔ)模型的四類(lèi)數(shù)據(jù)模型—Table、External Table、Partition、Bucket
? ? ? ? ?Hive中包含以下四類(lèi)數(shù)據(jù)模型:表(Table)、外部表(External Table)、分區(qū)(Partition)、桶(Bucket)。?
- (1)、Table:hive中的Table和數(shù)據(jù)庫(kù)中的Table在概念上是類(lèi)似的。在hive中每一個(gè)Table都有一個(gè)相應(yīng)的目錄存儲(chǔ)數(shù)據(jù)。?
? ? ? ? ?類(lèi)似與傳統(tǒng)數(shù)據(jù)庫(kù)中的Table,每一個(gè)Table在Hive中都有一個(gè)相應(yīng)的目錄來(lái)存儲(chǔ)數(shù)據(jù)。例如:一個(gè)表zz,它在HDFS中的路徑為:/wh/zz,其中wh是在hive-site.xml中由$指定的數(shù)據(jù)倉(cāng)庫(kù)的目錄,所有的Table數(shù)據(jù)(不含External?Table)都保存在這個(gè)目錄中。 - (2)、External Table:外部表是一個(gè)已經(jīng)存儲(chǔ)在HDFS中,并具有一定格式的數(shù)據(jù)。使用外部表意味著hive表內(nèi)的數(shù)據(jù)不在hive的數(shù)據(jù)倉(cāng)庫(kù)內(nèi),它會(huì)到倉(cāng)庫(kù)目錄以外的位置訪問(wèn)數(shù)據(jù)。
? ? ? ? ?外部表和普通表的操作不同,創(chuàng)建普通表的操作分為兩個(gè)步驟,即表的創(chuàng)建步驟和數(shù)據(jù)裝入步驟(可以分開(kāi)也可以同時(shí)完成)。在數(shù)據(jù)的裝入過(guò)程中,實(shí)際數(shù)據(jù)會(huì)移動(dòng)到數(shù)據(jù)表所在的hive數(shù)據(jù)倉(cāng)庫(kù)文件目錄中,其后對(duì)該數(shù)據(jù)表的訪問(wèn)將直接訪問(wèn)裝入所對(duì)應(yīng)文件目錄中的數(shù)據(jù)。刪除表時(shí),該表的元數(shù)據(jù)和在數(shù)據(jù)倉(cāng)庫(kù)目錄下的實(shí)際數(shù)據(jù)將同時(shí)刪除。?
? ? ? ? ?外部表的創(chuàng)建只有一個(gè)步驟,創(chuàng)建表和裝人數(shù)據(jù)同時(shí)完成。外部表的實(shí)際數(shù)據(jù)存儲(chǔ)在創(chuàng)建語(yǔ)句I。OCATION參數(shù)指定的外部HDFS文件路徑中,但這個(gè)數(shù)據(jù)并不會(huì)移動(dòng)到hive數(shù)據(jù)倉(cāng)庫(kù)的文件目錄中。刪除外部表時(shí),僅刪除其元數(shù)據(jù),保存在外部HDFS文件目錄中的數(shù)據(jù)不會(huì)被刪除。
? ? ? ? ?ExternalTable指向已存在HDFS中的數(shù)據(jù),可創(chuàng)建Partition。和Table在元數(shù)據(jù)組織結(jié)構(gòu)相同,在實(shí)際存儲(chǔ)上有較大差異。Table創(chuàng)建和數(shù)據(jù)加載過(guò)程,可以用統(tǒng)一語(yǔ)句實(shí)現(xiàn),實(shí)際數(shù)據(jù)被轉(zhuǎn)移到數(shù)據(jù)倉(cāng)庫(kù)目錄中,之后對(duì)數(shù)據(jù)的訪問(wèn)將會(huì)直接在數(shù)據(jù)倉(cāng)庫(kù)的目錄中完成。刪除表時(shí),表中的數(shù)據(jù)和元數(shù)據(jù)都會(huì)刪除。ExternalTable只有一個(gè)過(guò)程,因?yàn)榧虞d數(shù)據(jù)和創(chuàng)建表是同時(shí)完成。世界數(shù)據(jù)是存儲(chǔ)在Location后面指定的HDFS路徑中的,并不會(huì)移動(dòng)到數(shù)據(jù)倉(cāng)庫(kù)中。 - (3)、Partition:分區(qū)對(duì)應(yīng)于數(shù)據(jù)庫(kù)中的分區(qū)列的密集索引,但是hive中分區(qū)的組織方式和數(shù)據(jù)庫(kù)中的很不相同。在hive中,表中的一個(gè)分區(qū)對(duì)應(yīng)于表下的一個(gè)目錄,所有的分區(qū)的數(shù)據(jù)都存儲(chǔ)在對(duì)應(yīng)的目錄中。?
? ? ? ? ?類(lèi)似于傳統(tǒng)數(shù)據(jù)庫(kù)中劃分列的索引。在Hive中,表中的一個(gè)Partition對(duì)應(yīng)于表下的一個(gè)目錄,所有的Partition數(shù)據(jù)都存儲(chǔ)在對(duì)應(yīng)的目錄中。例如:zz表中包含ds和city兩個(gè)Partition,則對(duì)應(yīng)于ds=20140214,city=beijing的HDFS子目錄為:/wh/zz/ds=20140214/city=Beijing; - (4)、Bucket:桶對(duì)指定列進(jìn)行哈希(hash)計(jì)算,會(huì)根據(jù)哈希值切分?jǐn)?shù)據(jù),目的是為了并行,每一個(gè)桶對(duì)應(yīng)一個(gè)文件。
? ? ? ? ?對(duì)指定列計(jì)算的hash,根據(jù)hash值切分?jǐn)?shù)據(jù),目的是為了便于并行,每一個(gè)Buckets對(duì)應(yīng)一個(gè)文件。將user列分?jǐn)?shù)至32個(gè)Bucket上,首先對(duì)user列的值計(jì)算hash,比如,對(duì)應(yīng)hash=0的HDFS目錄為:/wh/zz/ds=20140214/city=Beijing/part-00000;對(duì)應(yīng)hash=20的,目錄為:/wh/zz/ds=20140214/city=Beijing/part-00020。
?
4、Hive數(shù)據(jù)管理的三個(gè)使用層次:元數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)交換
? ? ? ?作為一個(gè)數(shù)據(jù)倉(cāng)庫(kù),Hive的數(shù)據(jù)管理按照使用層次可以從元數(shù)據(jù)存儲(chǔ)、數(shù)據(jù)存儲(chǔ)和數(shù)據(jù)交換三個(gè)方面介紹。Hive的數(shù)據(jù)存儲(chǔ)在HDFS中,大部分的查詢由MapReduce完成。
4.1、元數(shù)據(jù)存儲(chǔ)
Hive將元數(shù)據(jù)存儲(chǔ)在RDBMS中,有三種方式可以連接到數(shù)據(jù)庫(kù):
- 內(nèi)嵌模式:元數(shù)據(jù)保持在內(nèi)嵌數(shù)據(jù)庫(kù)的Derby,一般用于單元測(cè)試,只允許一個(gè)會(huì)話連接
- 多用戶模式:在本地安裝Mysql,把元數(shù)據(jù)放到Mysql內(nèi)
- 遠(yuǎn)程模式:元數(shù)據(jù)放置在遠(yuǎn)程的Mysql數(shù)據(jù)庫(kù)
?
4.2、數(shù)據(jù)存儲(chǔ)
- 首先,Hive沒(méi)有專(zhuān)門(mén)的數(shù)據(jù)存儲(chǔ)格式,也沒(méi)有為數(shù)據(jù)建立索引,用于可以非常自由的組織Hive中的表,只需要在創(chuàng)建表的時(shí)候告訴Hive數(shù)據(jù)中的列分隔符和行分隔符,這就可以解析數(shù)據(jù)了。
- 其次,Hive中所有的數(shù)據(jù)都存儲(chǔ)在HDFS中,Hive中包含4中數(shù)據(jù)模型:Tabel、ExternalTable、Partition、Bucket。
?
4.3、數(shù)據(jù)交換
- 用戶接口:包括客戶端、Web界面和數(shù)據(jù)庫(kù)接口
- 元數(shù)據(jù)存儲(chǔ):通常是存儲(chǔ)在關(guān)系數(shù)據(jù)庫(kù)中的,如Mysql,Derby等
- Hadoop:用HDFS進(jìn)行存儲(chǔ),利用MapReduce進(jìn)行計(jì)算。
- 關(guān)鍵點(diǎn):Hive將元數(shù)據(jù)存儲(chǔ)在數(shù)據(jù)庫(kù)中,如Mysql、Derby中。Hive中的元數(shù)據(jù)包括表的名字、表的列和分區(qū)及其屬性、表的屬性(是否為外部表)、表數(shù)據(jù)所在的目錄等。
?
?
?
Hive數(shù)據(jù)管理的下載
官網(wǎng)下載:https://hive.apache.org/downloads.html
?
?
Hive數(shù)據(jù)管理的案例應(yīng)用
1、Getting Started With Apache Hive Software?
- Check out the?Getting Started Guide?on the?Hive wiki.
- Learn more?About Hive's Functionality?on?our wiki
- Read the?Getting Started Guide?to learn how to install Hive
- The?User and Hive SQL documentation?shows how to program Hive
?
2、Getting Involved With The Apache Hive Community?
Apache Hive is an open source project run by volunteers at the Apache Software Foundation. Previously it was a subproject of?Apache? Hadoop?, but has now graduated to become a top-level project of its own. We encourage you to learn about the project and contribute your expertise.
- Give us?feedback or submit bug reports: What can we do better?
- Join the?mailing list?and meet our?community
- Read through our?Contributor's Guides?about where to find the source or submit patches
- Become a?Hive Fan on Facebook
- Follow?@ApacheHive on Twitter
?
?
?
總結(jié)
以上是生活随笔為你收集整理的BigData之Hive:Hive数据管理的简介、下载、案例应用之详细攻略的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: DL:关于深度学习常用数据集中训练好的权
- 下一篇: Paper:2020年3月30日何恺明团