文章目錄
1.Hive簡介
1.1Hive的特點
- Hive:由 Facebook 開源用於解決海量結構化日誌的數據統計。
- Hive 是基於 Hadoop 的一個數據倉庫工具,可以將結構化的數據文件映射爲一張表,並提供類 SQL 查詢功能。
本質是:將 HQL 轉化成 MapReduce 程序 - Hive 處理的數據存儲在 HDFS
- Hive 分析數據底層的默認實現是 MapReduce
- 執行程序運行在 Yarn 上
1.2HIve的優缺點
- 優點:
類似SQL語句,減少了學習成本
適合處理大數據,常用於實時性不高的數據分析
支持用戶自定義函數,用戶根據需求定義函數 - 缺點:
迭代式算法無法表達
數據挖掘方面不擅長
調優困難,粒度較粗
2.Hive內部原理
2.1Hive的架構
2.1.1Client(用戶接口)
- CLI(hive shell)、JDBC/ODBC(java 訪問 hive)、WEBUI(瀏覽器訪問 hive)
2.1.2Metastore(元數據)
- 元數據包括:表名、表所屬的數據庫(默認是 default)、表的擁有者、列/分區字段、表
的類型(是否是外部表)、表的數據所在目錄等;
2.1.3Driver(驅動器)
- 解析器(SQL Parser):將 SQL 字符串轉換成抽象語法樹 AST,這一步一般都用第三方工具庫完成,比如 antlr;對 AST 進行語法分析,比如表是否存在、字段是否存在、SQL 語義是否有誤。
- 編譯器(Physical Plan):將 AST 編譯生成邏輯執行計劃。
- 優化器(Query Optimizer):對邏輯執行計劃進行優化。
- 執行器(Execution):把邏輯執行計劃轉換成可以運行的物理計劃。對於 Hive 來
說,就是 MR/Spark。