本文整理自云棲社區之前對阿里搜索事業部資深搜索專家蔣曉偉老師的一次采訪,蔣曉偉老師,認真而嚴謹,在加入阿里之前,他曾就職于西雅圖的臉書,負責過調度系統,Timeline Infra和Messenger的專案,而后在微軟的SQL Server引擎擔任過Principal Engineer,負責關系資料庫的架構作業,2014年加入阿里以后,作為阿里搜索事業部資深搜索專家,他負責搜索工程的資料團隊,
談起大資料框架,業內尤其對于開源大資料生態圈的許多優秀的計算框架耳熟能詳,比如Spark、Hadoop、Storm等,但對于Apache基金會的頂級專案的Flink,知道的都比較有限,而更多是對比Spark,比如知乎的這篇帖子討論的就是“Apache Flink和Apache Spark有什么異同?它們的發展前景分別怎樣?”
為了幫助更多朋友了解Flink,和阿里阿里流計算和批處理引擎Blink,云棲社區特別采訪了蔣曉偉,
云棲社區:相比Spark、Hadoop、Storm等,是什么樣的場景需求讓阿里搜索團隊選擇了Flink?
蔣曉偉:首先我們希望有個流計算和批處理的一體化處理方案,Spark和Flink都具有流和批處理能力,但是他們的做法是相反的,Spark Streaming是把流轉化成一個個小的批來處理,這種方案的一個問題是我們需要的延遲越低,額外開銷占的比例就會越大,這導致了Spark Streaming很難做到秒級甚至亞秒級的延遲,Flink是把批當作一種有限的流,這種做法的一個特點是在流和批共享大部分代碼的同時還能夠保留批處理特有的一系列的優化,因為這個原因,如果要用一套引擎來解決流和批處理,那就必須以流處理為基礎,所以我們決定先選擇一個優秀的流處理引擎,從功能上流處理可以分為無狀態的和有狀態兩種,在流處理的框架里引入狀態管理大大提升了系統的表達能力,讓用戶能夠很方便地實作復雜的處理邏輯,是流處理在功能上的一個飛躍,流處理引擎對一致性的支持可以分為:best effort,at least once 和 exactly once,Exactly once的語意才能真正保證完全的一致性,Flink采用的架構比較優雅地實作了exactly once的有狀態流處理,另外在保證了一致性的前提下Flink在性能上也是相當優秀的,總結一下,我們覺得在流處理方面Flink在功能,延遲,一致性和性能上綜合來看是目前社區最優秀的,所以我們決定采用它來實作流和批的一體化方案,最后,還有一個很重要的原因是Flink有一個比較活躍的社區,
云棲社區:如何看待Flink、Spark、Hadoop、Storm等技術發展和不同場景下的優勢對比?比如與Spark相反,Flink把批處理化作流處理,這種方式在使用時是否有什么限制?
蔣曉偉:大資料是從批處理開始的,所以很多系統都是從批處理做起,包括Spark,在批處理上Spark有著較深的積累,是一個比較優秀的系統,隨著技術的發展,很多原來只有批處理的業務都有了實時的需求,流處理將會變得越來越重要,甚至成為大資料處理的主要場景,Flink把批當作流來處理有個很重要的優點是如果我們在流中引入一個blocking的算子,我們還能接著做批處理特有的優化,這個是以流處理為基礎的計算引擎的一大優勢,所以我認為在架構上這種設計在批處理上是可以做到最優的,而且比傳統的做法還有一些特別的優勢,當然工程上的實作也很重要,
云棲社區:阿里巴巴搜索的流計算和批處理引擎的Blink是基于Apache Flink專案并且在API兼容的,那么在Flink使用程序中有趟過哪些坑?Blink在哪些方面做出了改進?
蔣曉偉:Flink在架構上有很多創新,是非常領先的,但是在工程的實作上有一些不足之處,比如說不同的job的任務可能運行在同一個行程里,這樣一個job的問題可能影響其他job的穩定性,Flink的工程實作也不能把集群的資源最合理地利用起來,Blink重新實行了Yarn的結合,完全解決了這些問題,另外Flink是通過checkpoint的機制來保證一致性的,但原有的機制效率比較低,導致在狀態較大的時候不可用,Blink大大優化了checkpoint,能夠高效地處理很大的狀態,穩定性和scalability在生產上都是至關重要的,通過在大集群上的錘煉,Blink解決了一系列這方面的問題和瓶頸,已經成為一個能夠支撐核心業務的計算引擎,同時我們擴展了Flink的Streaming SQL層,使得它能夠比較完備地支持較復雜的業務,
云棲社區:是否有反饋Flink社區的計劃?以及您認為Flink未來的殺手級應用會是什么?
蔣曉偉:我們正在和Flink的發明者Stephan溝通把Blink反饋回Flink社區,這樣才能讓社區更強大,而社區更強大我們也會更強大,我們計劃的第一步是把Blink的Yarn的實作反饋回去,并且抽象出一個支持不同調度系統的方案,接下來會把我們在checkpoint,穩定性,scalability, 可運維性,SQL等方面的改進和優化都陸續反饋回去,我覺得Flink在流計算上的優勢是非常大的,隨著在線學習等流計算需求的增長,在這方面Flink一定會大放異彩,
云棲社區:從Facebook、微軟到阿里,技術開發經驗豐富,那么對于技術開發者的成長,有哪些建議或者經驗分享?以及推薦一本最喜歡的技術書籍,
蔣曉偉:我覺得在學習中和作業很重要的一點是遇到任何問題一定要刨根問底,不要停留在現象和一些淺層次的直觀的原因上,一定要找到本質,一個比較好的判定標志是你能不能一句話給別人講清楚,要做到這個可能會讓你一開始花更多的時間,甚至覺得自己學得比別人慢很多,但是你學過的每個東西都是完全吃透的,而很多東西的原理是相通的,在一段時間的積累后你會發現學任何新東西就像看說明書一樣了,書我還真推薦不了,因為我一般是有問題現查,反正是說明書,
更多文章
MapReduce Shuffle 和 Spark Shuffle 原理概述
知識圖譜在大資料中的應用
基于 Apache Flink 和規則引擎的實時風控解決方案
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/46503.html
標籤:大數據
