
2014到2015年蛻變:大象在跳舞,Hadoop從離線到在線
時代在變遷,市場在變化,周邊的軟硬件環(huán)境也突飛猛進般的發(fā)展,同時企業(yè)的業(yè)務(wù)需求也不斷升級,從規(guī)模到成本都有較高的要求,這刺激Hadoop生態(tài)圈的變革。據(jù)AMR研究顯示,到2020年Hadoop將擁有502億美元市場。如此多金誘惑下,各大解決方案提供商對Hadoop生態(tài)圈的發(fā)力可謂是越來越快,順應(yīng)潮流,Hadoop生態(tài)圈也更為完善和成熟,更是劃分出了子生態(tài)圈如Spark。正是在這樣一個背景下,Hadoop的順利度過了2014年。
2014業(yè)內(nèi)哪些事情值得關(guān)注
1)大數(shù)據(jù)解決方案提供商hortonworks上市。
大數(shù)據(jù)軟件提供商hortonworks于2014年11月11日向美國證監(jiān)會提出IPO申請,這標志著Hadoop技術(shù)發(fā)展開始走入商業(yè)階段,更標志著Hadoop技術(shù)從2014年開始真正的成熟了。
2)Hadoop2在開始大規(guī)模落地。
Hadoop2從提出到發(fā)展至今經(jīng)歷了數(shù)年時間,國內(nèi)外有很多公司在嘗試Hadoop2的架構(gòu),在這個階段引領(lǐng)業(yè)內(nèi)潮流并非主流大企業(yè),率先嘗試的反而是一些小公司。這些小公司數(shù)據(jù)量小,規(guī)模不大,遷移方便,但這些企業(yè)的嘗試規(guī)模無法真正驗證出問題,2013年國外如yahoo開始嘗試Hadoop2的落地,并有了業(yè)內(nèi)4500臺左右的最大Yarn集群,國內(nèi)如阿里、美團等企業(yè)都在嘗試Yarn都取得了幾百上千臺的成績,2014年國內(nèi)騰訊Yarn集群規(guī)模接近萬臺。
3)國內(nèi)Spark氛圍漸濃,欲與Hadoop試比高。
2014年Spark是個爆發(fā)年,這一年里Spark社區(qū)快速發(fā)布了多個版本,最高版本已經(jīng)到了1.2.0。Spark先是廢棄了Shark然后大力發(fā)展Spark SQL,與此同時Spark Streaming也更為成熟;Spark社區(qū)內(nèi)部優(yōu)化無數(shù),空前活躍,各種會議、研究、探討,圍繞Spark本身的周邊配套系統(tǒng)也越來越多,形成了Hadoop生態(tài)圈內(nèi)的不可忽視的小生態(tài)圈。國內(nèi)外大小企業(yè)都在嘗試Spark,如EBay,根據(jù)當前公開文獻資料,EBay構(gòu)建了一個大約2000臺的Spark集群;如騰訊,構(gòu)建了一個大約2000臺左右的Spark集群,通過Spark挖掘運算之后的模型提供給廣告推薦使用,給騰訊廣告帶來了100億規(guī)模的收入;百度構(gòu)建了大約1300臺的Spark集群。。
1 HDFS – 高度挖掘資源利用率的存儲
2014年HDFS發(fā)布了主要以下特性。
1)更方便的在線升級:
HDFS支持在線升級,F(xiàn)SImage通ProtocolBuffer序列化與反序列化,元數(shù)據(jù)升級也更為方便。
2)異構(gòu)存儲:
在HDFS支持異構(gòu)存儲媒介的之前,HDFS假設(shè)底層存儲媒介是同構(gòu)的,性能完全一樣,比如全是HDD(機械盤),但隨著新型媒介的出現(xiàn)以及對應(yīng)成本的下降,很多公司開始嘗試使用新的存儲媒介,比如SSD?;诖耍?a href='/map/hdfs/' style='color:#000;font-size:inherit;'>HDFS也緊跟時代發(fā)展潮流,將支持異構(gòu)存儲媒介,即一個HDFS的各個存儲節(jié)點上可以指定若干不同的存儲媒介,比如HDD、SSD等,這樣,用戶可以根據(jù)應(yīng)用特點將不同類型數(shù)據(jù)存儲在不同媒介上,以滿足性能需求。
3)集中管理的DataNode緩存:
即DataNode緩存,目前HDFS中個DataNode上緩存的數(shù)據(jù)并沒有通過適當?shù)耐緩奖┞督o外界應(yīng)用程序,尤其是Spark、Hive、Pig、Impala等這樣的計算框架無法充分利用DataNode的內(nèi)存進行計算優(yōu)化,比如本地內(nèi)存、讀優(yōu)化等。該功能將集中管理DataNode緩存,并且統(tǒng)一控制哪些文件需要加載到緩存中來, 從而提高讀取性能。
4)端到端的加密:
HDFS實現(xiàn)了一個透明的,端到端的加密方式。一旦配置了加密,從HDFS讀出數(shù)據(jù)解密和寫入數(shù)據(jù)加密的過程對用戶應(yīng)用程序來說都是透明的。加密過程是端到端的,這意味著數(shù)據(jù)只能在應(yīng)用程序解密。
5)Archival Storage:
將計算能力與不斷增長的存儲能力分離。擁有高密度低成本的存儲但是計算能力較低的節(jié)點將變得利用率更高,比如可以在集群中做冷存儲。增加更多的此類節(jié)點作為冷存儲可以提高集群的存儲能力,跟集群的計算能力無關(guān)。
未來HDFS社區(qū)將發(fā)展跨數(shù)據(jù)中心的容災(zāi):
目前的HDFS只支持機房內(nèi)的容災(zāi),而且目前的HDFS不支持跨機房部署,無法提供更大規(guī)模的全球可用的服務(wù);在跨機房同步數(shù)據(jù)方面也只能依賴一些導(dǎo)入導(dǎo)出工具離線的操作。HDFS計劃未來支持部署在多機房,實現(xiàn)跨機房容災(zāi),零丟失率,低延時。
2 YARN – 面向通用化和服務(wù)化
社區(qū)對Yarn的定位開始更加通用化,也更面向服務(wù),尤其可以面向7×24小時的服務(wù),針對這些服務(wù),系統(tǒng)需要更加健壯,可靠性更高,因此2014年Yarn發(fā)布了以下主要特性:
1)ResourceManager HA:
在hadoop 2.4.1版本中ResourceManager新增HA功能,這意味著集群中最大的單點解決了,系統(tǒng)可用性大大提升。
2)支持Docker:
Yarn的新版本中,支持了Docker,Yarn將使用Docker解決每個container執(zhí)行環(huán)境的問題。使用Docker的Yarn集群將得到更好的資源隔離性,并可以更快速的部署 – Docker有強大的鏡像存儲和分發(fā)能力,開發(fā)者可以很方便的從鏡像中心獲取Hadoop YARN應(yīng)用的鏡像。
Yarn未來社區(qū)發(fā)展方向:
社區(qū)正在針對NodeManager HA特性研發(fā),不久之后就會問世。從2014年的發(fā)展和社區(qū)最新的動向來看,社區(qū)對Yarn的規(guī)劃是更通用化,更面向服務(wù),尤其在7×24小時服務(wù)能力方面重點加強。
3 Spark – 高度活躍的小生態(tài)圈
Spark社區(qū)在2014年里共發(fā)布了四個版本,平均每個季度一個,這里每個版本都有一些新的功能和特性,使得Spark功能越來越豐富,更加可靠和高效。
2014年Spark發(fā)布了主要以下特性:
1)Standalone模式
增加Standalone模式下運行的HA功能,使得Spark Streaming的Driver在Standalone模式下當Driver丟失后可自動恢復(fù)。
2)GraphX
增加了多個算法,包括PageRank、SVD++、標簽傳播算法并進入穩(wěn)定版本。
3)Mllib
新增SVN、PCA、L-BFGS、Word2Vec和TF-IDF、Navie Bayes、Random forests和Gradient-boosted算法,并支持learning pipelines機制這使得多個算法可以在一遍處理過程中執(zhí)行完成。
4)Spark SQL
已經(jīng)與Hive 0.13兼容,并可以支持動態(tài)分區(qū)插入,同時引入了動態(tài)字節(jié)碼生成功能,同時支持多種語言編寫的UDF函數(shù)。
5)Driver
實現(xiàn)了通過WAL機制來保證HA。
未來Spark社區(qū):
Spark社區(qū)發(fā)展快速,已經(jīng)形成了Hadoop生態(tài)圈下的小生態(tài)圈,并且以獨立形式運作,支持高效的內(nèi)存文件系統(tǒng)和更快速,更豐富的計算,成為Hadoop的一個強有力的補充計算引擎。
4 MR – 持續(xù)優(yōu)化
2014年MapReduce發(fā)布了以下主要特性
1)Shuffle Handler提供了keep-alive機制,提高了Shuffle的效率。
2)提供了斷點恢復(fù)的機制:
這使得已完成MapTask不需要因為NodeManger重啟而重跑。
3)計算前數(shù)據(jù)切分這一步獲取文件信息并行化。
4)提供了Rehash Partitioner機制,這個方案使Key的分布更均勻。
5)ApplicationManger由于ResourceManger HA的特性減少了失敗重跑的代價。
6)支持任務(wù)內(nèi)資源搶占機制。
未來社區(qū)發(fā)展方向:
1)由于搶占機制的引入提高了資源被搶占的概率,但為了減少Task被搶占的代價,Task斷點恢復(fù)的機制加入到規(guī)劃當中。
2)當前中間結(jié)果量的遞增,引起磁盤隨機讀寫次數(shù)增加導(dǎo)致性能非線性下降,未來將中間結(jié)果按Partition聚合和批處理等方案也在討論當中。
5 HBase – 1.0時代
HBase開始進入1.0時代,系統(tǒng)在穩(wěn)定性、可用性、易用性方面有質(zhì)的提升,主要體現(xiàn)的特性如下:
1)HydraBase:
提供高可靠性:Region的副本只有一個是關(guān)鍵Region支持寫入,其余的都是在線副本;設(shè)定一個延遲,這個延遲以內(nèi)關(guān)鍵Region沒有應(yīng)答,就把請求發(fā)給其他在線副本,保證一致性和可靠性。
Replication Protocol:一組副本之間將只有一個leader,系統(tǒng)將使用RAFT協(xié)議來完成leader的選舉,leader響應(yīng)client所有讀取和寫入的請求,每個副本都會有自己的wal并存儲在本地,寫操作將由leader同步復(fù)制到其他副本。
RMAP:RMAP包含每個Region的quorum配置信息
基于到client的網(wǎng)絡(luò)延遲,每個數(shù)據(jù)中心都將有一個Rank,RT最低的數(shù)據(jù)中心將具有最高等級的Rank,數(shù)據(jù)中心Rank排名較高、有quorum member資格的將能夠接管領(lǐng)導(dǎo)權(quán),較高等級(數(shù)據(jù)中心Rank加 機器Rank)的副本將最優(yōu)可能成為leader。
具體架構(gòu)見下圖:
6 Hive – 性能優(yōu)化
Hive社區(qū)在SQL性能優(yōu)化方面做了大量工作,在2014年取得了許多的突破和進展:
1)ORCFile存儲格式完善
豐富了ORCFile的統(tǒng)計信息(提供stripe level的列統(tǒng)計信息)以及外圍的接口,讓元數(shù)據(jù)庫中存儲的統(tǒng)計信息和ORCFile中的統(tǒng)計信息可以配合使用,進一步降低數(shù)據(jù)讀取的代價
2)Hive on Tez
Tez是一個基于Yarn的DAG計算引擎,相比于MapReduce,Tez可以更加靈活的描述計算過程,減少中間結(jié)果落地的次數(shù),大大提高了計算效率。Hive On Tez使得那些需要多步MapReduce計算的復(fù)雜SQL的執(zhí)行效率明顯提升
3)向量執(zhí)行
向量查詢執(zhí)行是hive的一大特性,可以顯著降低一些典型查詢操作的cpu使用率,如掃描、過濾、聚合和連接。傳統(tǒng)hive的查詢執(zhí)行是按行進行處理,這樣效率很低,向量查詢計劃是批量處理數(shù)據(jù),一次處理上千行數(shù)據(jù),每列表示成一個向量,內(nèi)部循環(huán)掃描這些列向量,沒有方法調(diào)用、反序列化、條件語句等額外開銷,提高cpu指令流水線的利用率,從而大大減少cpu的使用。使用此種方式,數(shù)據(jù)存儲必須是ORC格式的。目前支持此種方式的數(shù)據(jù)類型有: tinyint, smallint, int, bigint, boolean, float, double, decimal, date, timestamp, string。支持此種方式的表達式有:算術(shù)表達式、邏輯表達式、比較表達式、數(shù)學函數(shù)、字符串函數(shù)、用戶自定義函數(shù)、類型轉(zhuǎn)換、日期函數(shù)和if表達式。
Hive從0.13版本加入此特性。
4)基于代價的優(yōu)化器
Hive的基于代價的優(yōu)化器使用了開源軟件Optiq來獲取更優(yōu)的的執(zhí)行計劃。Optiq擁有超過50種優(yōu)化手段,通過它以及數(shù)據(jù)統(tǒng)計信息,Hive可以方便的實現(xiàn)Join最優(yōu)算法,Join最優(yōu)順序的選擇等。同時它也提升了Hive的易用性,它的存在使得無需用戶過多的參與就能得到比較優(yōu)化的執(zhí)行計劃,從而提升SQL執(zhí)行效率
5)SQL 完整性
除了性能的優(yōu)化工作之外,Hive社區(qū)也在持續(xù)建設(shè)SQL的完整性:例如在where子句中使用子查詢的功能(IN/NOT IN, EXIST/NOT EXIST);引入了類似Oracle/PostgreSQL的CTES語法和功能,進一步加強SQL的表達能力;加入char數(shù)據(jù)類型,完善Decimal數(shù)據(jù)類型
未來社區(qū)發(fā)展:
社區(qū)計劃以完善當前版本為主要目標,但更值得注意的是Hive On Spark工作,Spark目前發(fā)展迅速,大有與MapReduce分庭抗禮之勢。目前Hive On Spark已經(jīng)完成基本功能開發(fā)以及大部分的bugfix,估計在2015年會正式發(fā)布,值得期待。
7 Tez – 孵化成功
Tez是什么?Tez這樣一個新興的技術(shù)對大家來說比較陌生,但Tez確是Hadoop家族最有想象力的一個突破。Tez產(chǎn)生的主要原因是繞開MapReduce所施加的限制。除了必須要編寫Mapper和Reducer的限制之外,強制讓所有類型的計算都滿足這一范例還有效率低下的問題——例如使用HDFS存儲多個MR作業(yè)之間的臨時數(shù)據(jù),這是一個負載。Tez主要應(yīng)用了DAG計算模型,它可以將多個有依賴的作業(yè)轉(zhuǎn)換為一個作業(yè)從而大幅提升DAG作業(yè)的性能。2014年Tez成功從Apache項目孵化器中脫離出來成為Apache的頂級項目之一,這預(yù)示著Tez開始走向成熟化和產(chǎn)品化。
目前Tez擁有如下幾點主要特性:
1)比原生Hadoop MapReduce更好的性能。使用Tez的調(diào)度框架可以減少其中不必要的處理階段,如MRMR我們可以簡化為MRR,參考架構(gòu)示意圖如下:
2)具有表現(xiàn)力的數(shù)據(jù)流API。
3)靈活:可以通過連接不同的輸入、處理器和輸出動態(tài)地構(gòu)建運行時執(zhí)行器。
4)數(shù)據(jù)類型無關(guān)性:僅關(guān)心數(shù)據(jù)的移動,不關(guān)心數(shù)據(jù)格式。
5)對MapReduce的無縫兼容,Tez能夠運行任意MR任務(wù),不需要做任何改動。
未來社區(qū)計劃
2014中Tez主要發(fā)布了0.5.x系列版本,但大多以bugfix為主題,因此從這點來看2015未來社區(qū)也仍舊以穩(wěn)定成熟為目標。
Hadoop社區(qū)雖然繁榮,但無法完全覆蓋各種應(yīng)用場景,即使可用也未必是最優(yōu)方案,尤其在一些頂級企業(yè)中,面臨的數(shù)據(jù)量都是海量的,社區(qū)的系統(tǒng)甚至無法考驗的。不得不提,面對無法覆蓋的需求,有實力的企業(yè)會自主研發(fā)各種差異化的系統(tǒng)。如百度自己研發(fā)了類似Yarn一樣的調(diào)度系統(tǒng),阿里自主研發(fā)了類似Hadoop的飛天系統(tǒng),這段時期跟社區(qū)走的最近的騰訊自己維護的Hadoop版本跟社區(qū)對比也有很大差異,針對大數(shù)據(jù)的快速多維檢索也有Hermes這類產(chǎn)品。
不得不說的持續(xù)的技術(shù)投入,重復(fù)成本較多,開源成為了社會進步的主要元素。BAT企業(yè)在開源這塊最近幾年貢獻頗多,成為國內(nèi)開源技術(shù)的引領(lǐng)者,這是一種進步是一種希望,也是在針尖對麥芒的商業(yè)背后的一種合作。由衷的希望社會能保持這種合作,讓技術(shù)最大化的成長,讓生態(tài)圈更完善。
數(shù)據(jù)分析咨詢請掃描二維碼
若不方便掃碼,搜微信號:CDAshujufenxi
SQL Server 中 CONVERT 函數(shù)的日期轉(zhuǎn)換:從基礎(chǔ)用法到實戰(zhàn)優(yōu)化 在 SQL Server 的數(shù)據(jù)處理中,日期格式轉(zhuǎn)換是高頻需求 —— 無論 ...
2025-09-18MySQL 大表拆分與關(guān)聯(lián)查詢效率:打破 “拆分必慢” 的認知誤區(qū) 在 MySQL 數(shù)據(jù)庫管理中,“大表” 始終是性能優(yōu)化繞不開的話題。 ...
2025-09-18CDA 數(shù)據(jù)分析師:表結(jié)構(gòu)數(shù)據(jù) “獲取 - 加工 - 使用” 全流程的賦能者 表結(jié)構(gòu)數(shù)據(jù)(如數(shù)據(jù)庫表、Excel 表、CSV 文件)是企業(yè)數(shù)字 ...
2025-09-18DSGE 模型中的 Et:理性預(yù)期算子的內(nèi)涵、作用與應(yīng)用解析 動態(tài)隨機一般均衡(Dynamic Stochastic General Equilibrium, DSGE)模 ...
2025-09-17Python 提取 TIF 中地名的完整指南 一、先明確:TIF 中的地名有哪兩種存在形式? 在開始提取前,需先判斷 TIF 文件的類型 —— ...
2025-09-17CDA 數(shù)據(jù)分析師:解鎖表結(jié)構(gòu)數(shù)據(jù)特征價值的專業(yè)核心 表結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 規(guī)范存儲的結(jié)構(gòu)化數(shù)據(jù),如數(shù)據(jù)庫表、Excel 表、 ...
2025-09-17Excel 導(dǎo)入數(shù)據(jù)含缺失值?詳解 dropna 函數(shù)的功能與實戰(zhàn)應(yīng)用 在用 Python(如 pandas 庫)處理 Excel 數(shù)據(jù)時,“缺失值” 是高頻 ...
2025-09-16深入解析卡方檢驗與 t 檢驗:差異、適用場景與實踐應(yīng)用 在數(shù)據(jù)分析與統(tǒng)計學領(lǐng)域,假設(shè)檢驗是驗證研究假設(shè)、判斷數(shù)據(jù)差異是否 “ ...
2025-09-16CDA 數(shù)據(jù)分析師:掌控表格結(jié)構(gòu)數(shù)據(jù)全功能周期的專業(yè)操盤手 表格結(jié)構(gòu)數(shù)據(jù)(以 “行 - 列” 存儲的結(jié)構(gòu)化數(shù)據(jù),如 Excel 表、數(shù)據(jù) ...
2025-09-16MySQL 執(zhí)行計劃中 rows 數(shù)量的準確性解析:原理、影響因素與優(yōu)化 在 MySQL SQL 調(diào)優(yōu)中,EXPLAIN執(zhí)行計劃是核心工具,而其中的row ...
2025-09-15解析 Python 中 Response 對象的 text 與 content:區(qū)別、場景與實踐指南 在 Python 進行 HTTP 網(wǎng)絡(luò)請求開發(fā)時(如使用requests ...
2025-09-15CDA 數(shù)據(jù)分析師:激活表格結(jié)構(gòu)數(shù)據(jù)價值的核心操盤手 表格結(jié)構(gòu)數(shù)據(jù)(如 Excel 表格、數(shù)據(jù)庫表)是企業(yè)最基礎(chǔ)、最核心的數(shù)據(jù)形態(tài) ...
2025-09-15Python HTTP 請求工具對比:urllib.request 與 requests 的核心差異與選擇指南 在 Python 處理 HTTP 請求(如接口調(diào)用、數(shù)據(jù)爬取 ...
2025-09-12解決 pd.read_csv 讀取長浮點數(shù)據(jù)的科學計數(shù)法問題 為幫助 Python 數(shù)據(jù)從業(yè)者解決pd.read_csv讀取長浮點數(shù)據(jù)時的科學計數(shù)法問題 ...
2025-09-12CDA 數(shù)據(jù)分析師:業(yè)務(wù)數(shù)據(jù)分析步驟的落地者與價值優(yōu)化者 業(yè)務(wù)數(shù)據(jù)分析是企業(yè)解決日常運營問題、提升執(zhí)行效率的核心手段,其價值 ...
2025-09-12用 SQL 驗證業(yè)務(wù)邏輯:從規(guī)則拆解到數(shù)據(jù)把關(guān)的實戰(zhàn)指南 在業(yè)務(wù)系統(tǒng)落地過程中,“業(yè)務(wù)邏輯” 是連接 “需求設(shè)計” 與 “用戶體驗 ...
2025-09-11塔吉特百貨孕婦營銷案例:數(shù)據(jù)驅(qū)動下的精準零售革命與啟示 在零售行業(yè) “流量紅利見頂” 的當下,精準營銷成為企業(yè)突圍的核心方 ...
2025-09-11CDA 數(shù)據(jù)分析師與戰(zhàn)略 / 業(yè)務(wù)數(shù)據(jù)分析:概念辨析與協(xié)同價值 在數(shù)據(jù)驅(qū)動決策的體系中,“戰(zhàn)略數(shù)據(jù)分析”“業(yè)務(wù)數(shù)據(jù)分析” 是企業(yè) ...
2025-09-11Excel 數(shù)據(jù)聚類分析:從操作實踐到業(yè)務(wù)價值挖掘 在數(shù)據(jù)分析場景中,聚類分析作為 “無監(jiān)督分組” 的核心工具,能從雜亂數(shù)據(jù)中挖 ...
2025-09-10統(tǒng)計模型的核心目的:從數(shù)據(jù)解讀到?jīng)Q策支撐的價值導(dǎo)向 統(tǒng)計模型作為數(shù)據(jù)分析的核心工具,并非簡單的 “公式堆砌”,而是圍繞特定 ...
2025-09-10