讀完這100篇論文 就能成大數(shù)據(jù)高手

作者:Anil Madan??? 譯者:張玉宏??? 文源:LinkeDin????? 轉(zhuǎn)自:CSDN

PayPal高級工程總監(jiān)Anil Madan寫了篇大數(shù)據(jù)的文章长搀,近日CSDN對此進行了翻譯。一共有100篇大數(shù)據(jù)的論文,涵蓋大數(shù)據(jù)技術(shù)棧,全部讀懂你將會是大數(shù)據(jù)的頂級高手懊纳。

開源(Open Source)用之于大數(shù)據(jù)技術(shù),其作用有二:一方面亡容,在大數(shù)據(jù)技術(shù)變革之路上嗤疯,開源在眾人之力和眾人之智推動下,摧枯拉朽闺兢,吐故納新身弊,扮演著非常重要的推動作用。另一方面列敲,開源也給大數(shù)據(jù)技術(shù)構(gòu)建了一個異常復雜的生態(tài)系統(tǒng)阱佛。每一天,都有一大堆“新”框架戴而、“新”類庫或“新”工具凑术,猶如雨后春筍般涌出,亂花漸欲“迷”人眼所意。為了掌控住這些“新玩意”淮逊,數(shù)據(jù)分析的達人們不得不“殫精竭慮”地“學而時習之”。

無論你是一個大數(shù)據(jù)的布道者扶踊,還是一個日臻成熟的技術(shù)派泄鹏,亦或你還在大數(shù)據(jù)這條路上“小荷才露尖尖角”,多花點時間秧耗,深入理解一下大數(shù)據(jù)系統(tǒng)的技術(shù)體系演進备籽,對你都會有莫大益處。全方位地理解大數(shù)據(jù)體系結(jié)構(gòu)中的各個組件分井,并掌握它們之間的微妙差別车猬,可在處理自己身邊的大數(shù)據(jù)案例時,助你張弛有度尺锚,“恢恢乎珠闰,其于游刃必有余地矣!”

在過去的幾年里,我閱讀了很多不錯的大數(shù)據(jù)文獻瘫辩,這些文獻陪我成長伏嗜,助我成功坛悉,使我成為一個具備良好教育背景的大數(shù)據(jù)專業(yè)人士。在這里承绸,撰寫此文的目的裸影,不限于僅僅和大家分享這些很不錯的文獻,更重要的是八酒,借此機會空民,想和大家一起,集眾人之智慧羞迷,破解大數(shù)據(jù)開源系統(tǒng)之迷宮界轩。

需要提醒的是,下文提及到的100篇參考文獻(這些文獻中大多都是一些開創(chuàng)性的研究論文)衔瓮,將會為你提供結(jié)構(gòu)性的深度剖析浊猾,絕非泛泛而談。我相信热鞍,這可從根本上幫助你深度理解大數(shù)據(jù)體系組件間的細微差別葫慎。但如果你打算“走馬觀花”般地快速過一遍,了解大數(shù)據(jù)為何物薇宠,對不起偷办,這里可能會讓你失望。

那么澄港,準備好了嗎椒涯?讓我們走起!


在介紹這100篇文獻之前回梧,首先讓我們看一下大數(shù)據(jù)處理的關鍵架構(gòu)層(如圖1所示):

關鍵架構(gòu)層

???????????????????????????????????????????????????????????????????????????????????? 圖1:大數(shù)據(jù)處理的關鍵架構(gòu)層

文件系統(tǒng)層:在這一層里废岂,分布式文件系統(tǒng)需具備存儲管理、容錯處理狱意、高可擴展性湖苞、高可靠性和高可用性等特性。

數(shù)據(jù)存儲層:由于目前采集到的數(shù)據(jù)详囤,十之有七八為非結(jié)構(gòu)化和半結(jié)構(gòu)化數(shù)據(jù)财骨,數(shù)據(jù)的表現(xiàn)形式各異,有文本的纬纪、圖像的蚓再、音頻的、視頻的等包各,因此常見的數(shù)據(jù)存儲也要對應有多種形式,有基于鍵值(Key-Value)的靶庙,有基于文檔(Document)问畅,還有基于列(Column)和圖表(Graph)的。如果采用單一的數(shù)據(jù)庫引擎,“一刀切式”的滿足所有類型的數(shù)據(jù)存儲需求护姆,通常會嚴重降低數(shù)據(jù)庫管理的性能矾端。因此,我們需要“兵來將擋卵皂,水來土掩”式的秩铆、多元的(Polyglot)【1】數(shù)據(jù)庫解決方案(這就好比,如果“兵來了”和“水來了”灯变,都要“將”去擋殴玛,遇到“兵”時,“將”可以“酣暢淋漓”添祸,而遇到“水”時滚粟,還用“將”去擋,那這個“將”估計就要“舍生取義”了刃泌。文獻【1】是一本有關NoSQL數(shù)據(jù)處理的圖書)

資源管理層:這一層是為了提高資源的高利用率和吞吐量凡壤,以到達高效的資源管理與調(diào)度目的。

資源協(xié)調(diào)層: 在本層的系統(tǒng)耙替,需要完成對資源的狀態(tài)亚侠、分布式協(xié)調(diào)、一致性和資源鎖實施管理俗扇。

計算框架層:在本層的計算框架非常龐雜硝烂,有很多高度專用的框架包含其內(nèi),有流式的狐援,交互式的钢坦,實時的,批處理和迭代圖的(Batch and Iterative Graph啥酱,BSP)等爹凹。為這些計算框架提供支撐的是運行時引擎,如BDAS【2】(Spark) 和Flink等(注:這里的BDAS是指“Berkeley Data Analytics Stack”镶殷,即伯克利數(shù)據(jù)分析棧禾酱。文獻【2】為Spark核心作者Ion Stoica的講座幻燈片文檔)。

數(shù)據(jù)分析層:在這一層里绘趋,主要包括數(shù)據(jù)分析(消費)工具和一些數(shù)據(jù)處理函數(shù)庫颤陶。這些工具和函數(shù)庫,可提供描述性的陷遮、預測性的或統(tǒng)計性的數(shù)據(jù)分析功能及機器學習模塊滓走。

數(shù)據(jù)集成層:在這一層里,不僅包括管理數(shù)據(jù)分析工作流中用到的各種適用工具帽馋,除此之外搅方,還包括對元數(shù)據(jù)(Metadata)管理的工具比吭。

操作框架層:這一層提供可擴展的性能監(jiān)測管理和基準測試框架。


架構(gòu)的演進

減少數(shù)據(jù)生產(chǎn)者和消費者之間的處理延遲姨涡,一直是現(xiàn)代計算構(gòu)架不斷演進的主要動力衩藤。由此,誕生了實時和低延遲處理的計算構(gòu)架涛漂,如Lambda和Kappa等赏表,這類混合架構(gòu)取長補短,架起傳統(tǒng)的批處理層和交互式層之間連接的橋梁匈仗。

Lambda【3】-該架構(gòu)是經(jīng)典的大數(shù)據(jù)處理范式瓢剿,是由南森?馬茲(Nathan Marz)提出的一個實時大數(shù)據(jù)處理框架。更多有關Lamda的信息锚沸,請讀者訪問Lambda官方網(wǎng)站跋选。(注:文獻【3】是由James Kinley在輕博客網(wǎng)站Tumblr發(fā)表的一篇博文:Lambda 架構(gòu):構(gòu)架實時大數(shù)據(jù)系統(tǒng)的原則)。

Kappa【4】-該計算構(gòu)架可視為Lambda的一個強有力替代者哗蜈,Kappa將數(shù)據(jù)處理的上游移至流式層(注:文獻【4】是一篇博客文章前标,作者是Jay Kreps是Linkedln的一名在線數(shù)據(jù)架構(gòu)技術(shù)高管。Kreps認為距潘,雖然Lambda構(gòu)架的理念很有價值炼列,但終究還是一個臨時解決方案。他設計了一個替代架構(gòu)Kappa音比,是基于他在Linkedin構(gòu)建Kafka和Samza的經(jīng)驗設計而成)俭尖。

