今天繼續(xù)數(shù)據(jù)湖的話題舀武,主要是梳理一下數(shù)據(jù)湖的技術(shù)演化過程邻辉。在上一講中轿衔,我們了解了數(shù)據(jù)湖的演化歷史微驶,演化本身也是依賴于計算機(jī)技術(shù)的發(fā)展而前行的浪谴。
數(shù)據(jù)管理的早期:數(shù)據(jù)庫
在數(shù)據(jù)管理的早期,關(guān)系數(shù)據(jù)庫是公司用來收集因苹、存儲和分析數(shù)據(jù)的主要方法苟耻。關(guān)系數(shù)據(jù)庫,也稱為關(guān)系數(shù)據(jù)庫管理系統(tǒng) (RDBMS)容燕,為公司提供了一種使用結(jié)構(gòu)化查詢語言 (SQL) 存儲和分析有關(guān)其客戶的高度結(jié)構(gòu)化數(shù)據(jù)的方法梁呈。多年來,關(guān)系型數(shù)據(jù)庫足以滿足企業(yè)的需求:需要存儲的數(shù)據(jù)量較小蘸秘,關(guān)系型數(shù)據(jù)庫簡單可靠官卡。直到今天蝗茁,關(guān)系數(shù)據(jù)庫仍然是存儲不太大的高度結(jié)構(gòu)化數(shù)據(jù)的絕佳選擇。然而寻咒,數(shù)據(jù)的速度和規(guī)模即將爆發(fā)哮翘。
互聯(lián)網(wǎng)的興起和數(shù)據(jù)孤島
隨著互聯(lián)網(wǎng)的興起,公司發(fā)現(xiàn)自己充斥著客戶數(shù)據(jù)毛秘。要存儲所有這些數(shù)據(jù)饭寺,單個數(shù)據(jù)庫已不再足夠。公司通常會建立多個按業(yè)務(wù)線組織的數(shù)據(jù)庫來保存數(shù)據(jù)叫挟。隨著數(shù)據(jù)量的增長和增長艰匙,公司最終可能會擁有數(shù)十個具有不同用戶和目的的斷開連接的數(shù)據(jù)庫。有了更多更好的數(shù)據(jù)抹恳,公司能夠比以往任何時候都更準(zhǔn)確地定位客戶并管理他們的運(yùn)營员凝。但這導(dǎo)致了數(shù)據(jù)孤島:整個組織中分散的、分散的數(shù)據(jù)存儲奋献。由于無法集中和綜合他們的數(shù)據(jù)健霹,許多公司未能將其綜合成可操作的見解。這種痛苦導(dǎo)致了數(shù)據(jù)倉庫的興起瓶蚂。
數(shù)據(jù)倉庫的誕生是為了將公司的結(jié)構(gòu)化數(shù)據(jù)統(tǒng)一在一個屋檐下
如此多的數(shù)據(jù)存儲在不同的源系統(tǒng)中糖埋,公司需要一種方法來集成它們∏哉猓“360 度客戶視圖”的想法成為當(dāng)時的想法瞳别,數(shù)據(jù)倉庫的誕生就是為了滿足這一需求并將整個組織中的不同數(shù)據(jù)庫聯(lián)合起來。
數(shù)據(jù)倉庫作為一種技術(shù)出現(xiàn)钦听,它將組織的關(guān)系數(shù)據(jù)庫集合集中在一個保護(hù)傘下洒试,允許將數(shù)據(jù)作為一個整體進(jìn)行查詢和查看。起初朴上,數(shù)據(jù)倉庫通常運(yùn)行在來自 Teradata 和 Vertica 等供應(yīng)商的昂貴的垒棋、基于本地設(shè)備的硬件上,后來在云中可用痪宰。從 90 年代末開始叼架,數(shù)據(jù)倉庫成為大公司最主要的數(shù)據(jù)架構(gòu)。該技術(shù)的主要優(yōu)點(diǎn)包括:
- 集成多種數(shù)據(jù)源
- 為讀取訪問優(yōu)化的數(shù)據(jù)
- 能夠運(yùn)行快速的即席分析查詢
- 數(shù)據(jù)審計衣撬、治理和沿襲
數(shù)據(jù)倉庫很好地滿足了他們的目的乖订,但隨著時間的推移,這項技術(shù)的缺點(diǎn)變得明顯具练。
- 無法存儲非結(jié)構(gòu)化的原始數(shù)據(jù)
- 昂貴的專有硬件和軟件
- 由于存儲和計算能力的緊密耦合而難以擴(kuò)展
Apache Hadoop? 和 Spark? 支持非結(jié)構(gòu)化數(shù)據(jù)分析乍构,并為現(xiàn)代數(shù)據(jù)湖奠定基礎(chǔ)
隨著 2000 年代初“大數(shù)據(jù)”的興起,公司發(fā)現(xiàn)他們需要對無法在一臺計算機(jī)上容納的數(shù)據(jù)集進(jìn)行分析扛点。此外哥遮,他們需要分析的數(shù)據(jù)類型并不總是結(jié)構(gòu)整齊——公司也需要利用非結(jié)構(gòu)化數(shù)據(jù)的方法岂丘。為了使大數(shù)據(jù)分析成為可能,并解決對數(shù)據(jù)倉庫成本和供應(yīng)商鎖定的擔(dān)憂眠饮,Apache Hadoop?作為一種開源分布式數(shù)據(jù)處理技術(shù)應(yīng)運(yùn)而生奥帘。
什么是Hadoop?
Apache Hadoop? 是一組用于大數(shù)據(jù)分析的開源軟件仪召,允許使用并行工作的計算機(jī)集群處理大型數(shù)據(jù)集寨蹋。它包括Hadoop MapReduce、Hadoop 分布式文件系統(tǒng) (HDFS)和YARN(又一個資源談判器)扔茅。HDFS 允許將單個數(shù)據(jù)集存儲在許多不同的存儲設(shè)備上已旧,就好像它是單個文件一樣。它與 MapReduce 算法協(xié)同工作咖摹,該算法確定如何將大型計算任務(wù)(如統(tǒng)計計數(shù)或聚合)拆分為可以在計算集群上并行運(yùn)行的小得多的任務(wù)评姨。
Hadoop 的引入是大數(shù)據(jù)分析的一個分水嶺,主要有兩個原因萤晴。首先,這意味著一些公司可以從昂貴的專有數(shù)據(jù)倉庫軟件轉(zhuǎn)向運(yùn)行免費(fèi)和開源 Hadoop 的內(nèi)部計算集群胁后。其次店读,它允許公司以前所未有的方式分析大量非結(jié)構(gòu)化數(shù)據(jù)。在 Hadoop 之前攀芯,擁有數(shù)據(jù)倉庫的公司通常只能分析高度結(jié)構(gòu)化的數(shù)據(jù)屯断,但現(xiàn)在他們可以從更大的數(shù)據(jù)池中提取價值,其中包括半結(jié)構(gòu)化和非結(jié)構(gòu)化數(shù)據(jù)侣诺。一旦公司具備分析原始數(shù)據(jù)的能力殖演,收集和存儲這些數(shù)據(jù)就變得越來越重要——為現(xiàn)代數(shù)據(jù)湖奠定了基礎(chǔ)。
早期的數(shù)據(jù)湖建立在 Hadoop 上
早期基于 Hadoop MapReduce 和 HDFS 構(gòu)建的數(shù)據(jù)湖取得了不同程度的成功年鸳。許多早期的數(shù)據(jù)湖都使用 Apache Hive? 使用戶能夠使用面向 Hadoop 的 SQL 引擎查詢他們的數(shù)據(jù)趴久。一些早期的數(shù)據(jù)湖成功了,而另一些則由于 Hadoop 的復(fù)雜性和其他因素而失敗搔确。直到今天彼棍,許多人仍然將“數(shù)據(jù)湖”一詞與 Hadoop 聯(lián)系在一起,因?yàn)樗堑谝粋€能夠收集和分析大量非結(jié)構(gòu)化數(shù)據(jù)的框架膳算。然而座硕,如今,許多現(xiàn)代數(shù)據(jù)湖架構(gòu)已從本地 Hadoop 轉(zhuǎn)變?yōu)樵谠浦羞\(yùn)行 Spark涕蜂。盡管如此华匾,這些最初的嘗試仍然很重要,因?yàn)檫@些 Hadoop 數(shù)據(jù)湖是現(xiàn)代數(shù)據(jù)湖的先驅(qū)机隙。隨著時間的推移蜘拉,Hadoop 的受歡迎程度有所下降萨西,因?yàn)樗鼛淼膯栴}是很多組織難以解決:如性能慢、有限的安全性诸尽、缺少對Streaming的支持等原杂。
Apache Spark:支持現(xiàn)代數(shù)據(jù)湖的統(tǒng)一分析引擎
Hadoop 推出后不久,Apache Spark被介紹了您机。Spark 將 MapReduce 的想法更進(jìn)一步穿肄,為大數(shù)據(jù)的分布式計算提供了一個強(qiáng)大的通用框架。隨著時間的推移际看,Spark 在數(shù)據(jù)從業(yè)者中越來越受歡迎咸产,主要是因?yàn)樗子谑褂茫诨鶞?zhǔn)測試中表現(xiàn)良好仲闽,并提供了額外的功能脑溢,增加了它的實(shí)用性并擴(kuò)大了它的吸引力。例如赖欣,Spark 的交互模式使數(shù)據(jù)科學(xué)家能夠?qū)嫶蟮臄?shù)據(jù)集進(jìn)行探索性數(shù)據(jù)分析屑彻,而無需花時間在低價值的工作上,例如編寫復(fù)雜的代碼將數(shù)據(jù)轉(zhuǎn)換為可靠的來源顶吮。Spark 還使得大規(guī)模訓(xùn)練機(jī)器學(xué)習(xí)模型社牲、使用 SQL 查詢大數(shù)據(jù)集以及使用 Spark Streaming 快速處理實(shí)時數(shù)據(jù)成為可能。
自推出以來悴了,Spark 的受歡迎程度不斷提高搏恤,并已成為大數(shù)據(jù)處理的事實(shí)上的標(biāo)準(zhǔn),這在很大程度上歸功于社區(qū)成員的忠實(shí)基礎(chǔ)和專門的開源貢獻(xiàn)者湃交。今天熟空,許多現(xiàn)代數(shù)據(jù)湖架構(gòu)使用 Spark 作為處理引擎,使數(shù)據(jù)工程師和數(shù)據(jù)科學(xué)家能夠執(zhí)行 ETL搞莺、優(yōu)化數(shù)據(jù)和訓(xùn)練機(jī)器學(xué)習(xí)模型息罗。