目錄
Flink功能架構
Flink輸入輸出
Flink功能架構
Flink是分層架構的分布式計算引擎,每層的實現依賴下層提供的服務,同時提供抽象的接口和服務供上層使用。
Flink 架構可以分為4層,包括Deploy部署層、Core核心層、API層和Library層
- 部署層:主要涉及Flink的部署模式。Flink支持多種部署模式,如本地(local)、集群(Standalone/YARN)、云服務器(GCE/EC2)。
可以啟動單個JVM,讓Flink以local模式運行Flink,也可以以Standalone 集群模式運行,同時也支持Flink ON YARN,Flink應用直接提交到YARN上面運行,Flink還可以運行在GCE(谷歌云服務)和EC2(亞馬遜云服務)
- 核心層:提供了支持Flink計算的全部核心實現,如支持分布式流式處理、JobGraph到ExecutionGraph的映射、調度等,為上層API提供基礎服務。
Core層(Runtime)在Runtime之上提供了兩套核心的API,DataStream API(流處理)和DataSet API(批處理)
有狀態(tài)的流式處理層:最底層的抽象僅僅提供有狀態(tài)的數據流,它通過處理函數嵌入數據流API(DataStream API)中。用戶可以通過它自由處理單流或者多流,并保持一致性和容錯性。同時,用戶可以進行注冊事件時間和處理時間的回調,以實現復雜的計算邏輯
- API層:主要實現了面向無界Stream的流式處理和面向Batch的批量處理API,其中,面向流式處理對應DataStream API,面向批量處理對應DataSet API。
- 庫層:該層也可以稱為“應用框架層”,它是根據API層的劃分,在API層之上構建的滿足特定應用的計算實現框架,也分別對應于面向流式處理和面向批量處理兩類。面向流式處理支持復雜事件處理(Complex Event Processing,CEP)、基于SQL-like的操作(基于Table的關系操作);面向批量處理支持FlinkML(機器學習庫)、Gelly(圖處理)。
SQL 既可以運行在DataStreamAPI上,又可以運行在DataSet API上。
Flink輸入輸出
Flink最適合的應用場景是低時延的數據處理(Data Processing)場景:高并發(fā)pipeline處理數據,時延毫秒級,且兼具可靠性。
Flink作為大數據生態(tài)的一員,除了本身外,可以很好地與生態(tài)中的其他組件進行結合使用,大的概況方面來講,就有輸入方面和輸出方面。
如下圖左右兩側框圖,其中綠色背景是流處理方式的場景,藍色背景是批處理方式的場景。
左側輸入Connectors
流處理方式:包含Kafka(消息隊列)、AWS kinesis(實時數據流服務)、RabbitMQ(消息隊列)、NIFI(數據管道)、Twitter(API)
批處理方式:包含HDFS(分布式文件系統(tǒng))、HBase(分布式列式數據庫)、Amazon S3(文件系統(tǒng))、 MapR FS(文件系統(tǒng))、ALLuxio(基于內存分布式文件系統(tǒng))
右側輸出Connectors
流處理方式:包含Kafka(消息隊列)、AWS kinesis(實時數據流服務)、RabbitMQ(消息隊列)、NIFI(數據管道)、Cassandra(NOSQL數據庫)、ElasticSearch(全文檢索)、HDFS rolling file(滾動文件)文章來源:http://www.zghlxwxcb.cn/news/detail-494905.html
批處理方式:包含HBase(分布式列式數據庫)、HDFS(分布式文件系統(tǒng))文章來源地址http://www.zghlxwxcb.cn/news/detail-494905.html
到了這里,關于Flink流批一體計算(4):Flink功能模塊的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!