什么是數(shù)據(jù)倉庫?
面向主題的,集成的,相對穩(wěn)定的,反映歷史變化的數(shù)據(jù)集合,用于支持管理決策。

數(shù)據(jù)倉庫,英文名稱Data Warehouse,簡寫為DW。數(shù)據(jù)倉庫顧名思義,是一個(gè)很大的數(shù)據(jù)存儲集合,出于企業(yè)的分析性報(bào)告和決策支持目的而創(chuàng)建,對多樣的業(yè)務(wù)數(shù)據(jù)進(jìn)行篩選與整合。它為企業(yè)提供一定的BI(商業(yè)智能)能力,指導(dǎo)業(yè)務(wù)流程改進(jìn)、監(jiān)視時(shí)間、成本、質(zhì)量以及控制。

數(shù)據(jù)倉庫都有什么特點(diǎn)呢?
1.主題性
不同于傳統(tǒng)數(shù)據(jù)庫對應(yīng)于某一個(gè)或多個(gè)項(xiàng)目,數(shù)據(jù)倉庫根據(jù)使用者實(shí)際需求,將不同數(shù)據(jù)源的數(shù)據(jù)在一個(gè)較高的抽象層次上做整合,所有數(shù)據(jù)都圍繞某一主題來組織。
這里的主題怎么來理解呢?比如對于滴滴出行,“司機(jī)行為分析”就是一個(gè)主題,對于鏈家網(wǎng),“成交分析”就是一個(gè)主題。
2.集成性
數(shù)據(jù)倉庫中存儲的數(shù)據(jù)是來源于多個(gè)數(shù)據(jù)源的集成,原始數(shù)據(jù)來自不同的數(shù)據(jù)源,存儲方式各不相同。要整合成為最終的數(shù)據(jù)集合,需要從數(shù)據(jù)源經(jīng)過一系列抽取、清洗、轉(zhuǎn)換的過程。
3.穩(wěn)定性
數(shù)據(jù)倉庫中保存的數(shù)據(jù)是一系列歷史快照,不允許被修改。用戶只能通過分析工具進(jìn)行查詢和分析。
4.時(shí)變性
數(shù)據(jù)倉庫會定期接收新的集成數(shù)據(jù),反應(yīng)出最新的數(shù)據(jù)變化。這和特點(diǎn)并不矛盾。


