- Hive產(chǎn)生背景
(1) 從開(kāi)發(fā)、測(cè)試、需求變更角度來(lái)看,MapReduce編程不方便
(2) 傳統(tǒng)關(guān)系型數(shù)據(jù)庫(kù)人員的需要
希望使用sql一樣的方式來(lái)處理分析大數(shù)據(jù)
(3) 如果數(shù)據(jù)在HDFS上芽世,如果想要使用SQL來(lái)處理,需要什么前提
文件映射成表格(結(jié)構(gòu)化) ==> schema: 元數(shù)據(jù)信息(metastore)
- Hive是什么
2.1 Hive官方網(wǎng)址
[hive.apache.org](http://hive.apache.org)
2.2 官網(wǎng)Hive介紹
The Apache Hive ? data warehouse software facilitates reading, writing, and managing large datasets residing in distributed storage using SQL
apache hive是數(shù)據(jù)倉(cāng)庫(kù)軟件
如果數(shù)據(jù)集是存儲(chǔ)在分布式存儲(chǔ)上
就可以使用sql來(lái)進(jìn)行讀诡壁、寫(xiě)和管理操作
Structure can be projected onto data already in storage
Structure能夠映射成已經(jīng)在存儲(chǔ)中的數(shù)據(jù)
2.3 Hive來(lái)源
(1) Facebook開(kāi)源的, 一開(kāi)始為解決海量結(jié)構(gòu)化日志的統(tǒng)計(jì)(pv or uv), 構(gòu)建在hadoop之上的數(shù)據(jù)倉(cāng)庫(kù)济瓢,通常用于離線處理
寫(xiě)完sql提交給hive之后,將sql翻譯成mapReduce作業(yè)提交到y(tǒng)arn上執(zhí)行
2.4 HQL
HIVE定義了SQL語(yǔ)言(HQL), 是一種類(lèi)SQL
2.5 為什么hive on mapreduce效率低
(1) MapReduce執(zhí)行效率就低
因?yàn)樗蠱ap Task和Reduce Task全部都是以進(jìn)程的方式執(zhí)行的妹卿,
需要啟動(dòng)進(jìn)程旺矾,銷(xiāo)毀進(jìn)程,即使能開(kāi)啟JVM重用夺克,也是用時(shí)開(kāi)啟箕宙,
結(jié)束時(shí)關(guān)閉,成本很高
(2) 怎樣解決
后來(lái)出現(xiàn)了Hive on spark 和Hive on Tez
2.6 Hive底層支持引擎
MapReduce
Spark
Tez
- Hive發(fā)展
3.1 2007.08 起源于Facebook
3.2 2013.05
0.11版本-Stringer phase 1
提出ORC
引入Hive Server2
3.3 2013.10
0.12版本-Stringer phase 2
ORC性能改進(jìn)
3.4 2014.04
0.13版本-Stringer phase 3
引入tez
加入Vectorized query engine
3.5 2014.11
0.14 Stinger.next計(jì)劃 phase 1
CBO(cost-based optimizer)
3.6 目前是3.11版本
- 為什么要使用Hive
4.1 SQL
使用方便懊直,可以用sql形式管理大數(shù)據(jù)集
4.2 Hadoop
Hive可以操作大規(guī)模數(shù)據(jù)集
Hive可以作為大數(shù)據(jù)執(zhí)行引擎來(lái)使用
4.3 MetaStore
Pig/Impala/presto/SparkSQL都是共享元數(shù)據(jù)的
也就是說(shuō)在SparkSQL創(chuàng)建的表在Pig/Impala/presto中都能用
- Hive和RDBMS的關(guān)系
(1) 實(shí)時(shí)性
RDBMS快,因?yàn)閔ive底層使用hadoop或Spark火鼻,速度慢
(2) 事務(wù)
Hive事務(wù)沒(méi)有多大作用
(3) 分布式
RDBMS集群規(guī)模小室囊,Hive支持的集群規(guī)模大
(4) 數(shù)據(jù)量
Hive處理數(shù)據(jù)量大,RDBMS差
(5) Hive QL 與 SQL之間的關(guān)系
除了語(yǔ)法類(lèi)似魁索,外觀像融撞,但是這兩個(gè)之間無(wú)任何聯(lián)系
- 常用分布式存儲(chǔ)
(1) HDFS
(2) Amazon S3
(3) OSS(其實(shí)是對(duì)S3的實(shí)現(xiàn))
-
Hive部署架構(gòu)圖
7.1 注意
Hive只是客戶(hù)端工具,即便集群上有多個(gè)Hive粗蔚,也不能說(shuō)是Hive集群
MetaStore一般是RDBMS
7.2 為什么需要兩個(gè)Mysql
因?yàn)橹挥幸粋€(gè)MySQL的話會(huì)出現(xiàn)單點(diǎn)故障問(wèn)題尝偎,也就是當(dāng)MySQL發(fā)生故障時(shí)
Hive無(wú)法獲取元數(shù)據(jù),也就無(wú)法與Hadoop上的文件關(guān)聯(lián)起來(lái)
所以在生產(chǎn)上部署兩個(gè)MySQL
7.3 為什么不使用Hive自帶的數(shù)據(jù)庫(kù)
Hive自帶的數(shù)據(jù)庫(kù)是Derby鹏控,但是其不支持多用戶(hù)操作
所以使用RDBMS作為MetaStore致扯,通常為MySQL