SummingBird【5】-這是一個參考模型,用來橋接在線處理模式和傳統(tǒng)處理模式洞翩。Summingbird是由Twitter(推特)公司用Scala語言開發(fā)的稽犁、并開源的大規(guī)模數(shù)據(jù)處理框架,支持開發(fā)者以批處理模式(基于Hadoop)或流處理模式(基于Storm)骚亿,或混合模式(即前兩種模式的組合)以統(tǒng)一的方式執(zhí)行代碼已亥。(注:文獻【5】是Summingbird的主要設計者Oscar Boykin、Sam Ritchie等人于2014年發(fā)表于知名期刊PVLDB中論文来屠,其中論文的二作Sam Ritchie大有來頭虑椎,他是計算機科學界的傳奇人物、C語言和Unix的設計者Dennis Ritchie的侄子)俱笛。


在你尚未深入了解上面的各個具體的框架層次之前捆姜,建議你認真閱讀一下下面的幾篇非常有價值的文獻,它們幫為你“惡補”一下諸如NoSQL(非結(jié)構(gòu)化)數(shù)據(jù)存儲迎膜、數(shù)據(jù)倉庫大規(guī)模計算及分布式系統(tǒng)等相關領域的背景知識:

計算中心即計算機【6】(Data center as a computer)-文獻【6】是威斯康星大學-麥迪遜分校Mark D.Hill教授主編的一個論文集式的圖書泥技,在這本圖書中,收集了很多有關數(shù)據(jù)倉庫大規(guī)模計算的論文(注:將數(shù)據(jù)中心視為一臺計算機磕仅,與傳統(tǒng)的高性能計算機有很大不同零抬。計算中心的實例將以虛擬機或者容器的形式存在镊讼,計算資源的配置對于用戶而言是透明的宽涌,這樣就大幅降低系統(tǒng)部署的復雜度平夜、并提高資源使用的靈活性)。

非結(jié)構(gòu)化(NOSQL)數(shù)據(jù)存儲【7】- 文獻是由Rick Cattell撰寫的論文卸亮,論文討論了可擴展的結(jié)構(gòu)化數(shù)據(jù)的忽妒、非結(jié)構(gòu)化的(包括基于鍵值對的、基于文檔的和面向列的)數(shù)據(jù)存儲方(注:NOSQL是支撐大數(shù)據(jù)應用的關鍵所在兼贸。事實上段直,將NOSQL翻譯為“非結(jié)構(gòu)化”不甚準確,因為NOSQL更為常見的解釋是:Not Only SQL(不僅僅是結(jié)構(gòu)化)溶诞,換句話說鸯檬,NOSQL并不是站在結(jié)構(gòu)化SQL的對立面,而是既可包括結(jié)構(gòu)化數(shù)據(jù)螺垢,也可包括非結(jié)構(gòu)化數(shù)據(jù))喧务。

NoSQL學位論文【8】-該文獻是德國斯圖加特傳媒大學Christof Strauch撰寫的學位論文,該論文對分布式系統(tǒng)和第一代非結(jié)構(gòu)化系統(tǒng)提供了非常系統(tǒng)的背景知識介紹枉圃。

大規(guī)模數(shù)據(jù)管理【9】-文獻是加拿大阿爾伯塔大學的研究人員撰寫的一篇綜述功茴,討論了大數(shù)據(jù)應用程序的大規(guī)模數(shù)據(jù)管理系統(tǒng),傳統(tǒng)的數(shù)據(jù)庫供應商與新興的互聯(lián)網(wǎng)企業(yè)孽亲,它們對大數(shù)據(jù)管理需求是不同的扔役。文章的討論范圍涵蓋很廣曹步,數(shù)據(jù)模型、系統(tǒng)結(jié)構(gòu)及一致性模型,皆有涉及突颊。

最終一致性(Eventual Consistency)【10】:論文討論了分布式系統(tǒng)中的各種不同的一致性模型。(注:原文給出的鏈接可能有誤纹份,因為根據(jù)所提供的鏈接下載而來的論文是關于“MapReduce中日志處理的Join算法”的綜述文章疗锐,與“最終一致性”的討論議題無關。這里推薦2篇新的相關論文:(1)綜述文章:數(shù)據(jù)庫最終一致性:最新的進展【10】new1搔耕;(2)微軟研究人員2013年發(fā)表于SIGMOD的文章:“最終一致性的反思(Rethinking Eventual Consistency)【10】new2”隙袁。)

CAP理論【11】-文獻以“CAP理論十二年回顧:"規(guī)則"已經(jīng)變了”為題,探討了CAP理論及其演化弃榨,是篇非常不錯的介紹CAP理論的基礎性論文(注:論文作者Eric Brewer是加州大學伯克利分校的知名計算機科學學者菩收。該文首發(fā)于《Computer》雜志,隨后又被InfoQ和IEEE再次發(fā)表鲸睛。CAP理論斷言娜饵,任何基于網(wǎng)絡的數(shù)據(jù)共享系統(tǒng),最多只能滿足數(shù)據(jù)一致性(Consistency官辈,C)箱舞、可用性(Availability遍坟,A)、分區(qū)(Partition晴股,P)容忍性這三要素中的兩個要素愿伴。但通過顯式處理分區(qū),系統(tǒng)設計師可做到優(yōu)化數(shù)據(jù)的一致性和可用性电湘,進而取得三者之間的妥協(xié)與平衡)隔节。

在過去,在大規(guī)模數(shù)據(jù)處理上寂呛,傳統(tǒng)的并行數(shù)據(jù)庫管理系統(tǒng)(DBMS)和基于Map Reduce(映射-規(guī)約怎诫,以下簡稱MR)的批處理范式之間,曾發(fā)生激烈辯論贷痪,各持己見幻妓。并行數(shù)據(jù)庫管理系統(tǒng)的支持者【12】(注:由耶魯大學、微軟和麻省理工學院的研究人員于2009年發(fā)表在SIGMOD的一篇文章)和另外一篇文獻【13】(注:2010年發(fā)表于《美國計算機學會通訊》上的論文:“MapReduce和并行數(shù)據(jù)庫管理系統(tǒng)劫拢,是朋友還是敵人肉津?”),被MR的擁躉者【14】(注:發(fā)表于美國計算機學會通訊的論文:MapReduce:一個彈性的數(shù)據(jù)處理工具)狠狠地給批駁了一番尚镰。

然而阀圾,令人諷刺的是,從那時起狗唉,Hadoop社區(qū)開始引入無共享的(Shared-Nothing)的MPP(大規(guī)模并行處理)風格的大數(shù)據(jù)處理模式初烘,文獻“Hadoop上的SQL【15】”,便是例證分俯。要知道肾筐,MPP是并行數(shù)據(jù)庫管理系統(tǒng)(DBMS)的靈魂,這樣缸剪,Map Reduce繞了一大圈吗铐,又似回到它當初離開的地方。


文件系統(tǒng)層

由于文件系統(tǒng)層關注的焦點杏节,開始向“低延時處理”方向轉(zhuǎn)移唬渗,所以傳統(tǒng)基于磁盤存儲的文件系統(tǒng),也開始向基于內(nèi)存計算的文件系統(tǒng)轉(zhuǎn)變—— 這樣做奋渔,會大大降低I / O操作和磁盤序列化帶來的訪問開銷镊逝。Tachyon和 SparkRDD【16】就是朝這個方向演化的范例(注:這里RDD指的是彈性分布式數(shù)據(jù)集(Resilient Distributed Datasets),它是一種高度受限的共享內(nèi)存模型嫉鲸,文獻【16】由伯克利大學加州分校的Matei Zaharia等撰寫的撑蒜,他們提出了一種面向內(nèi)存集群運算的容錯抽象模型)。

