BigData之Hive:Hive数据管理的简介、下载、案例应用之详细攻略
BigData之Hive:Hive數據管理的簡介、下載、案例應用之詳細攻略
?
?
?
?
目錄
Hive數據管理的簡介
1、Hive的適用場景——不適合那些需要高實性的應用(不能夠在大規模數據集上實現低延遲快速的查詢)、不適合用聯機(online)事務處理、不提供實時查詢
2、Hive 的設計特點
3、Hive數據存儲模型的四類數據模型—Table、External Table、Partition、Bucket
4、Hive數據管理的三個使用層次:元數據存儲、數據存儲和數據交換
4.1、元數據存儲
4.2、數據存儲
4.3、數據交換
Hive數據管理的下載
Hive數據管理的案例應用
1、Getting Started With Apache Hive Software?
2、Getting Involved With The Apache Hive Community?
?
?
?
Hive數據管理的簡介
? ? ? ? ?Hive是基于Hadoop的一個數據倉庫工具,用來進行數據提取、轉化、加載,這是一種可以存儲、查詢和分析存儲在Hadoop中的大規模數據的機制。hive數據倉庫工具能將結構化的數據文件映射為一張數據庫表,并提供SQL查詢功能,能將SQL語句轉變成MapReduce任務來執行。Hive的優點是學習成本低,可以通過類似SQL語句實現快速MapReduce統計,使MapReduce變得更加簡單,而不必開發專門的MapReduce應用程序。hive是十分適合數據倉庫的統計分析和Windows注冊表文件。
? ? ? ? ?Hive提供完整的SQL查詢功能。可以將SQL語句轉換為MapReduce任務運行,通過自己的SQL查詢分析需要的內容,這套SQL簡稱Hive SQL,使不熟悉mapreduce的用戶可以很方便地利用SQL語言‘查詢、匯總和分析數據。而mapreduce開發人員可以把自己寫的mapper和reducer作為插件來支持hive做更復雜的數據分析。它與關系型數據庫的SQL略有不同,但支持了絕大多數的語句如DDL、DML以及常見的聚合函數、連接查詢、條件查詢。它還提供了一系列工具進行數據提取轉化加載,用來存儲、查詢和分析存儲在Hadoop中的大規模數據集,并支持UDF(User-Defined Function)、UDAF(User-Defnes AggregateFunction)和USTF(User-Defined Table-Generating Function),也可以實現對map和reduce函數的定制,為數據操作提供了良好的伸縮性和可擴展性。
? ? ? ? ?Hive可以把Hadoop下結構化數據文件映射為一張成Hive中的表,并提供類sql查詢功能,除了不支持更新、索引和事務,sql其它功能都支持。可以將sql語句轉換為MapReduce任務進行運行,作為sql到MapReduce的映射器。提供shell、JDBC/ODBC、Thrift、Web等接口。優點是成本低,可以通過類sql語句快速實現簡單的MapReduce統計。
官網:https://hive.apache.org/
?
1、Hive的適用場景——不適合那些需要高實性的應用(不能夠在大規模數據集上實現低延遲快速的查詢)、不適合用聯機(online)事務處理、不提供實時查詢
? ? ? ? ?Hive構建在基于靜態批處理的Hadoop 之上,Hadoop 通常都有較高的延遲并且在作業提交和調度的時候需要大量的開銷。因此,hive 并不能夠在大規模數據集上實現低延遲快速的查詢,例如,hive 在幾百MB 的數據集上執行查詢一般有分鐘級的時間延遲。?因此,hive 并不適合那些需要高實性的應用,例如,聯機事務處理(OLTP)。hive 查詢操作過程嚴格遵守Hadoop MapReduce 的作業執行模型,hive 將用戶的hiveQL 語句通過解釋器轉換為MapReduce 作業提交到Hadoop 集群上,Hadoop 監控作業執行過程,然后返回作業執行結果給用戶。hive 并非為聯機事務處理而設計,Hive并不提供實時的查詢和基于行級的數據更新操作。hive 的最佳使用場合是大數據集的批處理作業,例如,網絡日志分析。
? ? ? ? ?Hive不適合用于聯機(online)事務處理,也不提供實時查詢功能。它最適合應用在基于大量不可變數據的批處理作業。hive的特點包括:可伸縮(在Hadoop的集群上動態添加設備)、可擴展、容錯、輸入格式的松散耦合。
?
?
2、Hive 的設計特點
? ? ? ? ?Hive是一種底層封裝了Hadoop 的數據倉庫處理工具,使用類SQL 的hiveSQL 語言實現數據查詢,所有Hive 的數據都存儲在Hadoop 兼容的文件系統(例如,Amazon S3、HDFS)中。Hive 在加載數據過程中不會對數據進行任何的修改,只是將數據移動到HDFS 中hive 設定的目錄下,因此,Hive 不支持對數據的改寫和添加,所有的數據都是在加載的時候確定的。hive 的設計特點如下。
- 支持創建索引,優化數據查詢。
- 不同的存儲類型,例如,純文本文件、HBase 中的文件。?
- 將元數據保存在關系數據庫中,大大減少了在查詢過程中執行語義檢查的時間。
- 可以直接使用存儲在Hadoop 文件系統中的數據。
- 內置大量用戶函數UDF 來操作時間、字符串和其他的數據挖掘工具,支持用戶擴展UDF 函數來完成內置函數無法實現的操作。
- 類SQL 的查詢方式,將SQL 查詢轉換為MapReduce 的job 在Hadoop集群上執行。
?
?
3、Hive數據存儲模型的四類數據模型—Table、External Table、Partition、Bucket
? ? ? ? ?Hive中包含以下四類數據模型:表(Table)、外部表(External Table)、分區(Partition)、桶(Bucket)。?
- (1)、Table:hive中的Table和數據庫中的Table在概念上是類似的。在hive中每一個Table都有一個相應的目錄存儲數據。?
? ? ? ? ?類似與傳統數據庫中的Table,每一個Table在Hive中都有一個相應的目錄來存儲數據。例如:一個表zz,它在HDFS中的路徑為:/wh/zz,其中wh是在hive-site.xml中由$指定的數據倉庫的目錄,所有的Table數據(不含External?Table)都保存在這個目錄中。 - (2)、External Table:外部表是一個已經存儲在HDFS中,并具有一定格式的數據。使用外部表意味著hive表內的數據不在hive的數據倉庫內,它會到倉庫目錄以外的位置訪問數據。
? ? ? ? ?外部表和普通表的操作不同,創建普通表的操作分為兩個步驟,即表的創建步驟和數據裝入步驟(可以分開也可以同時完成)。在數據的裝入過程中,實際數據會移動到數據表所在的hive數據倉庫文件目錄中,其后對該數據表的訪問將直接訪問裝入所對應文件目錄中的數據。刪除表時,該表的元數據和在數據倉庫目錄下的實際數據將同時刪除。?
? ? ? ? ?外部表的創建只有一個步驟,創建表和裝人數據同時完成。外部表的實際數據存儲在創建語句I。OCATION參數指定的外部HDFS文件路徑中,但這個數據并不會移動到hive數據倉庫的文件目錄中。刪除外部表時,僅刪除其元數據,保存在外部HDFS文件目錄中的數據不會被刪除。
? ? ? ? ?ExternalTable指向已存在HDFS中的數據,可創建Partition。和Table在元數據組織結構相同,在實際存儲上有較大差異。Table創建和數據加載過程,可以用統一語句實現,實際數據被轉移到數據倉庫目錄中,之后對數據的訪問將會直接在數據倉庫的目錄中完成。刪除表時,表中的數據和元數據都會刪除。ExternalTable只有一個過程,因為加載數據和創建表是同時完成。世界數據是存儲在Location后面指定的HDFS路徑中的,并不會移動到數據倉庫中。 - (3)、Partition:分區對應于數據庫中的分區列的密集索引,但是hive中分區的組織方式和數據庫中的很不相同。在hive中,表中的一個分區對應于表下的一個目錄,所有的分區的數據都存儲在對應的目錄中。?
? ? ? ? ?類似于傳統數據庫中劃分列的索引。在Hive中,表中的一個Partition對應于表下的一個目錄,所有的Partition數據都存儲在對應的目錄中。例如:zz表中包含ds和city兩個Partition,則對應于ds=20140214,city=beijing的HDFS子目錄為:/wh/zz/ds=20140214/city=Beijing; - (4)、Bucket:桶對指定列進行哈希(hash)計算,會根據哈希值切分數據,目的是為了并行,每一個桶對應一個文件。
? ? ? ? ?對指定列計算的hash,根據hash值切分數據,目的是為了便于并行,每一個Buckets對應一個文件。將user列分數至32個Bucket上,首先對user列的值計算hash,比如,對應hash=0的HDFS目錄為:/wh/zz/ds=20140214/city=Beijing/part-00000;對應hash=20的,目錄為:/wh/zz/ds=20140214/city=Beijing/part-00020。
?
4、Hive數據管理的三個使用層次:元數據存儲、數據存儲和數據交換
? ? ? ?作為一個數據倉庫,Hive的數據管理按照使用層次可以從元數據存儲、數據存儲和數據交換三個方面介紹。Hive的數據存儲在HDFS中,大部分的查詢由MapReduce完成。
4.1、元數據存儲
Hive將元數據存儲在RDBMS中,有三種方式可以連接到數據庫:
- 內嵌模式:元數據保持在內嵌數據庫的Derby,一般用于單元測試,只允許一個會話連接
- 多用戶模式:在本地安裝Mysql,把元數據放到Mysql內
- 遠程模式:元數據放置在遠程的Mysql數據庫
?
4.2、數據存儲
- 首先,Hive沒有專門的數據存儲格式,也沒有為數據建立索引,用于可以非常自由的組織Hive中的表,只需要在創建表的時候告訴Hive數據中的列分隔符和行分隔符,這就可以解析數據了。
- 其次,Hive中所有的數據都存儲在HDFS中,Hive中包含4中數據模型:Tabel、ExternalTable、Partition、Bucket。
?
4.3、數據交換
- 用戶接口:包括客戶端、Web界面和數據庫接口
- 元數據存儲:通常是存儲在關系數據庫中的,如Mysql,Derby等
- Hadoop:用HDFS進行存儲,利用MapReduce進行計算。
- 關鍵點:Hive將元數據存儲在數據庫中,如Mysql、Derby中。Hive中的元數據包括表的名字、表的列和分區及其屬性、表的屬性(是否為外部表)、表數據所在的目錄等。
?
?
?
Hive數據管理的下載
官網下載:https://hive.apache.org/downloads.html
?
?
Hive數據管理的案例應用
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
?
?
?
總結
以上是生活随笔為你收集整理的BigData之Hive:Hive数据管理的简介、下载、案例应用之详细攻略的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: DL:关于深度学习常用数据集中训练好的权
- 下一篇: Paper:2020年3月30日何恺明团