什么是數(shù)據(jù)倉庫地回?
面向主題的,集成的俊鱼,相對穩(wěn)定的刻像,反映歷史變化的數(shù)據(jù)集合,用于支持管理決策并闲。
數(shù)據(jù)倉庫细睡,英文名稱Data Warehouse,簡寫為DW帝火。數(shù)據(jù)倉庫顧名思義溜徙,是一個很大的數(shù)據(jù)存儲集合,出于企業(yè)的分析性報告和決策支持目的而創(chuàng)建犀填,對多樣的業(yè)務(wù)數(shù)據(jù)進行篩選與整合蠢壹。它為企業(yè)提供一定的BI(商業(yè)智能)能力,指導(dǎo)業(yè)務(wù)流程改進九巡、監(jiān)視時間知残、成本、質(zhì)量以及控制比庄。
數(shù)據(jù)倉庫都有什么特點呢?
1.主題性
不同于傳統(tǒng)數(shù)據(jù)庫對應(yīng)于某一個或多個項目神凑,數(shù)據(jù)倉庫根據(jù)使用者實際需求净神,將不同數(shù)據(jù)源的數(shù)據(jù)在一個較高的抽象層次上做整合,所有數(shù)據(jù)都圍繞某一主題來組織溉委。
這里的主題怎么來理解呢鹃唯?比如對于滴滴出行,“司機行為分析”就是一個主題瓣喊,對于鏈家網(wǎng)坡慌,“成交分析”就是一個主題。
2.集成性
數(shù)據(jù)倉庫中存儲的數(shù)據(jù)是來源于多個數(shù)據(jù)源的集成藻三,原始數(shù)據(jù)來自不同的數(shù)據(jù)源洪橘,存儲方式各不相同跪者。要整合成為最終的數(shù)據(jù)集合,需要從數(shù)據(jù)源經(jīng)過一系列抽取熄求、清洗渣玲、轉(zhuǎn)換的過程。
3.穩(wěn)定性
數(shù)據(jù)倉庫中保存的數(shù)據(jù)是一系列歷史快照弟晚,不允許被修改忘衍。用戶只能通過分析工具進行查詢和分析。
4.時變性
數(shù)據(jù)倉庫會定期接收新的集成數(shù)據(jù)卿城,反應(yīng)出最新的數(shù)據(jù)變化枚钓。這和特點并不矛盾。
什么是ETL藻雪?
ETL的英文全稱是 Extract-Transform-Load 的縮寫秘噪,用來描述將數(shù)據(jù)從來源遷移到目標的幾個過程:
1.Extract狸吞,數(shù)據(jù)抽取勉耀,也就是把數(shù)據(jù)從數(shù)據(jù)源讀出來。
2.Transform蹋偏,數(shù)據(jù)轉(zhuǎn)換便斥,把原始數(shù)據(jù)轉(zhuǎn)換成期望的格式和維度。如果用在數(shù)據(jù)倉庫的場景下威始,Transform也包含數(shù)據(jù)清洗枢纠,清洗掉噪音數(shù)據(jù)。
3.Load 數(shù)據(jù)加載黎棠,把處理后的數(shù)據(jù)加載到目標處晋渺,比如數(shù)據(jù)倉庫。Hadoop?
Hadoop是一個由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)脓斩。
Hadoop的框架最核心的設(shè)計就是:HDFS和MapReduce木西。HDFS為海量的數(shù)據(jù)提供了存儲,而MapReduce則為海量的數(shù)據(jù)提供了計算随静。
- MapReduce:它是一種并行編程模型在大型集群普通硬件可用于處理大型結(jié)構(gòu)化八千,半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。
- HDFS:Hadoop分布式文件系統(tǒng)是Hadoop的框架的一部分燎猛,用于存儲和處理數(shù)據(jù)集恋捆。它提供了一個容錯文件系統(tǒng)在普通硬件上運行。
Hadoop生態(tài)系統(tǒng)包含了用于協(xié)助Hadoop的不同的子項目(工具)模塊重绷,如Sqoop, Pig 和 Hive沸停。
- Sqoop: 它是用來在HDFS和RDBMS之間來回導(dǎo)入和導(dǎo)出數(shù)據(jù)。
- Pig: 它是用于開發(fā)MapReduce操作的腳本程序語言的平臺昭卓。
- Hive: 它是用來開發(fā)SQL類型腳本星立,用于做MapReduce操作的平臺爽茴。
Pig是接近腳本方式去描述MapReduce,Hive則用的是SQL绰垂。
注:有多種方法來執(zhí)行MapReduce作業(yè):
- 傳統(tǒng)的方法是使用Java MapReduce程序結(jié)構(gòu)化室奏,半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。
- 針對MapReduce的腳本的方式劲装,使用Pig來處理結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)胧沫。
- Hive查詢語言(HiveQL或HQL)采用Hive為MapReduce的處理結(jié)構(gòu)化數(shù)據(jù)。
Hive占业?
1.HDFS
Hadoop的分布式文件系統(tǒng)绒怨,在這里作為數(shù)據(jù)倉庫的存儲層。圖中的Data Node就是HDFS的眾多工作節(jié)點谦疾。
2.MapReduce
一種針對海量數(shù)據(jù)的并行計算模型南蹂,可以簡單理解為對多個數(shù)據(jù)分片的數(shù)據(jù)轉(zhuǎn)換和合并。
Hive的主要優(yōu)勢是:免費念恍!
Hive是什么
Hive是一個基于Hadoop的數(shù)據(jù)倉庫基礎(chǔ)工具六剥,在Hadoop中用來處理結(jié)構(gòu)化數(shù)據(jù),可以對存儲在HDFS上的文件數(shù)據(jù)集進行查詢和分析處理峰伙。它架構(gòu)在Hadoop之上疗疟,Hive對外提供了類似于SQL語言的查詢語言 HiveQL,在做查詢時將HQL語句轉(zhuǎn)換成MapReduce任務(wù)瞳氓,在Hadoop層進行執(zhí)行策彤。
最初,Hive是由Facebook開發(fā)匣摘,后來由Apache軟件基金會開發(fā)店诗,并作為進一步將它作為名義下Apache Hive為一個開源項目。它用在好多不同的公司音榜。例如庞瘸,亞馬遜使用它在 Amazon Elastic MapReduce。
Hive 不是
* 一個關(guān)系數(shù)據(jù)庫
* 一個設(shè)計用于聯(lián)機事務(wù)處理(OLTP)
* 實時查詢和行級更新的語言
Hiver特點
* 它存儲架構(gòu)在一個數(shù)據(jù)庫中并處理數(shù)據(jù)到HDFS囊咏。
* 它是專為OLAP設(shè)計恕洲。
* 它提供SQL類型語言查詢叫HiveQL或HQL。
* 它是熟知梅割,快速霜第,可擴展和可擴展的。
Hive架構(gòu)
Hive的組件總體上可以分為以下幾個部分:用戶接口(UI)户辞、驅(qū)動泌类、編譯器、元數(shù)據(jù)(Hive系統(tǒng)參數(shù)數(shù)據(jù))和執(zhí)行引擎。
- 對外的接口UI包括以下幾種:命令行CLI刃榨,Web界面弹砚、JDBC/ODBC接口;
- 驅(qū)動:接收用戶提交的查詢HQL枢希;
- 編譯器:解析查詢語句桌吃,執(zhí)行語法分析,生成執(zhí)行計劃苞轿;
- 元數(shù)據(jù)Metadata:存放系統(tǒng)的表茅诱、分區(qū)、列搬卒、列類型等所有信息瑟俭,以及對應(yīng)的HDFS文件信息等;
- 執(zhí)行引擎:執(zhí)行執(zhí)行計劃契邀,執(zhí)行計劃是一個有向無環(huán)圖摆寄,執(zhí)行引擎按照各個任務(wù)的依賴關(guān)系選擇執(zhí)行任務(wù)(Job)。
Hive編譯器將HQL代碼轉(zhuǎn)換成一組操作符(operator)坯门,操作符是Hive的最小操作單元微饥,每個操作符代表了一種HDFS操作或者MapReduce作業(yè)。
下面的組件圖描繪了Hive的結(jié)構(gòu):
流程如下:
1 Execute Query Hive接口田盈,如命令行或Web UI發(fā)送查詢驅(qū)動程序(任何數(shù)據(jù)庫驅(qū)動程序畜号,如JDBC缴阎,ODBC等)來執(zhí)行允瞧。
2 Get Plan 在驅(qū)動程序幫助下查詢編譯器,分析查詢檢查語法和查詢計劃或查詢的要求蛮拔。
3 Get Metadata 編譯器發(fā)送元數(shù)據(jù)請求到Metastore(任何數(shù)據(jù)庫)述暂。
4 Send Metadata Metastore發(fā)送元數(shù)據(jù),以編譯器的響應(yīng)建炫。
5 Send Plan 編譯器檢查要求畦韭,并重新發(fā)送計劃給驅(qū)動程序。到此為止肛跌,查詢解析和編譯完成艺配。
6 Execute Plan 驅(qū)動程序發(fā)送的執(zhí)行計劃到執(zhí)行引擎。
7 Execute Job 在內(nèi)部衍慎,執(zhí)行作業(yè)的過程是一個MapReduce工作转唉。執(zhí)行引擎發(fā)送作業(yè)給JobTracker,在名稱節(jié)點并把它分配作業(yè)到TaskTracker稳捆,這是在數(shù)據(jù)節(jié)點赠法。在這里,查詢執(zhí)行MapReduce工作乔夯。
7.1 Metadata Ops 與此同時砖织,在執(zhí)行時款侵,執(zhí)行引擎可以通過Metastore執(zhí)行元數(shù)據(jù)操作。
8 Fetch Result 執(zhí)行引擎接收來自數(shù)據(jù)節(jié)點的結(jié)果侧纯。
9 Send Results 執(zhí)行引擎發(fā)送這些結(jié)果值給驅(qū)動程序新锈。
10 Send Results 驅(qū)動程序?qū)⒔Y(jié)果發(fā)送給Hive接口。
Teradata眶熬?
Teradata數(shù)據(jù)倉庫配備性能最高壕鹉、最可靠的大規(guī)模并行處理 (MPP) 平臺,能夠高速處理海量數(shù)據(jù)聋涨,其性能遠遠高于Hive晾浴。
它使得企業(yè)可以專注于業(yè)務(wù),無需花費大量精力管理技術(shù)牍白,因而可以更加快速地做出明智的決策脊凰,實現(xiàn) ROI(投資回報率) 最大化。
【參考】
https://blog.csdn.net/dajiangtai007/article/details/80238539