Google文件系統(tǒng)(GFS)【17】-該文獻是分布式文件系統(tǒng)的奠基之作,著名的Hadoop分布式文件系統(tǒng)(HDFS)座菠,亦脫胎于GFS狸眼,基本上可視為GFS的一個簡化實現(xiàn)版(注:文獻【17】提出了一個可擴展的分布式文件系統(tǒng)GFS,可用于大型分布式數(shù)據(jù)密集型應用浴滴。文獻認為拓萌,組件故障是常態(tài)而不是異常。其所提出的GFS巡莹,著眼在幾個重要的目標司志,比如性能、可伸縮性降宅、可靠性和可用性。GFS的新穎之處囚霸,并不在于它采用了多么令人驚艷的技術(shù)腰根,而在于它能利用所提出的方案,采用廉價的商用機器拓型,來構(gòu)建高效的分布式文件系統(tǒng)额嘿。有用的創(chuàng)新,才是真的創(chuàng)新劣挫,GFS做到了2嵫)。

Hadoop 文件系統(tǒng)【18】-該文獻由雅虎公司的計算機科學家Konstantin Shvachko等人聯(lián)合撰寫的压固,論文給出了HDFS的進化歷史背景及其架構(gòu)的設計內(nèi)涵球拦,是了解Hadoop技術(shù)的經(jīng)典之作。

Ceph文件系統(tǒng)【19】-Ceph是HDFS有力的替代者【20】(注:Ceph文件系統(tǒng)是加州大學圣克魯茲分校(USSC)博士生Sage Weil博士期間的一項有關存儲系統(tǒng)的研究項目帐我。初出茅廬坎炼,略有小成。之后拦键,在開源社區(qū)的推動下谣光,Ceph逐漸羽翼漸豐,風云叱咤芬为,功成名就萄金,逐漸發(fā)展成為一個 Linux系統(tǒng)下 PB級分布式文件系統(tǒng)。文獻【19】是Weil本人在2006年頂級會議OSDI發(fā)表的有關Ceph的開山論文媚朦。文獻【20】則是Weil率領他的一幫小伙伴們再次發(fā)文強調(diào)氧敢,Ceph是HDFS強有力的替代者)。

Tachyon【21】–是一個高容錯的分布式內(nèi)存文件系統(tǒng)莲镣,其設計的核心內(nèi)涵是福稳,要滿足當下“低延遲”的數(shù)據(jù)處理要求(注:Tachyon是在內(nèi)存中處理緩存文件,允許文件以訪問內(nèi)存的速度在集群框架中進行可靠的共享瑞侮,類似于Spark的圆。Tachyon的吞吐量比HDFS高出100倍鼓拧。Spark框架雖然也提供了強大的內(nèi)存計算能力,但其沒有提供內(nèi)存文件的存儲管理能力越妈,而Tachyon則彌補了Spark的不足之處季俩。文獻【21】是伯克利大學加州分校和麻省理工學院的研究者聯(lián)合撰寫的,發(fā)表在2014年的SoCC國際會議上梅掠,論文一作UC Berkeley AMP實驗室博士生李浩源酌住,他亦是Spark核心開發(fā)人員之一)。


文件系統(tǒng)的演化歷程阎抒,其實也見證了文件格式和壓縮技術(shù)的發(fā)展歷程酪我。下面的參考文獻,可以讓你了解到且叁,“面向行”或“面向列”存儲格式各自的優(yōu)缺點都哭,并且還可讓你了然文件存儲技術(shù)發(fā)展的新趨勢——嵌套式的面向列的存儲格式這種存儲格式可極大提高大數(shù)據(jù)的處理效率逞带。

當前欺矫,在文件系統(tǒng)階段,數(shù)據(jù)管理的最大挑戰(zhàn)之一就是展氓,如何處理大數(shù)據(jù)中的數(shù)據(jù)冗余穆趴。糾刪碼(Erasure code)是很有創(chuàng)意的冗余保護機制,它可以減少三倍的冗余副本遇汞,還不會影響數(shù)據(jù)的可恢復性與可用性未妹。

面向列存儲 vs. 面向列存儲【22】—該文獻是是2008年發(fā)表于SIGMOD的一篇論文,該文對數(shù)據(jù)的布局勺疼、壓縮及物化(materialization)策略都做了很不錯的綜述教寂。

RCFile【23】-這是由Facebook數(shù)據(jù)基礎設施小組和俄亥俄州立大學的華人學者共同提出的文件存儲格式,他們走了一個“中庸之道”执庐,充分吸取面向列和面向行存儲模式的優(yōu)點酪耕,揚長避短,提出了一種混合的數(shù)據(jù)存儲結(jié)構(gòu)PAX(注:目前這種以行/列混合存儲技術(shù)已成功應用于 Facebook 等國內(nèi)外大型互聯(lián)網(wǎng)企業(yè)的生產(chǎn)性運行體系)轨淌。

Parquet【24】- 這是一種面向行的存儲格式迂烁,其設計理念源于谷歌Dremel論文(注:Parquet主要用于Hadoop 的生態(tài)系統(tǒng)中。文獻【24】是JulienDem在Github發(fā)表的一篇博客文章)递鹉。

ORCFile【25】–這是一種被Hive(一種基于Hadoop的數(shù)據(jù)倉庫工具)采用的盟步、面向列存儲的改進版存儲格式(注:文獻【25】是2014年發(fā)表于頂會SIGMOD的一篇學術(shù)論文)。

壓縮技術(shù)【26】-這是是一篇闡述在Hadoop生態(tài)系統(tǒng)下的常見壓縮算法的綜述性文章躏结,文章對常見的壓縮算法和其適用場景以及它們的優(yōu)缺點却盘,做了非常不錯的歸納總結(jié)。

糾刪碼技術(shù)(Erasure code)【27】-這是一篇是田納西大學EECS系教授James Plank撰寫的、有關存儲系統(tǒng)糾刪碼技術(shù)的入門級的文獻黄橘。有關糾刪碼改進技術(shù)的闡述兆览,讀者可參閱來自南加州大學和Facebook的7名作者共同完成的論文《XORing Elephants: 面向大數(shù)據(jù)的新型糾刪碼技術(shù)【28】》(注:文獻【28】的作者開發(fā)了糾刪碼家族的新成員——基于XOR的本地副本存儲LRC,該技術(shù)是面向Hadoop生態(tài)系統(tǒng)的塞关,可顯著減少修復數(shù)據(jù)時的I/O操作和存儲開銷)抬探。


數(shù)據(jù)存儲層

寬泛地講,據(jù)對一致性(consistency)要求的強弱不同帆赢,分布式數(shù)據(jù)存儲策略小压,可分為ACID和BASE兩大陣營。ACID是指數(shù)據(jù)庫事務具有的四個特性原子性(Atomicity)椰于、一致性(Consistency)怠益、隔離性(Isolation)、持久性(Durability)廉羔。ACID中的一致性要求比較強溉痢,事務執(zhí)行的結(jié)果必須是使數(shù)據(jù)庫從一個一致性狀態(tài)變到另一個一致性狀態(tài)。而BASE對一致性要求較弱憋他,它的三個特征分別是:基本可用(Basically Available)、軟狀態(tài)/柔性事務(Soft-state髓削,即狀態(tài)可以有一段時間的不同步)竹挡、最終一致性(Eventual consistency)。BASE還進一步細分基于鍵值的立膛,基于文檔的和基于列和圖形的揪罕。細分的依據(jù)取決于底層架構(gòu)和所支持的數(shù)據(jù)結(jié)構(gòu)(注:BASE完全不同于ACID模型,它以犧牲強一致性宝泵,獲得基本可用性和柔性可靠性好啰,并要求達到最終一致性)。

在數(shù)據(jù)存儲層儿奶,還有很多類似的系統(tǒng)和某些系統(tǒng)的變種框往,這里,我僅僅列出較為出名的幾個闯捎。如漏掉某些重要系統(tǒng)椰弊,還請諒解。

