一張圖回顧Hadoop十年:Hadoop老矣尚能飯否?
于 2006 年 1 月 28 日誕生的它改變了企業對數據的存儲、處理和分析的過程,加速了大數據的發展,形成了自己的極其火爆的技術生態圈,并受到非常廣泛的應用。在此為大家梳理 Hadoop 這十年的變化,以及技術圈的生態狀況,為 Hadoop“慶生”。
大數據指的是規模超過現有數據庫工具獲取、存儲、管理和分析能力的數據集,并同時強調并不是超過某個特定數量級的數據集才是大數據。
大數據的定義聚焦在“大“。從表面上看,數據規模的增長的確為處理數據帶來了很大的問題。具體來說,在同樣時間內獲取與以前相同價的數據變得不可為了。換言之,本題是數據的價密度變低了,數據交換速率變慢了,所以催生了很多新型數據處理技術和工具,如 Google 的 GFS 和 MapReduce,Apache Hadoop 生態系統,美國伯克利大學 AMPLab 的 Spark 等;出現了對時間程度不同的計算模式,如批式計算模式、交互式計算模式、流計算模式、實時計算模式等。計算模式的差異只是決定獲取價的技術不同,取決于上層業務需求的不同。
實際上,所謂大數據問題的本質應是數據的資產化和服務化,而挖掘數據的內在價是研究大數據的最終目標。
Google 在搜索引擎上所獲得的巨大成功,很大程度上是由于采用了先進的大數據管理和處理技術,是針對搜索引擎所面臨的日益膨脹的海量數據存儲問題以及在此之上的海量數據處理問題而設計的。
Google 提出了一整套基于分布式并行集群方式的基礎架構技術,利用軟件的能力來處理集群中經常發生的節點失效問題。Google 使用的大數據平臺主要包括五個相互又緊密結合在一起的系統:分布式資源管理系統 Borg,Google 文件系統(GFS),針對 Google 應用程序的特點提出的 MapReduce 編程模式,分布式的鎖機制 Chubby 以及大規模分布式數據庫 BigTable。
Borg 是這五個系統中最為神秘的一個,直到 2015 年 Google 才在 EuroSys 2015 上發表了題為“Large-scale cluster management at Google with Borg”的論文。稱 Google 內部不僅像計算型的應用,比如 MapReduce、Pregel 等運行在 Borg 上,存儲類的應用,比如 GFS,BigTable 和 Megastore 等也運行在,真正做到了批處理作業和長周期服務的混合部署和資源動態調度。得益于此項技術,可以使平均資源利用率達到 30%~75% 以上,大大高于業界平均水平的6%~12%。
GFS 是一個大型的分布式文件系統,它為 Google 云計算提供海量存儲,并且與 Chubby、MapReduce 和 BigTable 等技術結合得十分緊密,處于系統的底層。它的設計受到 Google 特殊的應用負載和技術的影響。相對于傳統的分布式文件系統,為了達到成本、可靠性和性能的最佳平衡,GFS 從多個方面進行了簡化。
MapReduce 是處理海量數據的并行編程模式,用于大規模數據集的并行運算。MapReduce 通過“Map(映射)”和“Reduce(化簡)”這樣兩個簡單的概念來參加運算。用戶只需要提供自己的 Map 函數以及 Reduce 函數就可以在集群上進行大規模的分布式數據處理。這一編程能夠使程序設計人員編寫大規模的并行應用程序時不用考慮集群的可靠性、可擴展性等問題。應用程序編寫人員只需要將精力放在應用程序本身,關于集群的處理問題則交由平臺來完成。與傳統的分布式程序設計相比,MapReduce 封裝了并行處理、容錯處理、本地化計算、負載均衡等細節,具有簡單而強大的接口。正是由于 MapReduce 具有函數式編程語言和矢量編程語言的共性,使得這種編程模式特別適合于非結構化和結構化的海量數據的搜索、挖掘、分析等應用。
Chubby 是提供粗粒度鎖服務的一個文件系統,它基于松耦合分布式文件系統,解決了分布式系統的一致性問題。這種鎖只是一個性的鎖而不是強制性的鎖。通過使用 Chubby 的鎖服務,用戶可以確保數據操作過程中的一致性。GFS 使用 Chubby 來選取一個 GFS 主服務器,BigTable 使用 Chubby 指定一個主服務器并發現、控制與其相關的子表服務器。
大規模分布式數據庫 BigTable 是基于 GFS 和 Chubby 開發的分布式存儲系統。很多應用程序對于數據的組織常有規則的。一般來說,數據庫對于處理式化的數據還常方便的。但是由于關系數據庫要求很強的一致性,很難將其擴展到很大的規模。為了處理 Google 內部大量的式化以及半式化數據,Google 構建了弱一致性要求的大規模數據庫系統 BigTable。BigTablede 在很多方面和數據庫類,但它并不是真正意義上的數據庫。Google 包括 Web 索引、衛星圖像數據等在內的很多海量結構化和半結構化數據都是存儲在 BigTable 中的。
Google 的技術雖好但不開源。如果沒有 Doug Cutting 和他的 Hadoop 開源軟件,我們就看不到如今大數據技術和應用的飛速發展。
Doug Cutting 主導的 Apache Nutch 項目是 Hadoop 軟件的源頭,該項目始于 2002 年,是 Apache Lucene 的子項目之一。當時的系統架構尚無法擴展到存儲并處理擁有數十億網頁的網絡化數據。Google 在 2003 年于 SOSP 上公開了描述其分布式文件系統的論文“The Google File System”,為 Nutch 提供了及時的幫助。2004 年,Nutch 的分布式文件系統(NDFS)開始開發。同年,Google 在 OSDI 上發表了題為“MapReduce: Simplified Data Processing on Large Clusters”的論文,受到的 Doug Cutting 等人開始實現 MapReduce 計算框架并與 NDFS(Nutch Distributed File System)結合起來,共同支持 Nutch 的主要算法。至 2006 年,它逐漸成為一套完整而的軟件,已經到 Yahoo!工作的 Doug Cutting 將這套大數據處理軟件命名為 Hadoop。2008 年初,Hadoop 成為 Apache 的項目,除 Yahoo!之外在眾多互聯網企業中得到應用。
早期的 Hadoop,包括 Hadoop v1 以及更早之前的版本,主要由兩個核心組件構成:HDFS 和 MapReduce,其中 HDFS 是 Google GFS 的開源版本,MapReduce 計算框架實現了由 Google 工程師提出的 MapReduce 編程模型。還有一些圍繞在 Hadoop 周圍的開源項目,為完善大數據處理的全生命周期提供了必要的配套和補充。這些軟件常用的有 ZooKeeper、Hive、Pig、HBase、Storm、Kafka、Flume、Sqoop、Oozie、Mahout 等。2012 年 5 月,Hadoop v2 的 alpha 版本發布,其中最重要的變化是在 Hadoop 核心組件中增加了 YARN(Yet Another Resource Negotiator)。YARN 的出現是為了把計算框架與資源管理徹底分離開,解決 Hadoop v1 由此帶來的擴展性差、單點故障和不能同時支持多種計算框架的問題。YARN 對標的恰好就是 Google 的 Borg 系統。至此,Hadoop 方才能夠與 Google 的大數據平臺比肩。
一個好的、有生命力的開源生態系統要有一個核心,這個核心要是差異化和非平凡的,還要有廣泛的應用和活躍的社區。Hadoop 恰好具備這三個特征,以 Hadoop 為核心的大數據開源生態系統逐漸形成,Hadoop 也成為自 Linux 以來最成功的開源軟件,沒有之一。受人民大學信息學院院長杜小勇老師的委托,我在 CNCC 2015 上組織了一個名為“大數據開源生態系統”的論壇。論壇邀請了來自互聯網企業、硬件廠商、系統集成商以及學術界的同行分享在大數據開源方面的工作和體會。在最后的 Panel 環節,討論了為什么要做開源和怎么做開源這兩個問題。回答是比較分散的,有開源是唯一選擇的,有拉通產業鏈的,有認為開源是新業態新商業模式的,有認為開源促進技術進步的。總之,在產業鏈不同的環節上的機構做開源的動機和目標自然是不同的,但只有這樣,產業鏈中不同角色都能夠在生態系統中找到自己的,這樣的生態系統才是健壯的有生命力的,不是嗎?
大數據領域第一個吃螃蟹的是互聯網行業。這是因為大數據概念和技術都來源于互聯網企業的老大哥 Google 的原因。以 Hadoop 投入實際應用來看:
2006 年到 2008 年是 Hadoop 的誕生階段。只有國外少數幾個互聯網巨頭在嘗試,國內互聯網行業在學習這項新技術。2006 年,Yahoo!構建 100 節點規模的 Hadoop 機群用于 Webmap 業務。2007 年,Yahoo!構建 1000 節點規模的 Hadoop 機群。2008 年,Yahoo!的 Hadoop 機群擴展到 2000 節點規模,Facebook 貢獻 Hive 項目到開源社區。
2008 年到 2010 年是 Hadoop 的少年階段。在互聯網行業已經開始投入實際應用,應用集中在網頁存儲檢索,日志處理和用戶行為分析等方面。2009 年,Yahoo!使用 4000 節點的機群運行 Hadoop,支持廣告系統和 Web 搜索的研究;Facebook 使用 600 節點的機群運行 Hadoop,存儲內部日志數據,支持其上的數據分析和機器學習;百度用 Hadoop 處理每周 200TB 的數據,進行搜索日志分析和網頁數據挖掘工作。2010 年,Facebook 的 Hadoop 機群擴展到 1000 節點;百度用 Hadoop 每天可處理 1PB 的數據;中國移動通信研究院基于 Hadoop 開發了“大云”(BigCloud)系統,不但用于相關數據分析,還對外提供服務;淘寶的 Hadoop 系統達到千臺規模,用于存儲并處理電子商務的交易相關數據。
2010 年到 2015 年是 Hadoop 的青年階段。在互聯網行業無不將 Hadoop 作為大數據計算的標準配置,且應用形式趨于多樣化;企業計算領域開始實踐基于 Hadoop 的大數據應用;在追求大數據處理能力的同時,也開始思考系統適配性和效率問題。互聯網行業出現了大量數據分析類應用,比如支付寶的交易數據離線分析系統等;用 Hadoop 與生態系統中的其他軟件一起構成更為復雜的應用系統,比如騰訊的廣點通精準廣告投放系統,電信運營商的基于用戶畫像的精準營銷系統等。除互聯網行業外,出現了網絡通訊大數據、金融大數據、交通旅游大數據、工業制造大數據、醫療健康大數據、社會治理大數據、教育大數據等,大數據和技術已經融入各行各業。Hadoop 源于互聯網行業,在應用于企業計算時,需要進行適配,原因在于互聯網應用和企業計算應用在需求、服務、研發和運維體系方面有本質的不同。互聯網應用業務邏輯簡單、服務于海量用戶、非固定使用人群、系統的用戶體驗至上、持續交付、能夠快速響應的專業運維;而企業計算應用業務邏輯復雜、有限數量用戶、固定使用人群、系統更強調穩定可靠、版本交付、層級式的技術支持。一時間市面上出現了很多面向企業用戶的 Hadoop 發行版,以易部署、好配置,以及使用和管理方便為切入點,吸引著企業用戶的球。
5、Hadoop in China 國內最早的 Hadoop 交流平臺
技術推廣是需要平臺的,而好的交流平臺對新技術的落地起到極其重要的作用。2008 年,我所在的研究小組想在分布式數據存儲方面做一些研究工作,前期調研階段接觸到 Hadoop,其新穎的設計思想得到大家的一致認同,2008 年 11 月 Hadoop 技術沙龍順勢成立,后來發展成 Hadoop in China 大會。
2012 年,中國計算機學會(CCF)于 10 月正式成立了大數據專家委員會。2013 年,大會正式更名為“中國大數據技術大會(BDTC)”。至此,Hadoop in China 從 60 人規模的小型沙龍發展到國內大數據領域一年一度最重要的技術會議之一。大會曾邀請到包括 Hadoop 創始人 Doug Cutting,Spark 創始人 Ion Stoica 在內的眾多國際著名專家到會做特邀報告。
系統架構的專業化。從當今 IT 技術的發展角度看,提出系統結構上的解決方案是“應用驅動的大數據架構與技術”。也就是說根據具體類型應用的需求,在系統架構和關鍵技術上進行創新。為了降低成本并獲得更好的能效,大數據應用系統越來越趨向扁平化、專用化的系統架構和數據處理技術,逐漸擺脫了傳統的通用技術體系。比如并行數據庫更鮮明的分化為面向事務處理的 OLTP 類數據庫和面向分析的 OLAP 類數據庫等。傳統的應用服務器、數據庫服務器和存儲服務器這樣的典型三層架構受到極大的沖擊。應用開發人員更深入的理解計算機系統結構,“程序” = “算法” “數據結構”將逐漸演變成“程序” = “算法” “數據結構” “系統結構”。
大數據生態系統范圍擴大。克隆了 Google 的 GFS 和 MapReduce 的 Apache Hadoop 自 2008 年以來逐漸為互聯網企業接納,并成為大數據處理領域的事實標準。但 2013 年出現的 Spark 作為一匹黑馬可以說終結了這一,大數據技術不再一家獨大。由于應用不同導致 Hadoop 一套軟件系統不可能滿足所有需求,在全面兼容 Hadoop 的基礎上,Spark 通過更多的利用內存處理大幅提高系統性能。此外,Scribe、Flume、Kafka、Storm、Drill、Impala、TEZ/Stinger、Presto、Spark/Spark SQL 等的出現并不是取代 Hadoop,而是擴大了大數據技術生態,促使生態向良性和完整發展。今后在非易失存儲層次、網絡通信層次、易失存儲層次和計算框架層次還會出現更多、更好和更專用化的軟件系統。
系統整體效能更為用戶重視。在全球互聯網企業的努力下,Hadoop 已經可以處理百 PB 級的數據,在不考慮時間維度的前提下,價密度低的數據可以處理了。在解決了傳統關系型數據庫技術無法處理如此量級的數據之后,業界正在向系統能效要價。能效問題一方面體現在系統性能上。互聯網服務強調用戶體驗,原本做不到實時的應用在向實時化靠攏,比如前端系統及業務日志從產生到收集入庫的延遲從 1 到 2 天時間進化到 10 秒以內。傳統企業無法關系數據庫動輒幾十分鐘的查詢分析性能,紛紛求助于性價比更好的技術和產品。這些需求使大數據交互式查詢分析、流式計算、內存計算成為業界研發和應用的新方向。能效問題的另一方面體現在系統功耗和成本上。中科院計算所霽研究員領導研究的專用神經網絡處理器技術,可大幅加速機器學習負載,與通用芯片和 GPU 相比,計算速度提高幾十倍,功耗只有十分之一,整體能效提高 450 倍。百度云存儲萬臺定制 ARM 服務器可節電約 25%,存儲密度提升 70%,每瓦特計算能力提升 34 倍(用 GPU 取代 CPU 計算),每 GB 存儲成本降低 50%。
個性化服務的需求愈發強烈。個性化對應于互聯網服務的長尾部分,這部分需求在傳統的系統設計中因為復雜性原因是被的,但正是這部分體現出個性化服務的需求。個性化服務,即系統能夠提供滿足不同個體需求的差異化服務,比如個性化推薦,廣告精準投放等。就拿個性化推薦技術來說,目前已經開始從簡單的商品推薦復雜的內容推薦。根據用戶的特性與偏好,推薦內容的特征,以及當時的上下文數據(客戶端設備類型、用戶所處時空數據等),向特定用戶提供個性化的內容推薦服務,內容包括商品(包括電商和零售)、廣告、新聞和資訊等。在移動設備和移動互聯網飛速發展的時代,個性化推薦將成為用戶獲取信息最直接的渠道之一。
價挖掘的理論和技術亟待發展。對數據進行淺層分析的理論和技術,主要體現在分布式系統和關系型數據庫理論的結合與再創新,目前已經有較大幅度進展。但是,從數據中抽取隱含的信息或者知識,也就是價挖掘,這方面的理論和技術還比較缺乏。一是缺乏成熟的數據挖掘建模方法和工具,經驗對于挖掘出有價信息的影響甚大,原始數據與隱含信息之間存在技術缺失,所以“啤酒尿布”的案例并不是天天都能產生的。二是機器學習和深度學習技術面臨應用問題。與大數據相結合,已經在諸如語音識別、圖像識別、廣告推薦和風險控制等場景中得以初步應用,但這方面的技術和軟件工具成熟度不高,還有很大提升空間。此外,機器學習和深度學習的應用場景還不夠廣泛,這既是機遇也是挑戰。
Hadoop 開源軟件自 2006 年起至今已經走過十個年頭,這對于任何軟件來說生命周期不可謂不長。但是,Hadoop 也在經歷來自其他開源黑馬的沖擊。Spark 在早期發展階段通過全面兼容 Hadoop 而借力于后者成熟的生態系統。時至今日,Spark 正在挑戰 Hadoop 的權威,因為 Spark 已經將發展目標定位在取代 Hadoop。Hadoop 老矣,尚能飯否?Hadoop 的近 100 位 Committer 在積極的為 Hadoop 謀劃未來,讓我們拭目以待吧!
查,2003 年博士畢業以來一直從事分布式系統的研發工作,現為中國科學院計算技術研究所副研究員,CCF 大數據專家委員會委員。自 2008 年起與 Apache Hadoop、Hive 以及 HBase 等開源社區密切合作,相關大數據技術研究通過軟件開源在業界得到廣泛應用。是中國大數據技術大會(原 Hadoop in China)發起人和組織者。
m0_37778126:如果把獲取坐標的方法放到onCreate中調用得到的就是0,在點擊事件的得到的就是正確的,能問一下為...
fore4321:按照題目要求,需要無冗余接受連接兩個字符串,同時將這兩個字符串無冗余的連接起來。通過數組實現的話,滿...
fore4321:按照題目要求,需要無冗余接受連接兩個字符串,同時將這兩個字符串無冗余的連接起來。通過數組實現的話,滿...