華為云批處理和流處理引擎的選擇
目前華為主要使用的批處理和流處理引擎主要有 MapReduce、Spark、Streaming、Flink. 其中批處理引擎的代表是MapReduce,流處理引擎是Streaming,它源于Storm,混合引擎(既可以批處理又可以流處理)是Spark、Flink.
下面會根據各個引擎的特性來介紹什么樣的場景用什么類型的引擎更為合適,MapReduce,基于Hadoop的批處理計算框架,它是基于時間驅動型的批處理計算引擎,當然還有Spark 也屬于時間驅動型,而Streaming和Flink屬于事件驅動的實時流處理引擎。這里所謂的時間驅動型,相當于在一定時間區間以內,對部分數據進行處理,而如果還有新數據要處理,就需要等到下一個時間區間內才能處理。有個最為經典的例子,就是用來描述時間驅動型和事件驅動型的區別。事件驅動型相當于自動扶梯,時間驅動型相當于封閉電梯,自動扶梯一直在處理,沒有結束時間點,一旦有人(數據)就可以直接乘坐(處理)。而封閉電梯是每樓層一定時間內站(處理)一部分人(數據),一旦關門(過了時間界限),只有等待下一次電梯開門(下一個時間區間)。再回到MapReduce,它作為原生的大數據批處理引擎,在處理大數據的特性上有大規模數據集的并行計算(1TB)、易擴展、高容錯性、硬件廉價等特性。因此對于一些大數據的統計、非實時的計算都可以使用。
Spark是一種基于內存的計算框架,它的數據處理過程均在內存中,只有讀取數據和最終結果落盤才會使用硬盤進行讀寫。因此它在延遲和數據處理性能上都會強于MapReduce,而流處理模式主要由Spark Streaming負責,它等于將任務進行“微批處理“,但是相對于真正的流處理微秒級的延遲,它能做到亞秒級,因此在實時性上還略顯不足,只能用于一些對于時延要求不是很高的流處理業務。
Streaming和Flink都具有流處理引擎的功能,但是Streaming源于Strom,它只有流處理的功能,如果想做批處理,還需要與其他組件進行協同,如與Trident協同可以使用微批處理代替流處理。而Flink是具有流處理與批處理兩種功能,并且在可靠性上支持主備模式,在單線程和多線程的吞吐量上,Flink也遠超過同為流處理引擎的Streaming。而在Hadoop生態體系里,Flink能很好地與其他組件配合使用。如果配合Hadoop 堆棧使用,該技術可以很好地融入整個環境,在任何時候都只占用必要的資源。該技術可輕松地與YARN、HDFS和Kafka 集成。在兼容包的幫助下,Flink還可以運行為其他處理框架,例如Hadoop和Storm編寫的任務。這相對于Spark的資源消耗會對同一集群內的其他任務產生影響來說,也是不可多得的一個優勢。
大數據 大數據
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。
版權聲明:本文內容由網絡用戶投稿,版權歸原作者所有,本站不擁有其著作權,亦不承擔相應法律責任。如果您發現本站中有涉嫌抄襲或描述失實的內容,請聯系我們jiasou666@gmail.com 處理,核實后本網站將在24小時內刪除侵權內容。