BASE

鍵值存儲(Key Value Stores)

Dynamo【29】– 這是由亞馬遜工程師們設計的基于鍵值的高可用的分布式存儲系統(tǒng)(注:Dynamo放棄了數(shù)據(jù)建模的能力瓤鼻,所有的數(shù)據(jù)對象采用最簡單的Key-value模型存儲秉版,可簡單地將Dynamo理解為一個巨大的Map。Dynamo是犧牲了部分一致性茬祷,來換取整個系統(tǒng)的高可用性)清焕。

Cassandra【30】– 這是由Facebook工程師設計的一個離散的分布式結(jié)構(gòu)化存儲系統(tǒng),受亞馬遜的Dynamo啟發(fā),Cassandra采用的是面向多維的鍵值或面向列的數(shù)據(jù)存儲格式(注:Cassandra可用來管理分布在大量廉價服務器上的巨量結(jié)構(gòu)化數(shù)據(jù)秸妥,并同時提供沒有單點故障的高可用服務)滚停。

Voldemort【31】–這又是一個受亞馬遜的Dynamo啟發(fā)的分布式存儲作品,由全球最大的職業(yè)社交網(wǎng)站LinkedIn的工程師們開發(fā)而成(注:Voldemort筛峭,這個在《哈利·波特》中常被譯作“伏地魔”的開源數(shù)據(jù)庫铐刘,支撐起了LinkedIn的多種數(shù)據(jù)分析平臺)。

面向列的存儲(Column Oriented Stores)

BigTable【32】–這是一篇非常經(jīng)典的學術(shù)論文影晓,闡述了面向列的分布式的數(shù)據(jù)存儲方案镰吵,由谷歌榮譽出品。(注:Bigtable是一個基于Google文件系統(tǒng)的分布式數(shù)據(jù)存儲系統(tǒng)挂签,是為谷歌打拼天下的“三駕馬車”之一疤祭,另外兩駕馬車分別是分布式鎖服務系統(tǒng)Chubby和下文將提到MapReduce)。

HBase【33】–目前還沒有有關Hbase的定義性論文饵婆,這里的文獻提供了一個有關HBase技術(shù)的概述性文檔(注:Hbase是一個分布式的勺馆、面向列的開源數(shù)據(jù)庫。其設計理念源自谷歌的BigTable侨核,用Java語言編寫而成草穆。文獻【33】是一個有關Hbase的幻燈片文檔)。

Hypertable【34】-文獻是一個有關“Hypertable”的技術(shù)白皮書搓译,對該數(shù)據(jù)存儲結(jié)構(gòu)做了較為詳細的介紹(注:Hypertable也是一個開源悲柱、高性能、可伸縮的數(shù)據(jù)庫些己,它采用與Google的Bigtable類似的模型)豌鸡。

面向文檔的存儲(Document Oriented Stores)

CouchDB【35】– 這是一款面向文檔的、開源數(shù)據(jù)存儲管理系統(tǒng)(注:文獻【35】是一本Apache CouchDB的400多頁的官方文檔)段标。

MongoDB【36】–是目前非常流行的一種非關系型(NoSQL)數(shù)據(jù)庫(注:文獻【36】是一個有關MongoDB的白皮書涯冠,對MongoDB結(jié)構(gòu)做了很不錯的介紹)。

面向圖(Graph)的存儲

Neo4j【37】–文獻是Ian Robinson等撰寫的圖書《Graph Databases(圖數(shù)據(jù)庫)》(注:Neo4j是一款目前最為流行的高性能NoSQL 圖數(shù)據(jù)庫逼庞,它使用圖來描述數(shù)據(jù)模型蛇更,把數(shù)據(jù)保存為圖中的節(jié)點以及節(jié)點之間的關系。這是最流行的圖數(shù)據(jù)庫)往堡。

Titan【38】–文獻是有關Titan的在線文檔(Titan是一款Apache許可證框架下的分布式的開源圖數(shù)據(jù)庫械荷,特別為存儲和處理大規(guī)模圖而做了大量優(yōu)化)。

ACID

我注意到虑灰,現(xiàn)在很多開源社區(qū)正在悄悄發(fā)生變化吨瞎,它們開始“亦步亦趨”地跟隨谷歌的腳步。這也難怪穆咐,谷歌太牛颤诀,跟牛人混字旭,近牛者牛 ——

下面4篇文獻,有3篇來自于谷歌的“神來之筆”崖叫,他們解決了全球分布一致的數(shù)據(jù)存儲問題遗淳。

Megastore【39】–這是一個構(gòu)建于BigTable之上的、高可用的分布式存儲系統(tǒng)心傀,文獻為有關Megastore的技術(shù)白皮書(注:Megastore在被谷歌使用了數(shù)年之后屈暗,相關技術(shù)信息才在2001年公布。CSDN網(wǎng)站亦有文獻【39】的中文解讀:Google Megastore分布式存儲技術(shù)全揭秘)脂男。

Spanner【40】–這是由谷歌研發(fā)的养叛、可擴展的、全球分布式的宰翅、同步復制數(shù)據(jù)庫弃甥,支持SQL查詢訪問。(注:Spanner的“老爹”是Big Table汁讼,可以說淆攻,沒有“大表”這個爹,就不可能有這個強有力的“扳手” 兒子嘿架。它是第一個把數(shù)據(jù)分布在全球范圍內(nèi)的系統(tǒng)瓶珊,并且支持外部一致性的分布式事務)。

MESA【41】–亦是由谷歌研發(fā)的耸彪、跨地域復制(geo-replicated)艰毒、高可用的、可容錯的搜囱、可擴展的近實時數(shù)據(jù)倉庫系統(tǒng)(注:在2014年的VLDB大會上,谷歌公布了他們的分析型數(shù)據(jù)倉庫系統(tǒng)MESA柑土,該系統(tǒng)主要用于存儲Google互聯(lián)網(wǎng)廣告業(yè)務相關的關鍵衡量數(shù)據(jù)蜀肘。文獻【41】是VLDB的會議論文)。

CockroachDB【42】–該系統(tǒng)是由Google前工程師Spencer Kimball領導開發(fā)的Spanner的開源版本(注:這個項目的綽號是“螳螂(Cockroach)”稽屏,其寓意是“活得長久”扮宠,因為蟑螂是地球上生命力最強的生物之一,即使被砍下頭顱狐榔,依然還能存活好幾天坛增!文獻【42】是代碼托管網(wǎng)站GitHub上對Cockroach的說明性文檔)。


資源管理器層(Resource Managers)

第一代Hadoop的生態(tài)系統(tǒng)薄腻,其資源管理是以整體單一的調(diào)度器起家的收捣,其代表作品為YARN。而當前的調(diào)度器則是朝著分層調(diào)度的方向演進(Mesos則是這個方向的代表作)庵楷,這種分層的調(diào)度方式罢艾,可以管理不同類型的計算工作負載楣颠,從而可獲取更高的資源利用率和調(diào)度效率。

YARN【43】– 這是新一代的MapReduce計算框架咐蚯,簡稱MRv2童漩,它是在第一代MapReduce的基礎上演變而來的(注:MRv2的設計初衷是,為了解決第一代Hadoop系統(tǒng)擴展性差春锋、不支持多計算框架等問題矫膨。對國內(nèi)用戶而言,原文獻下載鏈接可能會產(chǎn)生404錯誤期奔,這里提供一個新文獻:由2011年剝離自雅虎的Hadoop初創(chuàng)公司Hortonworks給出的官方文獻【43】new侧馅,閱讀該文獻也可對YARN有較為深入的理解。CSDN亦有對YARN詳細解讀的文章:更快能庆、更強——解析Hadoop新一代MapReduce框架Yarn)施禾。

