Hive是基於Hadoop的一個數據倉庫工具,使用hive的優點是學習成本低,可以通過類SQL語句快速實現簡單的MapReduce統計,不必開發專門的MapReduce應用,十分適合數據倉庫的統計分析(可加強具體了解統計目標和分析方法)。
可以將結構化的數據文件映射為一張數據庫表,並提供類SQL查詢功能。
還可以將 SQL 語句轉換為 MapReduce 任務進行運行,通過自己的 SQL 去 查詢分析需要的內容,這套 SQL 簡稱HQL。
Hive將元數據存儲在數據庫(RDBMS)中,
比如MySQL、Derby中。
Hive有三種模式連接到數據,其方式是:
單用戶模式,多用戶模式和遠程服務模式。
(也就是內嵌模式、本地模式、遠程模式)。
Hive特點:
1.可擴展
Hive可以自由的擴展集群的規模,一般情況下不需要重啟服務。
2. 延展性
Hive支持用戶自定義函數,用戶可以根據自己的需求來實現自己的函數。
3.容錯
良好的容錯性,節點出現問題SQL仍可完成執行。
Jobtracker是hadoop1.x中的組件,它的功能相當於hadoop2.x中的: Resourcemanager+AppMaster
TaskTracker 相當於: Nodemanager + yarnchild
從上圖可以看出,Hive體系結構大概分成一下四個部分:
1.用戶接口:
包括 CLI, Client, WUI:
CLI為shell命令行,Cli 啟動的時候,會同時啟動一個 Hive 副本。
Client 是 Hive 的客戶端,用戶連接至 Hive Server。在啟動 Client 模式的時候,需要指出 Hive Server 所在節點,並且在該節點啟動 Hive Server。
WUI 是通過瀏覽器訪問 Hive。
2.元數據存儲:通常是存儲在關系數據庫如 mysql, derby 中
3.解釋器、編譯器、優化器、執行器:
完成 HQL 查詢語句從詞法分析、語法分析、編譯、優化以及查詢計划的生成。
生成的查詢計划存儲在 HDFS 中,並在隨后有MapReduce 調用執行。
4.Hadoop:
Hive中數據用 HDFS 進行存儲,利用 MapReduce 進行計算。