-
hive
(數據倉庫工具)
鎖定
hive簡介
hive是基於Hadoop構建的一套數據倉庫分析系統,它提供了豐富的SQL查詢方式來分析存儲在Hadoop分佈式文件系統中的數據:可以將結構化的數據文件映射為一張數據庫表,並提供完整的SQL查詢功能;可以將SQL語句轉換為MapReduce任務運行,通過自己的SQL查詢分析需要的內容,這套SQL簡稱Hive SQL,使不熟悉mapreduce的用户可以很方便地利用SQL語言查詢、彙總和分析數據。而mapreduce開發人員可以把自己寫的mapper和reducer作為插件來支持hive做更復雜的數據分析。它與關係型數據庫的SQL略有不同,但支持了絕大多數的語句如DDL、DML以及常見的聚合函數、連接查詢、條件查詢。它還提供了一系列的工具進行數據提取轉化加載,用來存儲、查詢和分析存儲在Hadoop中的大規模數據集,並支持UDF(User-Defined Function)、UDAF(User-Defined AggregateFunction)和UDTF(User-Defined Table-Generating Function),也可以實現對map和reduce函數的定製,為數據操作提供了良好的伸縮性和可擴展性。
[2]
hive不適合用於聯機(online)事務處理,也不提供實時查詢功能。它最適合應用在基於大量不可變數據的批處理作業。hive的特點包括:可伸縮(在Hadoop的集羣上動態添加設備)、可擴展、容錯、輸入格式的鬆散耦合。
[2]
hive適用場景
hive 構建在基於靜態批處理的Hadoop 之上,Hadoop 通常都有較高的延遲並且在作業提交和調度的時候需要大量的開銷。因此,hive 並不能夠在大規模數據集上實現低延遲快速的查詢,例如,hive 在幾百MB 的數據集上執行查詢一般有分鐘級的時間延遲。
[3]
因此,hive 並不適合那些需要高實時性的應用,例如,聯機事務處理(OLTP)。hive 查詢操作過程嚴格遵守Hadoop MapReduce 的作業執行模型,hive 將用户的hiveSQL 語句通過解釋器轉換為MapReduce 作業提交到Hadoop 集羣上,Hadoop 監控作業執行過程,然後返回作業執行結果給用户。hive 並非為聯機事務處理而設計,hive 並不提供實時的查詢和基於行級的數據更新操作。hive 的最佳使用場合是大數據集的批處理作業,例如,網絡日誌分析。
[4]
hive設計特徵
hive 是一種底層封裝了Hadoop 的數據倉庫處理工具,使用類SQL 的hiveSQL 語言實現數據查詢,所有hive 的數據都存儲在Hadoop 兼容的文件系統(例如,Amazon S3、HDFS)中。hive 在加載數據過程中不會對數據進行任何的修改,只是將數據移動到HDFS 中hive 設定的目錄下,因此,hive 不支持對數據的改寫和添加,所有的數據都是在加載的時候確定的。hive 的設計特點如下。
[3]
hive體系結構
用户接口
用户接口主要有三個:CLI,Client 和 WUI。其中最常用的是 Cli,Cli 啓動的時候,會同時啓動一個 hive 副本。Client 是 hive 的客户端,用户連接至 hive Server。在啓動 Client 模式的時候,需要指出 hive Server 所在節點,並且在該節點啓動 hive Server。 WUI 是通過瀏覽器訪問 hive。
[4]
元數據存儲
解釋器、編譯器、優化器、執行器
Hadoop
hive數據模型
外部表和普通表的操作不同,創建普通表的操作分為兩個步驟,即表的創建步驟和數據裝入步驟(可以分開也可以同時完成)。在數據的裝入過程中,實際數據會移動到數據表所在的hive數據倉庫文件目錄中,其後對該數據表的訪問將直接訪問裝入所對應文件目錄中的數據。刪除表時,該表的元數據和在數據倉庫目錄下的實際數據將同時刪除。
[5]