Apache Flink是一個高效、分布式、基于Java實現(xiàn)的通用大數(shù)據(jù)分析引擎,它具有分布式 MapReduce一類平臺的高效性、靈活性和擴展性以及并行數(shù)據(jù)庫查詢優(yōu)化方案,它支持批量和基于流的數(shù)據(jù)分析,且提供了基于Java和Scala的API。
從Flink官網(wǎng)得知,其具有如下主要特征:
1. 快速
Flink利用基于內(nèi)存的數(shù)據(jù)流并將迭代處理算法深度集成到了系統(tǒng)的運行時中,這就使得系統(tǒng)能夠以極快的速度來處理數(shù)據(jù)密集型和迭代任務(wù)。
2. 可靠性和擴展性
當(dāng)服務(wù)器內(nèi)存被耗盡時,F(xiàn)link也能夠很好的運行,這是因為Flink包含自己的內(nèi)存管理組件、序列化框架和類型推理引擎。
3. 表現(xiàn)力
利用Java或者Scala語言能夠編寫出漂亮、類型安全和可為核心的代碼,并能夠在集群上運行所寫程序。開發(fā)者可以在無需額外處理就使用Java和Scala數(shù)據(jù)類型
4. 易用性
在無需進行任何配置的情況下,F(xiàn)link內(nèi)置的優(yōu)化器就能夠以最高效的方式在各種環(huán)境中執(zhí)行程序。此外,F(xiàn)link只需要三個命令就可以運行在Hadoop的新MapReduce框架Yarn上,
5. 完全兼容Hadoop
Flink支持所有的Hadoop所有的輸入/輸出格式和數(shù)據(jù)類型,這就使得開發(fā)者無需做任何修改就能夠利用Flink運行歷史遺留的MapReduce操作
Flink主要包括基于Java和Scala的用于批量和基于流數(shù)據(jù)分析的API、優(yōu)化器和具有自定義內(nèi)存管理功能的分布式運行時等,其主要架構(gòu)如下
Spark Streaming和Flink都能提供恰好一次的保證,即每條記錄都僅處理一次。與其他處理系統(tǒng)(比如Storm)相比,它們都能提供一個非常高的吞吐量。它們的容錯開銷也都非常低。之前,Spark提供了可配置的內(nèi)存管理,而Flink提供了自動內(nèi)存管理,但從1.6版本開始,Spark也提供了自動內(nèi)存管理。這兩個流處理引擎確實有許多相似之處,但它們也有著巨大的差異。近日,MapR Technologies產(chǎn)品經(jīng)理Balaji Mohanam在公司內(nèi)部的白板演示中比較了Apache Spark和Apache Flink的不同之處,用戶可以參考這種比較做出選擇。
為了方便說明,Mohanam首先對批處理、微批處理和連續(xù)流操作符等三種計算模式進行了解釋。批處理基本上處理靜態(tài)數(shù)據(jù),一次讀入大量數(shù)據(jù)進行處理并生成輸出。微批處理結(jié)合了批處理和連續(xù)流操作符,將輸入分成多個微批次進行處理。從根本上講,微批處理是一個“收集然后處理”的計算模型。連續(xù)流操作符則在數(shù)據(jù)到達(dá)時進行處理,沒有任何數(shù)據(jù)收集或處理延遲。
Apache Spark和Apache Flink的主要差別就在于計算模型不同。Spark采用了微批處理模型,而Flink采用了基于操作符的連續(xù)流模型。因此,對Apache Spark和Apache Flink的選擇實際上變成了計算模型的選擇,而這種選擇需要在延遲、吞吐量和可靠性等多個方面進行權(quán)衡。
隨著數(shù)據(jù)處理能力的提高,企業(yè)開始認(rèn)識到,信息的價值在數(shù)據(jù)產(chǎn)生的時候最高。他們希望在數(shù)據(jù)產(chǎn)生時處理數(shù)據(jù),這就是說需要一個實時處理系統(tǒng)。但也不是所有情況都需要實時系統(tǒng)。Mohanam分別例舉了一些適合微批處理或?qū)崟r流處理的場景。
比如有兩個廣告科技行業(yè)的場景:一個是聚合來自不同IP地址的不同IP請求,將IP歸入黑名單或白名單;另一個是設(shè)法阻止一個黑名單IP的特定請求。前者使用微批處理就可以,而后者就需要實時流處理。再比如,在電信行業(yè),統(tǒng)計特定用戶使用的帶寬,微批處理可能是一個更高效的方案,而網(wǎng)絡(luò)異常檢測就需要實時流處理了。也有一些場景,微批處理和實時流處理都適用,如在IoT行業(yè)查看特定工業(yè)設(shè)備的使用情況。
聯(lián)系客服