CLI(hive shell)、JDBC/ODBC(java訪問hive)、WEBUI(瀏覽器訪問hive)
2.元數據:Metastore
元數據包括:表名、表所屬的數據庫(默認是default)、表的擁有者、列/分區字段、表的類型(是否是外部表)、表的數據所在目錄等;
默認存儲在自帶的derby數據庫中,推薦使用MySQL存儲Metastore
3.Hadoop
使用HDFS進行存儲,使用MapReduce進行計算。
4.驅動器:Driver
(1)解析器(SQL Parser):將SQL字符串轉換成抽象語法樹AST,這壹步壹般都用第三方工具庫完成,比如antlr;對AST進行語法分析,比如表是否存在、字段是否存在、SQL語義是否有誤。
(2)編譯器(Physical Plan):將AST編譯生成邏輯執行計劃。
(3)優化器(Query Optimizer):對邏輯執行計劃進行優化。
(4)執行器(Execution):把邏輯執行計劃轉換成可以運行的物理計劃。對於Hive來說,就是MR/Spark。
Hive通過給用戶提供的壹系列交互接口,接收到用戶的指令(SQL),使用自己的Driver,結合元數據(MetaStore),將這些指令翻譯成MapReduce,提交到Hadoop中執行,最後,將執行返回的結果輸出到用戶交互接口。
二:Hive的作用和優勢:
基於Hadoop的數據倉庫解決方案
Hive是基於Hadoop的壹個數據倉庫工具,將結構化的數據文件映射為數據庫表。
提供類sql的查詢語言HQL(Hive Query Language)
數據不放在hive上,放在HDFS上
由Facebook開源用於解決海量結構化日誌的數據統計。
執行程序運行在Yarn上
優勢:
提供了簡單的優化模型
HQL類sql語法,簡化MR開發
支持在HDFS和HBase上臨時查詢數據
支持用戶自定義函數,格式
成熟JDBC和ODBC驅動程序,用於ETL和BI
穩定可靠的批處理
支持在不同計算框架運行
缺點:
Hive的執行延遲比較高,因此Hive常用於數據分析,對實時性要求不高的場合
叠代式算法無法表達
數據挖掘方面不擅長
Hive自動生成的MapReduce作業,通常情況下不夠智能化
Hive調優比較困難,粒度較粗