阿里開源Blink背后的成功“套路”
阿里云開源Blink,大數據實時計算進入快車道
大數據應用中,Hadoop占據非常重要的地位,運行在其上的大數據應用也很多。
但是Hadoop在批處理方面的強大無法掩蓋其在實時處理以及流處理方面的缺憾。
同時Hadhoop核心組件——MapReduce、Hive和HDFS與邊緣組件的邊界正在變得越來越清晰,Spark、Flink正在逐漸成長,生態漸漸龐大,可供選擇的組件越來越多,引領著實時計算的發展。
其實,實時計算正處于上升期,Google、Intel、IBM等國際巨頭都在積極布局。阿里從2015年開始對Flink開源大數據流處理引擎進行改造,并將Flink的計算能力擴大數倍,推出內部版Blink。阿里在Flink上的重磅押注將成為其未來的核心競爭力之一。
果然,根據中國軟件網1月28日報道,阿里云正式對外宣布,已開源實時計算平臺Blink( Blink開源項目地址:https://github.com/apache/flink/tree/blink)。Blink能將計算延遲降低到人類無法感知的毫秒級,瀏覽網頁的時候,你只是眨了一下眼睛,處理的信息已經刷新了17億次。
從Spark到Flink:天地如此廣闊
后來者的Spark和Flink正在彌補Hadoop在實時處理方面的劣勢,在大數據市場分得了一方天下。
Spark在內存中運行速度比Hadoop快100倍,在磁盤上運行速度快10倍。Spark在機器學習應用中的速度同樣更快。
那么 Flink 和現在流行的Spark 到底有什么異同呢?
Flink 是一個面向分布式數據流處理和批量數據處理的開源計算平臺。與Spark類似,兩者都希望提供一個統一功能的計算平臺,都在嘗試建立一個統一的平臺以運行批量、流式、交互式、圖處理、機器學習等應用。
雖然目標非常類似,但是 Flink在實現上和Spark卻有很大的不同,Flink 從另一個視角看待流處理和批處理,將二者統一起來:Flink完全支持流處理,作為流處理看待時輸入數據流是無界的;批處理被作為一種特殊的流處理,只是輸入數據流被定義為有界的。
專家從框架、SQL支持、性能等幾方面來對比兩者的區別:
框架:Flink和Spark都是基于內存計算、支持實時/批處理等多種計算模式的統一框架,但Flink 的設計理念是 Stream as Platform,而Spark的設計理念是Batch as Platform。
流計算:Spark基于小批量處理,把 Streaming看成是更快的批處理,支持秒級計算,在流計算方面延時較大。而 Flink基于每個事件處理,是真正的流式計算,跟Storm的性能差不多,支持毫秒級計算。
SQL支持:Spark提供SparkSQL,Flink通過Table API提供SQL交互支持。兩者相比,Spark對SQL支持更好,而且Spark支持對SQL的優化和擴展等,相關社區非常活躍。而Flink 在SQL支持方面還有很大提升空間。
性能:在計算性能方面,兩者都有較好的表現,但Flink支持增量迭代等特性,因此 Flink 具有更好的性能表現。
社區活躍度:Spark社區非常活躍,生態系統越來越完善。而Flink社區活躍度相對較低,但相信隨著Flink應用越來越廣泛,這一現象會得到改變。
所以,Spark、Flink與Hadoop不是取代,是合作。如果未來用戶在部署大數據平臺時,選擇放棄Spark或者Flink,那就是瞎子下象棋,不識相了!
從Flink到Blink:阿里云如此多嬌
而目前市面上,各大公司采取的主流數據解決方案主要為Spark和Flink兩種,它們很好地平衡了用戶對于批處理和流處理的需求。Spark的技術理念是基于批來模擬流的計算,也就是更擅長有延遲的離線計算,而Flink則完全相反,它采用的是基于流計算來模擬批計,更擅長實時計算。
從目前來看,Spark技術在對海量數據實時性要求高的場景確實顯得有些“雞肋”——食之無味,棄之可惜。與之相比,Flink在實時計算方面顯得游刃有余。作為最早布局Flink的公司之一,阿里在2015年就已經開始基于開源版本進行改造和創新,推出內部版本Blink。
據介紹,截止到目前,Blink在批SQL的性能方面已是Flink社區版本性能的10倍以上,在TPCDS場景下Blink的性能也能達到3倍Spark以上。
Blink在阿里內部應用的最多的場景是流計算,但是也有不少業務上線使用了批計算場景。
另外,本次開源Blink代碼在 Flink1.5.1 版本之上,加入了大量的新功能,以及在性能和穩定性上的各種優化。
主要貢獻包括:阿里巴巴在流計算上積累的一些新功能和性能的優化,一套完整的(能夠跑通全部TPC-H/TPC-DS,能夠讀取 Hive meta和data)高性能Batch SQL,以及一些以提升易用性為主的功能(包括支持更高效的 interactive programming,與zeppelin更緊密的結合,以及體驗和性能更佳的Flink web)等。
媒體報道,未來阿里云還將繼續貢獻Flink在AI、IoT 以及其他新領域的功能和優化。
從內部使用到開源:Blink大數據應用如此絢爛多采
基于 Blink的計算平臺于2016年正式上線。截至目前,阿里絕大多數的技術部門都在使用Blink。Blink一直在阿里內部錯綜復雜的業務場景中鍛煉成長。對于內部用戶反饋的各種性能、資源使用率、易用性等諸多方面的問題,Blink 都做了針對性的改進。開源之前,Blink在阿里內部應用中得到成功應用。
在2018年雙11期間Blink實現了每秒處理17億次事件的能力,相當于你眨眼一次的0.3秒里,機器已經刷新了5億次庫存。
當然除了技術大考的雙11之外,阿里云的ET城市大腦更是實時計算著杭州1300個信號燈路口、4500路視頻,保障著交通動脈的通暢。其中,依靠計算,一輛救護車到達醫院的速度,平均可以縮短50%,排長隊的擁堵以及鳴笛、闖紅燈式的開道都將被完美解決。
據阿里云介紹,Blink 永遠不會成為一個獨立的開源項目,它一定是Flink的一部分。開源后阿里云期望能找到辦法,以最快的方式將 Blink merge 到 Flink 中去。Blink 開源只有一個目的,就是希望 Flink 做得更好。
無論是功能還是生態,阿里云都會在 Flink 社區加大投入,也將投入力量做Flink社區的運營,讓Flink真正在中國、乃至全世界大規模地使用起來。
因此,從開源的角度而言,對大數據應用和用戶而言確實是一個好消息。
作者:劉學習前15年,專注于服務器、存儲以及云計算 后5年,愛上基礎軟件、管理軟件,以及國產化系統