大數(shù)據(jù)之Hive
一.Hive基本概念
1.什么是Hive
- Hive是Facebook開源用于處理 海量 結(jié)構(gòu)化 日志的數(shù)據(jù)統(tǒng)計
- Hive是基于Hadoop的一個數(shù)據(jù)倉庫工具,將結(jié)構(gòu)化數(shù)據(jù)文件映射成一張表第租,并提供類SQL語句
- 本質(zhì)是HQL轉(zhuǎn)換為MapReduce程序
- 【1】數(shù)據(jù)存儲在HDFS
- 【2】分析數(shù)據(jù)底層的默認實現(xiàn)是MapReduce
- 【3】執(zhí)行程序在Yarn上
- Hive區(qū)別于大數(shù)據(jù)中其他計算框架最大的不同是,它是單機的丐吓,其他的是分布式的趟据,因為它的存儲,運算都是基于Hadoop汹碱,相當于一個客戶端
2.Hive優(yōu)缺點
- 優(yōu)點
- 【1】實現(xiàn)采用類SQL語句,開發(fā)速度快色难,學習成本低
- 【2】Hive用于 大數(shù)據(jù)量 離線 分析等缀,適合實時性要求不高的場合
- 【3】支持用戶自定義函數(shù)
- 缺點
- 【1】HQL表達能力有限(迭代運算無法表達;數(shù)據(jù)挖掘方面不擅長)
- 【2】執(zhí)行效率低(基于MapReduce笤妙,執(zhí)行延遲高;調(diào)優(yōu)粒度粗)
3.Hive架構(gòu)原理
- 用戶接口:Client CLI(hive shell)股毫、JDBC/ODBC(java 訪問 hive)召衔、WEBUI(瀏覽器訪問 hive)
- 元數(shù)據(jù)(Meta store):數(shù)據(jù)表信息及數(shù)據(jù)實際存儲信息(默認存儲在自帶的 derby 數(shù)據(jù)庫中,推薦使用 MySQL 存儲 Metastore )
- 驅(qū)動器:Driver
- 【1】SQL解析器:將 SQL 字符串轉(zhuǎn)換成抽象語法樹 AST苍凛,這一步一般都用第三方工具庫完成醇蝴,比如 antlr;對 AST 進行語法分析悠栓,比如表是否存在、字段是否存在笙瑟、SQL 語義是否有誤
- 【2】編譯器:將 AST 編譯生成邏輯執(zhí)行計劃
- 【3】優(yōu)化器:對邏輯執(zhí)行計劃進行優(yōu)化
- 【4】執(zhí)行器:把邏輯執(zhí)行計劃轉(zhuǎn)換成可以運行的物理計劃(如 MR/Spark)
4.Hive與數(shù)據(jù)庫比較
- 查詢語言(HQL SQL)
- 數(shù)據(jù)存儲位置(Hive存儲在HDFS上 癞志,數(shù)據(jù)庫一般在塊設備或本地系統(tǒng))
- 數(shù)據(jù)更新(Hive不適合數(shù)據(jù)修改,數(shù)據(jù)庫更注重與用戶的交互)
- 可擴展性(Hive可擴展性是和 Hadoop 的可擴展性是一致的 ,數(shù)據(jù)庫擴展能力有限)
- 執(zhí)行延遲(Hive適合大數(shù)據(jù)量的分析师溅,執(zhí)行延遲高盾舌,對于數(shù)據(jù)量較少的場景蘸鲸,數(shù)據(jù)庫的優(yōu)勢更高)