Hive 是基於Hadoop平臺下的一個數據倉庫工具,它能用於數據集成、ad-hoc queries、大數據分析. 它的本質就是將相似於熟悉的SQL的語句轉換爲MapReduce程序, 這種語句叫HiveQL.mysql
Apache HiveTM 有如下特色:web
同時,這個語言也容許熟悉 MapReduce 開發者的開發自定義的 mapper 和 reducer 來處理內建的 mapper 和 reducer 沒法完成的複雜的分析工做。Hive 的設計不是用於在線事物處理,也不提供實時查詢或低層次更新.他最適用於不可變的大數據集的批量任務 (like web logs).sql
Hive的基本構架數據庫
Hive 的結構能夠分爲如下幾部分:apache
一、 用戶接口主要有三個:CLI,Client和 WUI。其中最經常使用的是 CLI,Cli 啓動的時候,會同時啓動一個 Hive 副本。Client 是 Hive 的客戶端,用戶鏈接至 Hive Server。在啓動 Client 模式的時候,須要指出 Hive Server 所在節點,而且在該節點啓動 Hive Server。 WUI 是經過瀏覽器訪問 Hive。瀏覽器
二、 Hive 將元數據存儲在數據庫中,如 mysql、derby。Hive 中的元數據包括表的名字,表的列和分區及其屬性,表的屬性(是否爲外部表等),表的數據所在目錄等。app
三、 解釋器、編譯器、優化器完成 HQL 查詢語句從詞法分析、語法分析、編譯、優化以及查詢計劃的生成。生成的查詢計劃存儲在 HDFS 中,並在隨後有 MapReduce 調用執行。工具
四、Hive 的數據存儲在 HDFS 中,大部分的查詢由 MapReduce 完成(包含 * 的查詢,好比 select * from tbl 不會生成 MapRedcue 任務)。oop