大數(shù)據(jù)之Hive
一.Hive基本概念
1.什么是Hive
- Hive是Facebook開(kāi)源用于處理 海量 結(jié)構(gòu)化 日志的數(shù)據(jù)統(tǒng)計(jì)
- Hive是基于Hadoop的一個(gè)數(shù)據(jù)倉(cāng)庫(kù)工具,將結(jié)構(gòu)化數(shù)據(jù)文件映射成一張表,并提供類SQL語(yǔ)句
- 本質(zhì)是HQL轉(zhuǎn)換為MapReduce程序
- 【1】數(shù)據(jù)存儲(chǔ)在HDFS
- 【2】分析數(shù)據(jù)底層的默認(rèn)實(shí)現(xiàn)是MapReduce
- 【3】執(zhí)行程序在Yarn上
- Hive區(qū)別于大數(shù)據(jù)中其他計(jì)算框架最大的不同是,它是單機(jī)的,其他的是分布式的,因?yàn)樗拇鎯?chǔ),運(yùn)算都是基于Hadoop,相當(dāng)于一個(gè)客戶端
2.Hive優(yōu)缺點(diǎn)
- 優(yōu)點(diǎn)
- 【1】實(shí)現(xiàn)采用類SQL語(yǔ)句,開(kāi)發(fā)速度快,學(xué)習(xí)成本低
- 【2】Hive用于 大數(shù)據(jù)量 離線 分析,適合實(shí)時(shí)性要求不高的場(chǎng)合
- 【3】支持用戶自定義函數(shù)
- 缺點(diǎn)
- 【1】HQL表達(dá)能力有限(迭代運(yùn)算無(wú)法表達(dá);數(shù)據(jù)挖掘方面不擅長(zhǎng))
- 【2】執(zhí)行效率低(基于MapReduce,執(zhí)行延遲高;調(diào)優(yōu)粒度粗)
3.Hive架構(gòu)原理

Hive架構(gòu)原理.jpg
- 用戶接口:Client CLI(hive shell)、JDBC/ODBC(java 訪問(wèn) hive)、WEBUI(瀏覽器訪問(wèn) hive)
- 元數(shù)據(jù)(Meta store):數(shù)據(jù)表信息及數(shù)據(jù)實(shí)際存儲(chǔ)信息(默認(rèn)存儲(chǔ)在自帶的 derby 數(shù)據(jù)庫(kù)中,推薦使用 MySQL 存儲(chǔ) Metastore )
- 驅(qū)動(dòng)器:Driver
- 【1】SQL解析器:將 SQL 字符串轉(zhuǎn)換成抽象語(yǔ)法樹(shù) AST,這一步一般都用第三方工具庫(kù)完成,比如 antlr;對(duì) AST 進(jìn)行語(yǔ)法分析,比如表是否存在、字段是否存在、SQL 語(yǔ)義是否有誤
- 【2】編譯器:將 AST 編譯生成邏輯執(zhí)行計(jì)劃
- 【3】?jī)?yōu)化器:對(duì)邏輯執(zhí)行計(jì)劃進(jìn)行優(yōu)化
- 【4】執(zhí)行器:把邏輯執(zhí)行計(jì)劃轉(zhuǎn)換成可以運(yùn)行的物理計(jì)劃(如 MR/Spark)
4.Hive與數(shù)據(jù)庫(kù)比較
- 查詢語(yǔ)言(HQL SQL)
- 數(shù)據(jù)存儲(chǔ)位置(Hive存儲(chǔ)在HDFS上 ,數(shù)據(jù)庫(kù)一般在塊設(shè)備或本地系統(tǒng))
- 數(shù)據(jù)更新(Hive不適合數(shù)據(jù)修改,數(shù)據(jù)庫(kù)更注重與用戶的交互)
- 可擴(kuò)展性(Hive可擴(kuò)展性是和 Hadoop 的可擴(kuò)展性是一致的 ,數(shù)據(jù)庫(kù)擴(kuò)展能力有限)
- 執(zhí)行延遲(Hive適合大數(shù)據(jù)量的分析,執(zhí)行延遲高,對(duì)于數(shù)據(jù)量較少的場(chǎng)景,數(shù)據(jù)庫(kù)的優(yōu)勢(shì)更高)