Flink入門(四)——編程模型

file

flink是一款開源的大數據流式處理框架,他能夠同時批處理和流處理,具備容錯性、高吞吐、低延遲等優點,本文簡述flink的編程模型。html

數據集類型:

  • 無窮數據集:無窮的持續集成的數據集合
  • 有界數據集:有限不會改變的數據集合

常見的無窮數據集有:編程

  • 用戶與客戶端的實時交互數據
  • 應用實時產生的日誌
  • 金融市場的實時交易記錄

數據運算模型有哪些呢?

  • 流式:只要數據一直在生產,計算就持續地運行
  • 批處理:在預先定義的時間內運行計算,當完成時候釋放計算機資源

Flink它能夠處理有界的數據集,也能夠處理無界的數據集,它能夠流式的處理數據,也能夠批量的處理數據。網絡

Flink是什麼?

file

file

file

file

從下至上:架構

一、部署:Flink 支持本地運行、能在獨立集羣或者在被 YARN 或 Mesos 管理的集羣上運行, 也能部署在雲上。 二、運行:Flink 的核心是分佈式流式數據引擎,意味着數據以一次一個事件的形式被處理。 三、API:DataStream、DataSet、Table、SQL API。 四、擴展庫:Flink 還包括用於復瑣事件處理,機器學習,圖形處理和 Apache Storm 兼容性的專用代碼庫。框架

Flink 數據流編程模型

抽象級別 Flink提供了不一樣的抽象級別以開發流式或者批處理應用機器學習

file

最底層提供了有狀態流,它將經過過程函數嵌入到DataStream API中,它容許用戶能夠自由地處理來自一個或者多個流數據的事件,並使用一致、容錯的狀態。除此以外,用戶能夠註冊事件時間和處理事件回調,從而使程序能夠實現複雜的計算。socket

DataStream / DataSet API 是 Flink 提供的核心 API ,DataSet 處理有界的數據集,DataStream 處理有界或者無界的數據流。用戶能夠經過各類方法(map / flatmap / window / keyby / sum / max / min / avg / join 等)將數據進行轉換 / 計算。分佈式

Table API 是以 表 爲中心的聲明式 DSL,其中表可能會動態變化(在表達流數據時)。Table API 提供了例如 select、project、join、group-by、aggregate 等操做,使用起來卻更加簡潔(代碼量更少)。函數

你能夠在表與 DataStream/DataSet 之間無縫切換,也容許程序將 Table API 與 DataStream 以及 DataSet 混合使用。oop

  • Flink 提供的最高層級的抽象是 SQL 。這一層抽象在語法與表達能力上與 Table API 相似,可是是以 SQL查詢表達式的形式表現程序。SQL 抽象與 Table API 交互密切,同時 SQL 查詢能夠直接在 Table API 定義的表上執行。

Flink 程序與數據流結構

file

Flink 應用程序結構就是如上圖所示:

  • Source: 數據源,Flink 在流處理和批處理上的 source 大概有 4 類:基於本地集合的 source、基於文件的 source、基於網絡套接字的 source、自定義的 source。自定義的 source 常見的有 Apache kafka、Amazon Kinesis Streams、RabbitMQ、Twitter Streaming API、Apache NiFi 等,固然你也能夠定義本身的 source。
  • Transformation:數據轉換的各類操做,有 Map / FlatMap / Filter / KeyBy / Reduce / Fold / Aggregations / Window / WindowAll / Union / Window join / Split / Select / Project 等,操做不少,能夠將數據轉換計算成你想要的數據。
  • Sink:接收器,Flink 將轉換計算後的數據發送的地點 ,你可能須要存儲下來,Flink 常見的 Sink 大概有以下幾類:寫入文件、打印出來、寫入 socket 、自定義的 sink 。自定義的 sink 常見的有 Apache kafka、RabbitMQ、MySQL、ElasticSearch、Apache Cassandra、Hadoop FileSystem 等,同理你也能夠定義本身的 sink。

Flink系列文章:

Flink入門(一)——Apache Flink介紹

Flink入門(二)——Flink架構介紹

Flink入門(三)——環境與部署

更多實時計算,Flink,Kafka等相關技術博文,歡迎關注實時流式計算

file

原文出處:https://www.cnblogs.com/tree1123/p/12048017.html

相關文章
相關標籤/搜索