WOT架構師系列訪談(6)Databricks研究員連城
原創(chuàng)【編者按】 51CTO 2014 WOT全球軟件技術峰會將在2014年7月25-26日在北京富力萬麗酒店召開。從本周開始,我們將陸續(xù)公布會議內(nèi)容,并針對即將參會的架構師訪談,以便大家進一步了解會議內(nèi)容。會議詳細議程見: http://wot.51cto.com/2014/。
本次訪談的對象是DataBricks軟件工程師、Intel物聯(lián)技術研究院研究連城,畢業(yè)于浙江大學;《Erlang/OTP并發(fā)編程實戰(zhàn)》及《Erlang并發(fā)編程(第一篇)》譯者。目前專注于Apache Spark分布式內(nèi)存計算框架。在本次WOT全球軟件技術峰會上,連城將為我們帶來Spark方面的技術分享。
連城(微博@連城404)
以下是訪談實錄:
記者:最近,Cloudera已經(jīng)宣布拋棄MapReduce,擁抱Spark。您認為是什么原因讓Cloudera決定采用Spark?
連城:說“拋棄”未免危言聳聽了,畢竟Hadoop MapReduce仍然是當前大數(shù)據(jù)領域應用最廣泛、生態(tài)最完善的分布式計算框架。不過相對于MapReduce,Spark確實體現(xiàn)出了令人印象深刻的優(yōu)勢。實際上,從DataBricks近期的官方博客上可以看出,除了Cloudera以外,MapR、Pivotal、Datastax等老牌大數(shù)據(jù)廠商都對Spark敞開了懷抱。Hortonworks也于五月份推出了HDP 2.1 Spark組件的技術預覽版。
傳統(tǒng)MapReduce只有map和reduce兩個階段,在表達較為復雜的分布式計算任務時,難免要引入一些map-only型作業(yè),作業(yè)和作業(yè)之間又只能以HDFS為媒介進行數(shù)據(jù)交換,這是MapReduce效率低下的主要原因。和Google的Dremel、微軟的Dryad、Hadoop 2的Tez等系統(tǒng)類似,Spark以有向無環(huán)圖(DAG)來表示計算,可以通過流水線優(yōu)化有效合并不必要的map-only型作業(yè),縮減作業(yè)數(shù)量;同時,與Dremel、Dryad、Tez等現(xiàn)有系統(tǒng)不同的是,Spark采用彈性分布式數(shù)據(jù)集(RDD,Resilient Distributed Datasets)作為數(shù)據(jù)共享抽象,可以有效利用集群的內(nèi)存,共享被多個作業(yè)頻繁使用的數(shù)據(jù),消除了不必要的HDFS訪問開銷,從而大大提升作業(yè)的執(zhí)行效率。以上兩點,使得Spark在以機器學習為代表的迭代型計算上表現(xiàn)出眾,可以輕松勝出MapReduce一到兩個數(shù)量級。
與此同時,實驗數(shù)據(jù)和Twitter等公司近期的實際工程經(jīng)驗也證明,即便是針對非迭代型的工作流作業(yè),Spark的性能也比MapReduce高出近一個數(shù)量級。原因在于傳統(tǒng)MapReduce采用的是進程級并行和基于心跳的同步通訊,而Spark采用的是線程級并行和異步通訊。這使得Spark的任務啟動開銷和任務調(diào)度開銷大大降低。再者,對于應用層不需要排序的作業(yè),Spark不會像MapReduce那樣一視同仁地在mapper端進行代價高昂的排序操作,又進一步削減了作業(yè)的平均延遲。
最后,RDD這一數(shù)據(jù)共享抽象,使得Spark能夠在一套框架內(nèi)有效表達批量計算、交互式查詢、流計算、圖計算、SQL關系查詢等多種數(shù)據(jù)分析范式,甚至允許用戶混合使用多種范式共同搭建一體化的大數(shù)據(jù)流水線。這一點是性能因素之外Spark最大的亮點。
記者:Spark的數(shù)據(jù)處理能力很強大。但有一種聲音表示Spark作為一種內(nèi)存計算框架,在處理大數(shù)據(jù)量時,集群的內(nèi)存總量會成為巨大的瓶頸。這會給Spark的應用帶來什么樣的影響?
連城:內(nèi)存計算的確是Spark的一大賣點。很多新手都容易產(chǎn)生這樣一個誤區(qū),認為必須要將完整的數(shù)據(jù)集裝入內(nèi)存才能進行內(nèi)存計算。這顯然是不必要的,否則僅就當前常見的集群內(nèi)存容量,Spark根本不可能踏入“大數(shù)據(jù)”這個領域。對于內(nèi)存計算框架而言,直觀上的確是集群內(nèi)存總量越大越好,但內(nèi)存總量不高并不會帶來太大的限制,最多是作業(yè)的執(zhí)行效率有所下降。原因有四:第一,根據(jù)來自Facebook的Hive數(shù)據(jù)倉庫的統(tǒng)計,絕大部分計算任務的完整數(shù)據(jù)集都可以放入集群的內(nèi)存;第二,在大部分任務中,需要反復頻繁使用、值得進入內(nèi)存緩存的數(shù)據(jù)往往是總體數(shù)據(jù)集中的一小部分(例如從1TB日志數(shù)據(jù)中過濾出的50GB錯誤日志數(shù)據(jù));第三,具體到單個工作節(jié)點,對于不進入內(nèi)存緩存的數(shù)據(jù),Spark訪問數(shù)據(jù)時是利用iterator逐條記錄按流式訪問的,并不會不分青紅皂白地一次性將所有輸入數(shù)據(jù)都加載進內(nèi)存;最后,在內(nèi)存不足的情況下,Spark可以妥善地線性回退,不至于出現(xiàn)劇烈下滑。
阿里、百度、京東、淘寶、谷歌、Facebook、Tesla都到2014 WOT全球軟件技術峰會了,你還等什么?這些頂級的公司將首次對外公開技術,涵蓋八大主題,共有40+課程,部署實施、運維開發(fā)、大數(shù)據(jù)、Spark、敏捷開發(fā)一個都不少。除了第一手的經(jīng)驗之外,還有未來兩三年的技術趨勢,你會讓自己錯過這樣的技術大會嗎?
【編輯推薦】