Mesos【44】–這是一個開源的計算框架,可對多集群中的資源做彈性管理(注:Mesos誕生于UC Berkeley的一個研究項目搁胆,現(xiàn)為Apache旗下的一個開源項目弥搞,它是一個全局資源調(diào)度器。目前Twitter渠旁、Apple等國外大公司正在使用Mesos管理集群資源攀例,國內(nèi)用戶有豆瓣等。文獻【44】是加州大學伯克利分校的研究人員發(fā)表于著名會議NSDI上的學術(shù)論文)顾腊。

這些計算框架和調(diào)度器之間是松散耦合的粤铭,調(diào)度器的主要功能就是基于一定的調(diào)度策略和調(diào)度配置,完成作業(yè)調(diào)度杂靶,以達到工作負載均衡梆惯,使有限的資源有較高的利用率。

調(diào)度器(Schedulers)

作業(yè)調(diào)度器吗垮,通常以插件的方式加載于計算框架之上垛吗,常見的作業(yè)調(diào)度器有4種:

計算能力調(diào)度器【45】(Capacity Scheduler)-該文獻是一個關于計算能力調(diào)度器的指南式文檔,介紹了計算能力調(diào)度器的不同特性烁登。

公平調(diào)度器【46】(FairShare Scheduler)?-該文獻是Hadoop的公平調(diào)度器設計文檔怯屉,介紹了公平調(diào)度的各項特征(注:公平調(diào)度是一種賦予作業(yè)資源的方法,它提供了一個基于任務數(shù)的負載均衡機制饵沧,其目的是讓所有的作業(yè)隨著時間的推移锨络,都能平均的獲取等同的共享資源)。

延遲調(diào)度【47】(Delayed Scheduling)?–該文獻是加州大學伯克利分校的一份技術(shù)報告狼牺,報告介紹了公平調(diào)度器的延遲調(diào)度策略羡儿。

公平與能力調(diào)度器【48】(Fair & Capacity schedulers?)–該文獻是一篇關于云環(huán)境下的Hadoop調(diào)度器的綜述性論文。

協(xié)調(diào)器(Coordination)

在分布式數(shù)據(jù)系統(tǒng)中锁右,協(xié)調(diào)器主要用于協(xié)調(diào)服務和進行狀態(tài)管理失受。

Paxos【49】–文獻【49】是經(jīng)典論文“The Part-TimeParliament(兼職的議會)【50】” 的簡化版讶泰。

注:兩篇文獻的作者均是萊斯利·蘭伯特(LeslieLamport),此君是個傳奇人物拂到,科技論文寫作常用編輯器LaTex痪署,其中“La”就是來自其姓“Lamport”的前兩個字母。Lamport目前是微軟研究院首席研究員兄旬,2013年狼犯,因其在分布式計算理論領域做出的杰出貢獻,榮獲計算機領域最高獎——圖靈獎领铐。牛人的故事特別多悯森,Lamport亦是這樣。就這兩篇文獻而言绪撵,Lamport的奇聞軼事都值得說道說道瓢姻。光看其經(jīng)典論文題目“The Part-TimeParliament(兼職的議會)【50】”,或許就讓讀者“一頭霧水”音诈,這是一篇計算機科學領域的論文嗎幻碱?和讀者一樣感覺的可能還有期刊編輯。其實细溅,早在1990年時褥傍,Lamport就提出Paxos算法,他虛構(gòu)了一個希臘城邦Paxos及其議會喇聊,以此來形象比喻說明該算法的流程恍风。論文投出后,期刊編輯建議Lamport誓篱,將論文用更加嚴謹?shù)臄?shù)學語言重新進行描述一下朋贬。可Lamport則認為窜骄,我的幽默兄世,你不懂!拒絕修改啊研。時隔八年之后的 1998年,Paxos算法才被伯樂期刊《ACM Transactions on Computer Systems》發(fā)表滔以。由于Paxos算法本身過于復雜榨崩,且同行不理解自己的“幽默”卿吐,于是,2001年Lamport就用簡易語言撰寫這篇文章沟娱,重新發(fā)表了該論文的簡化版【49】,即“Paxosmade simple(Paxos變得簡單)”腕柜。簡化版的摘要更簡單济似,就一句話:“Paxos算法矫废,用簡易英語說明之,很簡單”砰蠢,如果去掉中間的那個無故緊要的定語從句蓖扑,就是“Paxos算法,很簡單”台舱。弄得你都來不及做深思狀律杠,摘要就完了。這…竞惋,這…柜去,完全顛覆了我們常用的“三段論式(提問題、解問題拆宛、給結(jié)論)”的論文摘要寫法啊嗓奢。

后來,隨著分布式系統(tǒng)的不斷發(fā)展壯大浑厚,Paxos算法開始大顯神威股耽。Google的Chubby和Apache的Zookeeper,都是用Paxos作為其理論基礎實現(xiàn)的瞻颂。就這樣豺谈,Paxos終于登上大雅之堂,它也為Lamport在2013年獲得圖靈獎贡这,立下汗馬功勞茬末。從Lamport發(fā)表Paxos算法的小案例,我們可以看出:彪悍的人生盖矫,不需要解釋丽惭。牛逼的論文,就可以任性辈双!

Chubby【51】– 該文獻的作者是谷歌工程師Mike Burrows责掏。Chubby系統(tǒng)本質(zhì)上就是前文提到的Paxos的一個實現(xiàn)版本,主要用于谷歌分布式鎖服務湃望。(注:原文鏈接會出現(xiàn)404錯誤换衬,CSDN網(wǎng)站有Chubby論文的下載鏈接)。

Zookeeper【52】–這是Apache Hadoop框架下的Chubby開源版本证芭。它不僅僅提供簡單地上鎖服務瞳浦,而事實上,它還是一個通用的分布式協(xié)調(diào)器废士,其設計靈感來自谷歌的Chubby(注:眾所周知叫潦,分布式協(xié)調(diào)服務開發(fā)困難很大,分布式系統(tǒng)中的多進程間很容易發(fā)生條件競爭和死鎖官硝。ZooKeeper的開發(fā)動力就是減輕分布式應用開發(fā)的困難矗蕊,使用戶不必從零開始構(gòu)建協(xié)調(diào)服務)短蜕。


計算框架(Computational

Frameworks)運行時計算框架,可為不同種類的計算傻咖,提供運行時(runtime)環(huán)境朋魔。最常用的是運行時計算框架是Spark和Flink。

Spark【53】–因Spark日益普及没龙,加之其具備良好的多計算環(huán)境的適用性铺厨,它已對傳統(tǒng)的Hadoop生態(tài)環(huán)境,形成了嚴峻的挑戰(zhàn)(注:Spark是一個基于內(nèi)存計算的開源的集群計算系統(tǒng)硬纤,其目的在于解滓,讓數(shù)據(jù)分析更加快速。Spark是由加州大學伯克利分校的AMP實驗室采用Scala語言開發(fā)而成筝家。Spark的內(nèi)存計算框架洼裤,適合各種迭代算法和交互式數(shù)據(jù)分析,能夠提升大數(shù)據(jù)處理的實時性和準確性溪王,現(xiàn)已逐漸獲得很多企業(yè)的支持腮鞍,如阿里巴巴、百度莹菱、網(wǎng)易移国、英特爾等公司均是其用戶)。

Flink【54】–這是一個非常類似于Spark的計算框架道伟,但在迭代式數(shù)據(jù)處理上迹缀,比Spark更給力(注:目前大數(shù)據(jù)分析引擎Flink,已升級成為Apache頂級項目)蜜徽。

Spark和Flink都屬于基礎性的大數(shù)據(jù)處理引擎祝懂。具體的計算框架,大體上拘鞋,可根據(jù)采用的模型及延遲的處理不同砚蓬,來進行分門別類。

批處理(Batch)

MapReduce【55】– 這是谷歌有關MapReduce的最早的學術(shù)論文(注:對于國內(nèi)用戶盆色,點擊原文獻鏈接可能會產(chǎn)生404錯誤灰蛙,CSDN網(wǎng)站有MapReduce論文的下載鏈接)。