什么是ETL?
ETL的英文全稱是 Extract-Transform-Load 的縮寫,用來描述將數(shù)據(jù)從來源遷移到目標(biāo)的幾個(gè)過程:
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ù)加載到目標(biāo)處,比如數(shù)據(jù)倉庫。
Hadoop?
Hadoop是一個(gè)由Apache基金會所開發(fā)的分布式系統(tǒng)基礎(chǔ)架構(gòu)。
Hadoop的框架最核心的設(shè)計(jì)就是:HDFS和MapReduce。HDFS為海量的數(shù)據(jù)提供了存儲,而MapReduce則為海量的數(shù)據(jù)提供了計(jì)算。
- MapReduce:它是一種并行編程模型在大型集群普通硬件可用于處理大型結(jié)構(gòu)化,半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)。
- HDFS:Hadoop分布式文件系統(tǒng)是Hadoop的框架的一部分,用于存儲和處理數(shù)據(jù)集。它提供了一個(gè)容錯文件系統(tǒng)在普通硬件上運(yùn)行。
Hadoop生態(tài)系統(tǒng)包含了用于協(xié)助Hadoop的不同的子項(xiàng)目(工具)模塊,如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é)點(diǎn)。
2.MapReduce
一種針對海量數(shù)據(jù)的并行計(jì)算模型,可以簡單理解為對多個(gè)數(shù)據(jù)分片的數(shù)據(jù)轉(zhuǎn)換和合并。
Hive的主要優(yōu)勢是:免費(fèi)!
Hive是什么
Hive是一個(gè)基于Hadoop的數(shù)據(jù)倉庫基礎(chǔ)工具,在Hadoop中用來處理結(jié)構(gòu)化數(shù)據(jù),可以對存儲在HDFS上的文件數(shù)據(jù)集進(jìn)行查詢和分析處理。它架構(gòu)在Hadoop之上,Hive對外提供了類似于SQL語言的查詢語言 HiveQL,在做查詢時(shí)將HQL語句轉(zhuǎn)換成MapReduce任務(wù),在Hadoop層進(jìn)行執(zhí)行。
最初,Hive是由Facebook開發(fā),后來由Apache軟件基金會開發(fā),并作為進(jìn)一步將它作為名義下Apache Hive為一個(gè)開源項(xiàng)目。它用在好多不同的公司。例如,亞馬遜使用它在 Amazon Elastic MapReduce。
Hive 不是
* 一個(gè)關(guān)系數(shù)據(jù)庫
* 一個(gè)設(shè)計(jì)用于聯(lián)機(jī)事務(wù)處理(OLTP)
* 實(shí)時(shí)查詢和行級更新的語言
Hiver特點(diǎn)
* 它存儲架構(gòu)在一個(gè)數(shù)據(jù)庫中并處理數(shù)據(jù)到HDFS。
* 它是專為OLAP設(shè)計(jì)。
* 它提供SQL類型語言查詢叫HiveQL或HQL。
* 它是熟知,快速,可擴(kuò)展和可擴(kuò)展的。
Hive架構(gòu)
Hive的組件總體上可以分為以下幾個(gè)部分:用戶接口(UI)、驅(qū)動、編譯器、元數(shù)據(jù)(Hive系統(tǒng)參數(shù)數(shù)據(jù))和執(zhí)行引擎。
- 對外的接口UI包括以下幾種:命令行CLI,Web界面、JDBC/ODBC接口;
- 驅(qū)動:接收用戶提交的查詢HQL;
- 編譯器:解析查詢語句,執(zhí)行語法分析,生成執(zhí)行計(jì)劃;
- 元數(shù)據(jù)Metadata:存放系統(tǒng)的表、分區(qū)、列、列類型等所有信息,以及對應(yīng)的HDFS文件信息等;
- 執(zhí)行引擎:執(zhí)行執(zhí)行計(jì)劃,執(zhí)行計(jì)劃是一個(gè)有向無環(huán)圖,執(zhí)行引擎按照各個(gè)任務(wù)的依賴關(guān)系選擇執(zhí)行任務(wù)(Job)。
Hive編譯器將HQL代碼轉(zhuǎn)換成一組操作符(operator),操作符是Hive的最小操作單元,每個(gè)操作符代表了一種HDFS操作或者M(jìn)apReduce作業(yè)。
下面的組件圖描繪了Hive的結(jié)構(gòu):

流程如下:
1 Execute Query Hive接口,如命令行或Web UI發(fā)送查詢驅(qū)動程序(任何數(shù)據(jù)庫驅(qū)動程序,如JDBC,ODBC等)來執(zhí)行。
2 Get Plan 在驅(qū)動程序幫助下查詢編譯器,分析查詢檢查語法和查詢計(jì)劃或查詢的要求。
3 Get Metadata 編譯器發(fā)送元數(shù)據(jù)請求到Metastore(任何數(shù)據(jù)庫)。
4 Send Metadata Metastore發(fā)送元數(shù)據(jù),以編譯器的響應(yīng)。
5 Send Plan 編譯器檢查要求,并重新發(fā)送計(jì)劃給驅(qū)動程序。到此為止,查詢解析和編譯完成。
6 Execute Plan 驅(qū)動程序發(fā)送的執(zhí)行計(jì)劃到執(zhí)行引擎。
7 Execute Job 在內(nèi)部,執(zhí)行作業(yè)的過程是一個(gè)MapReduce工作。執(zhí)行引擎發(fā)送作業(yè)給JobTracker,在名稱節(jié)點(diǎn)并把它分配作業(yè)到TaskTracker,這是在數(shù)據(jù)節(jié)點(diǎn)。在這里,查詢執(zhí)行MapReduce工作。
7.1 Metadata Ops 與此同時(shí),在執(zhí)行時(shí),執(zhí)行引擎可以通過Metastore執(zhí)行元數(shù)據(jù)操作。
8 Fetch Result 執(zhí)行引擎接收來自數(shù)據(jù)節(jié)點(diǎn)的結(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ù),其性能遠(yuǎn)遠(yuǎn)高于Hive。
它使得企業(yè)可以專注于業(yè)務(wù),無需花費(fèi)大量精力管理技術(shù),因而可以更加快速地做出明智的決策,實(shí)現(xiàn) ROI(投資回報(bào)率) 最大化。
【參考】
https://blog.csdn.net/dajiangtai007/article/details/80238539
