Hadoop 最先誕生於 2006 年,並在 2008 年成爲 Apache 頂級項目。雖然在誕生之初,只有國內外幾家巨頭嘗試使用 Hadoop 技術,但沒過多久,Hadoop 就成爲了互聯網行業大數據計算的標準配置,Hadoop 也快速成爲 Apache 軟件基金會的金牌項目之一。不只如此,它還孕育了包括 HBase、Hive、ZooKeeper 等一系列知名 Apache 頂級項目,而這些項目一開始都是以 Apache Hadoop 子項目的形式在社區運做併爲開發者熟知的。docker
至今,Hadoop 已經走過了 12 個年頭,這對於任何軟件來講生命週期都不可謂不長。而從 2016 年開始,國內外就開始出現唱衰 Hadoop 的聲音。雖然對於國內外不少企業來講,Hadoop 依然是大數據計算不可缺乏的配置,但對於 Hadoop 將來的發展,不少人都並不看好,「談不上會有好的發展」。Hadoop 背後最大的平臺提供商 Hortonworks 也開始往以雲計算爲中心的世界靠攏。數據庫
去年 9 月,Gartner 將 Hadoop 發行版從數據管理的技術成熟度曲線中淘汰出局,緣由是因爲整個 Hadoop 堆棧的複雜性和可用性問題,許多組織已經開始從新考慮其在信息基礎架構中的角色。而今年 KDnuggets 發佈的數據科學和機器學習工具調查報告則顯示 Hadoop 的使用率也降低了,這讓「Hadoop 老矣」的說法又再度流傳起來。安全
2018 年數據科學和機器學習工具調查報告顯示 Hadoop 使用率降低 35%微信
在這個時候,爲何騰訊要花費大力氣去主導 Hadoop 開源版本的發佈?架構
負責主導本次開源版本發佈的騰訊雲專家研究員堵俊平告訴 AI 前線,真正「老矣」的是 Hadoop 商業發行版而非 Hadoop 技術自己, 不論在國內仍是國外,Hadoop 技術都保持着大數據平臺的核心和事實標準地位。須要變革的是 Hadoop 技術的使用和發行方式, 將來愈來愈多的用戶從使用線下 Hadoop 發行版向雲上的數據湖(對象存儲 +Hadoop)遷移可能會成爲一種趨勢。框架
騰訊的大數據平臺有很多爲自身特殊場景優化甚至從新自研的產品和組件,但有至關大的一部分是基於開源 Hadoop 生態組件構建的。less
目前騰訊的大數據平臺用到了很是多的 Hadoop 生態組件。以騰訊雲上開放的彈性 MapReduce 服務爲例,騰訊提供了 Hadoop、HBase、Spark、Hive、Presto、Storm、Flink、Sqoop 等組件服務。不一樣組件也發揮了不一樣的用處:數據存儲和計算資源調度由 Hadoop 來實現,數據的導入能夠用 Sqoop,HBase 提供了 NoSQL 數據庫服務,離線數據處理由 MapReduce、Spark、Hive 等完成,流式數據處理則由 Storm、Spark Streaming 以及 Flink 來提供等等。運維
堵俊平表示,對於 Hadoop 生態的各種組件的選型,騰訊的整體原則是兼顧平臺穩定性和技術先進性。一方面,須要理解每一個組件所適用的場景以及它們的能力邊界,另外一方面,從測試和運維實踐來看,要了解每一個組件的穩定程度和運維複雜度。以基於 Hadoop 的數倉組件爲例,新版的 Hive 增長了 LLAP 組件來提高交互式查詢的性能和速度,但從當前運行的實際效果來看並不穩定,因此騰訊暫緩把這個組件引入生產系統,Hive 更多服務於離線計算的場景,而交互式查詢由更爲穩定的 SparkSQL 和 Presto 來提供。機器學習
騰訊並不是個例,在國內外不少企業的大數據平臺中,Hadoop 生態的各種組件都佔了至關大的比重。誰都離不開它,但可能應用太廣泛,Hadoop 受到的關注反而變少了。做爲 Hadoop 的 PMC,堵俊平表示,Hadoop 做爲大數據平臺的核心和事實標準地位,在國內外並無太大的區別。不過在各個行業,Hadoop 應用的成熟度卻不盡相同。舉例來講,Hadoop 在互聯網公司應用的最先也最爲成熟;其次是金融行業,Hadoop 大數據平臺落地的成功案例不少,也相對比較成熟。當前 Hadoop 大數據平臺應用的熱點是在政務和安防領域以及 IOT 工業互聯網平臺,這些新的熱點帶來新的需求也會促使 Hadoop 技術和生態繼續向前進化。分佈式
對於 Gartner 將 Hadoop 從技術成熟度曲線中淘汰出局,堵俊平指出,Gartner 的報告是針對 Hadoop 商業發行版而非 Hadoop 技術自己。
報告中所提到的 Hadoop 發行版的問題:好比發行版的複雜度高以及包含不少非必要性組件,從用戶的反饋來看,是真實存在的。不少商業發行版,例如 CDH 或者 HDP,都包含了洋洋灑灑十幾種甚至幾十種組件給用戶使用,在提供靈活性的同時,也給用戶帶來了不少使用和運維上的煩惱。更嚴重的是,這個問題從近幾年的觀察來看,不但沒有減輕且有愈演愈烈的趨勢。因此,Hadoop 技術的使用和發行的方式須要變革,將來愈來愈多的用戶從使用線下的 Hadoop 發行版向雲上的數據湖(對象存儲 +Hadoop)遷移可能會成爲一種趨勢。
堵俊平坦言,Hadoop 生態確實存在一些不足。Hadoop 的生態系統很是複雜,每一個組件都是獨立的模塊,由單獨的開源社區開發和發佈,咱們能夠稱之爲鬆耦合。這種鬆耦合的開發方式,好處是靈活、適應面廣、開發週期可控,缺點是組件之間配合的成熟度低、版本衝突嚴重、集成測試困難。這也給用戶的使用帶來了困難,由於一個場景中須要涉及到不少組件的配置工做。
雖然流計算對於大數據處理來講愈來愈重要,但不支持流計算卻不會成爲 Hadoop 的致命傷。雖然 Hadoop 自身不提供流計算服務,不過主要的流計算組件,如 Storm、Spark Streaming 以及 Flink 自己就屬於 Hadoop 生態系統的一部分,所以並不構成太大的問題。
曾有開發者向 AI 前線表示,Hadoop 主要是被 MapReduce 拖累了,其實 HDFS 和 YARN 都還不錯。堵俊平則認爲 MapReduce 拖累 Hadoop 的說法並不許確,首先 MapReduce 仍是有應用場景,只是愈來愈窄,它仍然適合某些超大規模數據處理的批量任務,且任務運行很是穩定;其次,Hadoop 社區對於 MapReduce 的定位就是進入維護模式, 並不追求任何新的功能或性能演進,這樣可讓資源投入到更新的計算框架,好比 Spark、Tez,促進其成熟。
HDFS 和 YARN 目前仍是大數據領域分佈式存儲和資源調度系統的事實標準,不過也面臨一些挑戰。對 HDFS 而言,在公有云領域,愈來愈多的大數據應用會選擇跳過 HDFS 而直接使用雲上的對象存儲, 這樣比較方便實現計算與存儲分離,增長了資源彈性。YARN 也面臨着來自 Kubernetes 的強大挑戰,尤爲是原生的 docker 支持,更好的隔離性以及上面生態的完整性。不過 K8S 在大數據領域仍是追趕者,在資源調度器以及和對各計算框架支持上還有很大的進步空間。
Spark 在計算框架方面基本上佔據了主導地位,MapReduce 主要是一些歷史應用,而 Tez 更像是 Hive 的專屬執行引擎。流處理方面,早期的流處理引擎 Storm 正在退役,而當前唱主角的則是 Spark Streaming 和 Flink,這兩個流處理引擎各有千秋,前者強在生態,後者則在架構方面有優點。一個有意思的狀況是,對於 Spark Streaming 和 Flink 的應用在國內外的狀況很不同,國內已經有大量的公司開始使用 Flink 構建本身的流處理平臺,但美國市場 Spark Streaming 仍是佔絕對主流的地位。固然,還有一些新的流處理框架,例如 Kafka Streams 等等,發展得也不錯。
在大數據 SQL 引擎方面,四大主流引擎 Hive、SparkSQL、Presto 以及 Impala 仍然各有所長。
Hive 最先由 Facebook 開源貢獻也是早年應用最普遍的大數據 SQL 引擎,和 MapReduce 同樣,Hive 在業界的標籤就是慢而穩定。其無私地提供了不少公共組件爲其餘引擎所使用,堪稱業界良心,好比元數據服務 Hive Metastore、查詢優化器 Calcite、列式存儲 ORC 等。近年來,Hive 發展很快,例如查詢優化方面採用了 CBO,在執行引擎方面用 Tez 來替換 MapReduce,經過 LLAP 來 cache 查詢結果作優化,以及 ORC 存儲不斷演進。不過相比較而言,這些新技術從市場應用來講還不算成熟穩定,Hive 仍然被大量用戶定義爲可靠的 ETL 工具而非即時查詢產品。
SparkSQL 這兩年發展迅猛,尤爲在 Spark 進入 2.x 時代,發展更是日新月異。其優秀的 SQL 兼容性(惟一所有 pass TPC-DS 所有 99 個 query 的開源大數據 SQL),卓越的性能、龐大且活躍的社區、完善的生態(機器學習、圖計算、流處理等)都讓 SparkSQL 從這幾個開源產品中脫穎而出,在國內外市場獲得了很是普遍的應用。
Presto 這兩年應用也很是普遍,這款內存型 MPP 引擎的特色就是處理小規模數據會很是快,數據量大的時候會比較吃力。Impala 的性能也很是優異,不過其發展路線相對封閉,社區生態進展比較緩慢,SQL 兼容性也比較差,用戶羣體相對較小。
Hadoop 已經 12 歲了,將來 Hadoop 生態將會如何發展?堵俊平表示,將來 Hadoop 的生態會向雲的方向發展,簡化運維甚至免運維既是用戶的需求也是雲廠商的優點所在。愈來愈多的數據在雲中產生、存儲和消費,從而造成數據生命週期在雲端的閉環——數據湖。因此雲上的數據安全和隱私保護技術顯得十分重要。
除此以外,Hadoop 在混合雲上的部署和應用也會是一個重要的趨勢,而這方面的技術和架構還不是很是成熟,須要持續創新和創造。在這樣的背景下,傳統 Hadoop 發行版廠商的話語權在技術和商業層面會相對減小,而云廠商的話語權則會增大。 另一個趨勢是 Hadoop 生態會不斷向數據應用端生長,強調從數據處理到數據治理的轉變,更方便的 ETL 工具、元數據管理與數據治理工具會逐漸走向成熟與完善。最後,Hadoop 生態也會從單純的大數據平臺演化到集數據與機器學習平臺爲一體, 將來可助力不少的 AI 應用場景。
堵俊平告訴 AI 前線,將來大數據領域比較重要的發展方向中,IOT 是一個值得長期關注的領域。在大數據發展歷史上,這部分業務發展週期較短,不少技術都不是很是成熟,標準也沒有徹底統一。除此以外,雲上的大數據產品還有技術變革的空間,例如:跨數據中心 / 雲的解決方案、自動化關鍵數據業務遷移、數據隱私保護、自動機器學習等,將來必定會有更加創新的產品來打動和吸引用戶上雲。
騰訊雲會聚焦雲端大數據用戶的核心痛點,制定相應的技術和產品路線。對於大數據平臺的底層平臺架構,騰訊雲會更增強調 serverless,注重性能與開銷的平衡,提升資源利用率會是一個長期的方向。而 Hadoop 生態會繼續在其中扮演重要角色,由於市場更爲承認開放和開源的產品以及解決方案。騰訊雲也會繼續貢獻和回饋開源社區,和社區一塊兒創造更好更新的技術來知足將來的須要。
Hadoop 花了 12 年從一個新興開源項目成長爲大數據平臺標準配置,實屬不易。現在 Hadoop 生態內部面臨着來自衆多年輕開源組件的競爭壓力,優勝劣汰也很正常,世上沒有十全十美的開源平臺,憑藉已有的優點,Hadoop 生態的地位依然十分穩固,但將來是否還能煥發出新的活力,抑或在全面雲化的進程中逐漸式微,還是一個未知數。