MapReduce綜述【56】–這是一篇過時隔躲、但依然值得一讀的缕允、有關MapReduce計算框架的綜述性文章。

迭代式(BSP)

Pregel【57】–這又是一篇谷歌出品的大手筆論文蹭越,主要描述了大規(guī)模圖處理方法(注:Pregel是一種面向圖算法的分布式編程框架,其采用的是迭代式的計算模型教届。它被稱之為Google后Hadoop時代的新“三駕馬車”之一响鹃。另外兩駕馬車分別是:“交互式”大數(shù)據(jù)分析系統(tǒng)Dremel和網(wǎng)絡搜索引擎Caffeine)驾霜。

Giraph【58】–?該系統(tǒng)建模于谷歌的Pregel,可視為Pregel的開源版本买置,它是一個基于 Hadoop架構(gòu)的粪糙、可擴展的分布式迭代圖處理系統(tǒng)。

GraphX【59】–這是一個同時采用圖并行計算和數(shù)據(jù)并行的計算框架(注:GraphX最先是加州大學伯克利分校AMPLab實驗室的一個分布式圖計算框架項目忿项,后來整合到Spark中蓉冈,成為其中的一個核心組件。GraphX最大的貢獻在于轩触,在Spark之上提供一棧式數(shù)據(jù)解決方案寞酿,可方便高效地完成圖計算的一整套流水作業(yè))。

