大數(shù)據(jù)分析引擎Apache Flink

| 1970-01-01 admin

Apache Flink是一個高效、分布式、基于Java實現(xiàn)的通用大數(shù)據(jù)分析引擎,它具有分布式 MapReduce一類平臺的高效性、靈活性和擴展性以及并行數(shù)據(jù)庫查詢優(yōu)化方案,它支持批量和基于流的數(shù)據(jù)分析,且提供了基于Java和Scala的API。從Apache官方博客中得知,F(xiàn)link已于近日升級成為Apache基金會的頂級項目。Flink項目的副總裁對此評論到:

Flink能夠成為基金會的頂級項目,自己感到非常高興。自己認為社區(qū)的驅動將是Flink成長的最好保證。Flink逐漸的成長以及眾多新人加入該社區(qū)真是一件大好事。

從Flink官網得知,其具有如下主要特征:

1. 快速

Flink利用基于內存的數(shù)據(jù)流并將迭代處理算法深度集成到了系統(tǒng)的運行時中,這就使得系統(tǒng)能夠以極快的速度來處理數(shù)據(jù)密集型和迭代任務。

2. 可靠性和擴展性

當服務器內存被耗盡時,F(xiàn)link也能夠很好的運行,這是因為Flink包含自己的內存管理組件、序列化框架和類型推理引擎。

3. 表現(xiàn)力

利用Java或者Scala語言能夠編寫出漂亮、類型安全和可為核心的代碼,并能夠在集群上運行所寫程序。開發(fā)者可以在無需額外處理就使用Java和Scala數(shù)據(jù)類型

4. 易用性

在無需進行任何配置的情況下,F(xiàn)link內置的優(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)化器和具有自定義內存管理功能的分布式運行時等,其主要架構如下:

大數(shù)據(jù)分析引擎

如今流處理越來越流行,例如Apache Kafka, Apache Samza, Apache Storm, Apache Spark的Streaming模塊等等,云服務還有類似Google Cloud Dataflow。Apache Flink作為一個新的流處理系統(tǒng),其特點是:

1. 低延遲的流處理器

2.豐富的API能夠幫助程序員快速開發(fā)流數(shù)據(jù)應用

3.靈活的操作狀態(tài)和流窗口

4.高效的流與數(shù)據(jù)的容錯很多公司正在從傳統(tǒng)的批處理架構遷移到實時流架構,在分布式系統(tǒng)如HDFS中靜態(tài)文件和關系數(shù)據(jù)庫在通過事件流得到增強,使用批處理實現(xiàn)的工作任務能夠在流處理中以更低延遲實現(xiàn)。

這種轉型有許多方式,首先,許多數(shù)據(jù)集和用例都是基于事件的(比如機器日志等),其次流處理在某種程度上可以處理更復雜的工作任務,流處理原則上能夠以低延時執(zhí)行大部分批處理的工作任務,這樣,當流處理能夠處理同樣的工作任務時,幾乎沒有理由再選擇使用hadoop這樣的批處理框架了。最后,一些新的應用類型諸如處理敏感數(shù)據(jù)經常需要持續(xù)查詢,這些應用只能使用流架構實現(xiàn)。一個典型的流架構由下面三個組件組成:

1. 一個模塊組件是從各種數(shù)據(jù)源收集事件流

2. 一個模塊組件集成各種流,使它們可用于直接消費。

3.一個模塊組件用來分析消費這些流數(shù)據(jù)

第一步是從各種數(shù)據(jù)源收集事件,事件來自于數(shù)據(jù)庫,機器產生日志,事件傳感器等,這些事件需要清理 組織化到一個中心。

第二步,在一個中心集成各種流,典型工具如Apache Kafka,Kafka提供一個broker功能,以失敗容錯的高可靠性用來收集流 日志或緩沖數(shù)據(jù),以及分發(fā)到各種對不同流感興趣的消費者那里進行分析。

第三步,對流進行真正的分析,比如創(chuàng)建計數(shù)器 實現(xiàn)聚合,Map/Reduce之類計算,將各種流Join一起分析等等,提供了數(shù)據(jù)分析所需的一步到位的高級編程。Apache Flink正是這步實現(xiàn)。

http://flink.apache.org/introduction.html