Hama【60】–?是一個構(gòu)建Hadoop之上的基于BSP模型的分布式計算引擎(注:Hama的運行環(huán)境需要關聯(lián)Zookeeper脱柱、HBase伐弹、HDFS 組件。Hama中最關鍵的技術(shù)榨为,就是采用了BSP模型(Bulk SynchronousParallel惨好,即整體同步并行計算模型,又名大同步模型)随闺。BSP模型是哈佛大學的計算機科學家Viliant和牛津大學的BillMcColl在1990年聯(lián)合提出的日川,他們希望能像馮·諾伊曼體系結(jié)構(gòu)那樣,架起計算機程序語言和體系結(jié)構(gòu)間的橋梁矩乐,故又稱作橋模型(Bridge Model)龄句。

開源圖處理系統(tǒng)【61】(Open source graphprocessing?)-這是滑鐵盧大學的研究人員撰寫的綜述性文獻,文獻【61】對類Pregel(Pregel-like)的绰精、基于BSP模型的圖處理系統(tǒng)進行了實驗性的比較撒璧。

流式(Streaming)

流式處理【62】(Stream?Processing)- 這是一篇非常棒的、有關面向大數(shù)據(jù)實時處理系統(tǒng)的綜述性文章笨使。

Storm【63】– 這是一個大數(shù)據(jù)實時處理系統(tǒng)(注:Storm有時也被人們稱為實時處理領域的Hadoop卿樱,它大大簡化了面向龐大規(guī)模數(shù)據(jù)流的處理機制,從而在實時處理領域扮演著重要角色硫椰。文獻【63】是Twitter工程師們在2014年發(fā)表于SIGMOD上的學術(shù)論文)繁调。

Samza【64】-這是一款由Linkedin公司開發(fā)的分布式的流式數(shù)據(jù)處理框架(注:所謂流式數(shù)據(jù),是指要在處理單位內(nèi)得到的數(shù)據(jù)靶草,這種方式更注重于實時性蹄胰,流式數(shù)據(jù)有時也稱為快數(shù)據(jù))。

Spark流【65】(Spark Streaming)?-該文獻是加州大學伯克利分校的研究人員于2013年在著名操作系統(tǒng)會議SOSP上發(fā)表的學術(shù)論文奕翔,論文題目是《離散流:容錯大規(guī)模流式計算》(注:這里的離散流是指一種微批處理構(gòu)架裕寨,其橋接了傳統(tǒng)的批處理和交互式處理。Spark Streaming是Spark核心API的一個擴展,它并不會像Storm那樣逐個處理數(shù)據(jù)流宾袜,而是在處理前捻艳,按時間間隔預先將其切分為很多小段的批處理作業(yè))。

交互式(Interactive)

Dremel【66】–這又是一篇由谷歌出品的經(jīng)典論文庆猫,論文描述了如何處理“交互式”大數(shù)據(jù)的工作負載认轨。該論文是多個基于Hadoop的開源SQL系統(tǒng)的理論基礎(注:文獻【66】寫于2006年,“捂”藏4年之后月培,于2010年公布于眾嘁字。文章針對MR交互式查詢能力不足,提出了Dremel杉畜,闡述了Dremel的設計原理纪蜒,并提供了部分測試報告)。

Impala【67】–這是一個大規(guī)模并行處理(MPP)式 SQL 大數(shù)據(jù)分析引擎(注:Impala像Dremel一樣寻行,其借鑒了MPP(Massively Parallel Processing霍掺,大規(guī)模并行處理)并行數(shù)據(jù)庫的思想,拋棄了MapReduce這個不太適合做SQL查詢的范式拌蜘,從而讓Hadoop支持處理交互式的工作負載杆烁。本文作者阿尼爾?馬丹在LinkedIn上的博客原文,在此處的“MPI”系“MPP”筆誤简卧,讀者可參閱文獻【67】發(fā)現(xiàn)此問題)兔魂。

Drill【68】–這是谷歌Dremel的開源版本(注:Drill是一個低延遲的、能對海量數(shù)據(jù)(包括結(jié)構(gòu)化举娩、半結(jié)構(gòu)化及嵌套數(shù)據(jù))實施交互式查詢的分布式數(shù)據(jù)引擎)析校。

Shark【69】–該文獻是2012年發(fā)表于SIGMOD的一篇學術(shù)論文,論文對Spark生態(tài)系統(tǒng)上的數(shù)據(jù)分析能力铜涉,給出了很深入的介紹(注:Shark是由加州伯克利大學AMPLab開發(fā)的大數(shù)據(jù)分析系統(tǒng)智玻。Shark即“Hive onSpark”的含義,本質(zhì)上是通過Hive的HQL解析芙代,把HQL翻譯成Spark上的RDD操作吊奢。然后通過Hive的元數(shù)據(jù)獲,取數(shù)據(jù)庫里的表信息纹烹。HDFS上的數(shù)據(jù)和文件页滚,最后會由Shark獲取,并放到Spark上運算铺呵。Shark基于Scala語言的算子推導裹驰,可實現(xiàn)良好的容錯機制,對執(zhí)行失敗的長/短任務片挂,均能從上一個“快照點(Snapshot)”進行快速恢復)幻林。

Shark【70】–這是另外一篇很棒的于2013年發(fā)表在SIGMOD的學術(shù)論文贞盯,其深度解讀在Apache

Hive之上SQL訪問機制(注:這篇文獻描述了如何構(gòu)建在Spark上構(gòu)建SQL引擎——Shark。更重要的是沪饺,文章還討論了之前在Hadoop/MapReduce上實施SQL查詢?nèi)绱酥脑颍?/p>

Dryad【71】– 文獻討論了使用有向無環(huán)圖(DirectedAcyclineGraph邻悬,DAG)來配置和執(zhí)行并行數(shù)據(jù)流水線的方法(注:Dryad是一個通用的粗顆粒度的分布式計算和資源調(diào)度引擎,其核心特性之一随闽,就是允許用戶自己構(gòu)建DAG調(diào)度拓撲圖。文獻【71】是微軟于2007年在EuroSys國際會議上發(fā)布的學術(shù)論文)肝谭。

Tez【72】–其核心思想來源于Dryad掘宪,可視為利用Yarn(即MRv2)對Dryad的開源實(注:Apache Tez是基于Hadoop Yarn之上的DAG計算框架。由Hadoop的二東家Hortonworks開發(fā)并提供主要技術(shù)支持攘烛。文獻【72】是一個關于Tez的簡要介紹文檔)魏滚。

BlinkDB【73】–可在抽樣數(shù)據(jù)上實現(xiàn)交互式查詢,其呈現(xiàn)出的查詢結(jié)果坟漱,附帶有誤差標識鼠次。(注:BlinkDB 是一個用于在海量數(shù)據(jù)上運行交互式 SQL 查詢的大規(guī)模并行查詢引擎。BlinkDB允許用戶通過適當降低數(shù)據(jù)精度芋齿,對數(shù)據(jù)進行先采樣后計算腥寇,其通過其獨特的優(yōu)化技術(shù),實現(xiàn)了比Hive快百倍的交互式查詢速度觅捆,而查詢進度誤差僅降低2~10%赦役。

BlinkDB采用的策略,與大數(shù)據(jù)布道師栅炒,維克托·邁爾-舍恩伯格在其著作《大數(shù)據(jù)時代》中提到的觀點掂摔,“要全體,不要抽樣”赢赊,恰恰相反乙漓。基于常識释移,我們知道:多了叭披,你就快不了。好了秀鞭,你就省不了趋观。對大數(shù)據(jù)處理而言,也是這樣锋边。英特爾中國研究院院長吳甘沙認為皱坛,大體量、精確性和速度快豆巨,三者不可兼得剩辟,頂多取其二。如果要實現(xiàn)在大體量數(shù)據(jù)上的“快”,就得想辦法減少數(shù)據(jù)贩猎,而減少數(shù)據(jù)熊户,勢必要適度地降低分析精確性。

事實上吭服,大數(shù)據(jù)并不見得越“大”越好嚷堡,有時候一味的追求“大”是沒有必要的。例如艇棕,在醫(yī)療健康領域蝌戒,如果來監(jiān)控某個病人的體溫,可穿戴設備可以一秒鐘采集一次數(shù)據(jù)沼琉,也可以一分鐘采集一次數(shù)據(jù)北苟,前者采集的數(shù)據(jù)總量比后者“大”60倍,但就監(jiān)控病人身體狀況而言打瘪,意義并不是太大友鼻。雖然后者的數(shù)據(jù)忽略了人體在一分鐘內(nèi)的變化,監(jiān)控的精度有所下降闺骚,但對于完成監(jiān)控病人健康狀態(tài)這一目的而言彩扔,是可以接受的。)

實時系統(tǒng)(RealTime)

Druid【74】–這是一個開源的分布式實時數(shù)據(jù)分析和存儲系統(tǒng)葛碧,旨在快速處理大規(guī)模的數(shù)據(jù)借杰,并能做到快速查詢和分析(注:文獻【74】是2014年Druid創(chuàng)始人Eric Tschetter和中國工程師楊仿今等人在SIGMOD上發(fā)表的一篇論文)。

Pinot【75】–這是由LinkedIn公司出品的一個開源的进泼、實時分布式的 OLAP數(shù)據(jù)分析存儲系統(tǒng)蔗衡,非常類似于前面提到的Druid,LinkedIn 使用它實現(xiàn)低延遲可伸縮的實時分析乳绕。(注:文獻【75】是在GitHub上的有關Pinot的說明性文檔)绞惦。

數(shù)據(jù)分析層(Data Analysis)

數(shù)據(jù)分析層中的工具,涵蓋范圍很廣洋措,從諸如SQL的聲明式編程語言济蝉,到諸如Pig的過程化編程語言,均有涉及菠发。另一方面王滤,數(shù)據(jù)分析層中的庫也很豐富,可支持常見的數(shù)據(jù)挖掘和機器學習算法滓鸠,這些類庫可拿來即用雁乡,甚是方便。

工具(Tools)

Pig【76】–這是一篇有關Pig Latin非常不錯的綜述文章(注:Pig Latin原是一種兒童黑話糜俗,屬于是一種英語語言游戲踱稍,形式是在英語上加上一點規(guī)則使發(fā)音改變曲饱,讓大人們聽不懂,從而完成孩子們獨懂的交流珠月。文獻【76】是雅虎的工程師們于2008年發(fā)表在SIGMOD的一篇論文扩淀,論文的題目是“Pig Latin:并不是太老外的一種數(shù)據(jù)語言”,言外之意啤挎,他們發(fā)明了一種數(shù)據(jù)處理的“黑話”——Pig

Latin驻谆,一開始你可能不懂,等你熟悉了庆聘,就會發(fā)現(xiàn)這種數(shù)據(jù)查詢語言的樂趣所在)旺韭。

Pig【77】– 這是另外一篇由雅虎工程師們撰寫的有關使用Pig經(jīng)驗的論文,文章介紹了如果利用Pig在Map-Reduce上構(gòu)建一個高水準的數(shù)據(jù)流分析系統(tǒng)掏觉。

Hive【78】–該文獻是Facebook數(shù)據(jù)基礎設施研究小組撰寫的一篇學術(shù)論文,介紹了Hive的來龍去脈(注:Hive是一個建立于 Hadoop上的數(shù)據(jù)倉庫基礎構(gòu)架值漫。它用來進行數(shù)據(jù)的提取澳腹、轉(zhuǎn)化和加載(即Extract-Transform-Load,ETL)杨何,它是一種可以存儲酱塔、查詢和分析存儲在 Hadoop 中的大規(guī)模數(shù)據(jù)的機制)。

Hive【79】–該文獻是另外一篇有關Hive的值得一讀的好論文危虱。論文作者來自Facebook數(shù)據(jù)基礎設施研究小組羊娃,在這篇論文里,可以幫助讀者理解Hive的設計理念埃跷。

Phoenix【80】–它是HBase 的 SQL 驅(qū)動(注:Phoenix可將 SQL 查詢轉(zhuǎn)成 HBase 的掃描及相應的動作蕊玷。文獻【80】是關于在Hbase上部署SQL的幻燈片文檔)。

MapReduce上的連接(join)算法【81】–該文獻介紹了在Hadoop環(huán)境下的各種并行連接算法弥雹,并對它們的性能作出系統(tǒng)性評測垃帅。

MapReduce上的連接算法【82】–這是威斯康星大學和IBM研究團隊撰寫的綜述性文章,文章對在Map Reduce模型下的各種連接算法進行了綜合比較剪勿。

庫(Libraires)

MLlib【83】–這是在Spark計算框架中對常用的機器學習算法的實現(xiàn)庫贸诚,該庫還包括相關的測試和數(shù)據(jù)生成器(注:文獻【83】是MLlib的一個幻燈片說明文檔)。

SparkR【84】–這是AMPLab發(fā)布的一個R開發(fā)包厕吉,為Apache

Spark提供輕量級的前端(注:R是一種廣泛應用于統(tǒng)計分析酱固、繪圖的語言及操作環(huán)境。文獻【84】是有關SparkR的幻燈片文檔)头朱。

Mahout【85】–這是一個功能強大的數(shù)據(jù)挖掘工具运悲,是一個基于傳統(tǒng)Map Reduce的分布式機器學習框架(注:Mahout的中文含義就是“馭象之人”,而Hadoop的Logo正是一頭小黃象髓窜。很明顯扇苞,這個庫是幫助用戶用好Hadoop這頭難用的大象欺殿。文獻【85】是有關Mahout的圖書)。

數(shù)據(jù)集成層(Data Integration)

數(shù)據(jù)集成框架提供了良好的機制鳖敷,以協(xié)助高效地攝取和輸出大數(shù)據(jù)系統(tǒng)之間的數(shù)據(jù)脖苏。從業(yè)務流程線到元數(shù)據(jù)框架,數(shù)據(jù)集成層皆有涵蓋定踱,從而提供全方位的數(shù)據(jù)在整個生命周期的管理和治理棍潘。

攝入/消息傳遞(Ingest/Messaging)

Flume【86】–這是Apache旗下的一個分布式的、高可靠的崖媚、高可用的服務框架亦歉,可協(xié)助從分散式或集中式數(shù)據(jù)源采集、聚合和傳輸海量日志(注:文獻【86】是Apache網(wǎng)站上有關Flume的一篇博客文章)畅哑。

Sqoop【87】–該系統(tǒng)主要用來在Hadoop和關系數(shù)據(jù)庫中傳遞數(shù)據(jù)(注:Sqoop目前已成為Apache的頂級項目之一肴楷。通過Sqoop,可以方便地將數(shù)據(jù)從關系數(shù)據(jù)庫導入到HDFS荠呐,或反之亦可赛蔫。文獻【87】是有關Sqoop的幻燈片說明文檔)。

Kafka【88】–這是由LinkedIn開發(fā)的一個分布式消息系統(tǒng)(注:由Scala編寫而成的Kafka泥张,由于可水平擴展呵恢、吞吐率高等特性,得到廣泛應用媚创。文獻【88】是LindedIn的工程師們在2011年發(fā)表于NetDB的會議論文)渗钉。

ETL/工作流

ETL是數(shù)據(jù)抽取(Extract)钞钙、清洗(Cleaning)鳄橘、轉(zhuǎn)換(Transform)、裝載(Load)的過程芒炼,是構(gòu)建數(shù)據(jù)倉庫的重要一環(huán)挥唠。

Crunch【89】–這是Apache旗下的一套Java API函數(shù)庫,它能夠大大簡化編寫焕议、測試宝磨、運行MapReduce 處理工作流的程序(注:文獻【89】是有關Crunch的幻燈片解釋文檔)。

Falcon【90】–?這是Apache旗下的Falcon大數(shù)據(jù)管理框架盅安,可以幫助用戶自動遷移和處理大數(shù)據(jù)集合(注:文獻【90】是一份關于Falcon技術(shù)預覽報告)唤锉。

Cascading【91】–這是一個架構(gòu)在Hadoop上的API函數(shù)庫,用來創(chuàng)建復雜的可容錯的數(shù)據(jù)處理工作流(注:文獻【91】是關于Hadoop上的Cascading的概論和技術(shù)隨筆)别瞭。

Oozie【92】–是一個工作流引擎窿祥,用來協(xié)助Hadoop作業(yè)管理(注:Oozie字面含義是馴象之人,其寓意和Mahout一樣蝙寨,幫助用戶更好地搞定Hadoop這頭大象晒衩。文獻【92】是Apache網(wǎng)站上有關Oozie的官方文檔)嗤瞎。

元數(shù)據(jù)(Metadata)

HCatalog【93】–?它提供了面向Apache Hadoop的數(shù)據(jù)表和存儲管理服務(注:Apache

HCatalog提供一個共享的模式和數(shù)據(jù)類型的機制,它抽象出表听系,使用戶不必關心數(shù)據(jù)怎么存儲贝奇,并提供了可操作的跨數(shù)據(jù)處理工具。文獻【93】是Apache網(wǎng)站有關Hcatalog的官方說明文檔)靠胜。

序列化(Serialization)

Protocol Buffers【94】–由Google推廣的一種與語言無關的掉瞳、對結(jié)構(gòu)化數(shù)據(jù)進行序列化和反序列化的機制(注:Protocol Buffers可用于通訊協(xié)議、數(shù)據(jù)存儲等領域的語言及平臺無關浪漠、可擴展的序列化結(jié)構(gòu)數(shù)據(jù)格式陕习。文獻【94】是有關Protocol Buffers幻燈片文檔)。

Avro【95】–這是一個建模于Protocol Buffers之上的址愿、Hadoop生態(tài)系統(tǒng)中的子項目(注:Avro本身既是一個序列化框架该镣,同時也實現(xiàn)了RPC的功能)。

操作框架(Operational Frameworks)

最后响谓,我們還需要一個操作性框架拌牲,來構(gòu)建一套衡量標準和測試基準,從而來評價各種計算框架的性能優(yōu)劣歌粥。在這個操作性框架中,還需要包括性能優(yōu)化工具拍埠,借助它來平衡工作負載失驶。

監(jiān)測管理框架(Monitoring Frameworks)

OpenTSDB【96】–這是構(gòu)建于HBase之上的實時性能評測系統(tǒng)(注:文獻【96】提供了OpenTSDB的簡要概述,介紹了OpenTSDB的工作機理)枣购。

Ambari【97】–?這是一款基于Web的系統(tǒng)嬉探,支持Apache Hadoop集群的供應、管理和監(jiān)控(注:文獻【97】闡述了Ambari架構(gòu)的設計準則)棉圈。

基準測試(Benchmarking)

YCSB【98】–該文獻是一篇使用YCSB對NoSQL系統(tǒng)進行性能評估的期刊論文(注:YCSB是雅虎云服務基準測試(Yahoo! Cloud Serving Benchmark)的簡寫涩堤。見名知意,它是由雅虎出品的一款通用云服務性能測試工具)分瘾。

GridMix【99】–該系統(tǒng)通過運行大量合成的作業(yè)胎围,對Hadoop系統(tǒng)進行基準測試,從而獲得性能評價指標(注:文獻是Apache網(wǎng)站有關GridMix的官方說明文檔)德召。

最后一篇文獻是有關大數(shù)據(jù)基準測試的綜述文章【100】白魂,文章討論了基準測試的最新技術(shù)進展以及所面臨的幾個主要挑戰(zhàn)。

譯者寄語:

在你邁步于大數(shù)據(jù)的旅途中上岗,真心希望這些文獻能助你一臂之力福荸。但要知道,有關大數(shù)據(jù)的文獻肴掷,何止千萬敬锐,由于個人精力背传、能力有限,有些領域也不甚熟稔台夺,故難免會掛一漏萬径玖。如有疏忽鸦列,漏掉你的大作锋恬,還請你海涵。最后廷区,希望這些文獻能給你帶來“學而時習之买窟,不亦樂乎”的快感丰泊!

譯者介紹:張玉宏,博士始绍。2012年畢業(yè)于電子科技大學瞳购,現(xiàn)執(zhí)教于河南工業(yè)大學。中國計算機協(xié)會(CCF)會員亏推,ACM/IEEE會員学赛。主要研究方向為高性能計算、生物信息學吞杭,主編有《Java從入門到精通》一書盏浇。



另附上經(jīng)典好文:

1、“Dynamo: Amazon’s Highly Available Key-value Store”?

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末芽狗,一起剝皮案震驚了整個濱河市绢掰,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌童擎,老刑警劉巖滴劲,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異顾复,居然都是意外死亡班挖,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進店門芯砸,熙熙樓的掌柜王于貴愁眉苦臉地迎上來萧芙,“玉大人,你說我怎么就攤上這事假丧∧┕海” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵虎谢,是天一觀的道長盟榴。 經(jīng)常有香客問我,道長婴噩,這世上最難降的妖魔是什么擎场? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任羽德,我火速辦了婚禮,結(jié)果婚禮上迅办,老公的妹妹穿的比我還像新娘宅静。我一直安慰自己,他們只是感情好站欺,可當我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布姨夹。 她就那樣靜靜地躺著,像睡著了一般矾策。 火紅的嫁衣襯著肌膚如雪磷账。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天贾虽,我揣著相機與錄音逃糟,去河邊找鬼。 笑死蓬豁,一個胖子當著我的面吹牛绰咽,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播地粪,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼取募,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了蟆技?” 一聲冷哼從身側(cè)響起玩敏,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎付魔,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體飞蹂,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡几苍,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了陈哑。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片妻坝。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖惊窖,靈堂內(nèi)的尸體忽然破棺而出刽宪,到底是詐尸還是另有隱情,我是刑警寧澤界酒,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布圣拄,位于F島的核電站,受9級特大地震影響毁欣,放射性物質(zhì)發(fā)生泄漏庇谆。R本人自食惡果不足惜岳掐,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望饭耳。 院中可真熱鬧串述,春花似錦、人聲如沸寞肖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽新蟆。三九已至觅赊,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間栅葡,已是汗流浹背茉兰。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留欣簇,地道東北人规脸。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像熊咽,于是被迫代替她去往敵國和親莫鸭。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容