Flink從入門到放棄(入門篇1)-Flink是什么

戳更多文章:

1-Flink入門

2-本地環(huán)境搭建&構(gòu)建第一個Flink應(yīng)用

3-DataSet API

4-DataSteam API

5-集群部署

6-分布式緩存

7-重啟策略

8-Flink中的窗口

9-Flink中的Time

Flink時間戳和水印

Broadcast廣播變量

FlinkTable&SQL

Flink實戰(zhàn)項目實時熱銷排行

Flink寫入RedisSink

17-Flink消費Kafka寫入Mysql

本文是例行介紹,熟悉的直接跳過 - 魯迅

魯迅: ...

大綱

入門篇:

image

放棄篇:

image

圖片顯示不了,戳這里:

https://github.com/wangzhiwubigdata/God-Of-BigData/blob/master/Flink

插個廣告

  • 全網(wǎng)唯一一個從0開始幫助Java開發(fā)者轉(zhuǎn)做大數(shù)據(jù)領(lǐng)域的公眾號~

  • 公眾號大數(shù)據(jù)技術(shù)與架構(gòu)或者搜索import_bigdata關(guān)注,大數(shù)據(jù)學(xué)習(xí)路線最新更新,已經(jīng)有很多小伙伴加入了~

image

Flink是什么

一句話概括

Apache Flink是一個面向分布式數(shù)據(jù)流處理和批量數(shù)據(jù)處理的開源計算平臺,提供支持流處理和批處理兩種類型應(yīng)用的功能。

前身

Apache Flink 的前身是柏林理工大學(xué)一個研究性項目, 在 2014 被 Apache 孵化器所接受,然后迅速地成為了Apache Software Foundation的頂級項目之一。

特點

現(xiàn)有的開源計算方案,會把流處理和批處理作為兩種不同的應(yīng)用類型:流處理一般需要支持低延遲、Exactly-once保證,而批處理需要支持高吞吐、高效處理。
Flink是完全支持流處理,也就是說作為流處理看待時輸入數(shù)據(jù)流是無界的;批處理被作為一種特殊的流處理,只是它的輸入數(shù)據(jù)流被定義為有界的。

Flink組件棧

image

)

Deployment層

主要涉及了Flink的部署模式,F(xiàn)link支持多種部署模式:本地、集群(Standalone/YARN)、云(GCE/EC2)

image

Runtime層

Runtime層提供了支持Flink計算的全部核心實現(xiàn),比如:支持分布式Stream處理、JobGraph到ExecutionGraph的映射、調(diào)度等等,為上層API層提供基礎(chǔ)服務(wù)

API層

API層主要實現(xiàn)了面向無界Stream的流處理和面向Batch的批處理API,其中面向流處理對應(yīng)DataStream API,面向批處理對應(yīng)DataSet API

Libaries層

  • 在API層之上構(gòu)建的滿足特定應(yīng)用的實現(xiàn)計算框架,也分別對應(yīng)于面向流處理和面向批處理兩類

  • 面向流處理支持:CEP(復(fù)雜事件處理)、基于SQL-like的操作(基于Table的關(guān)系操作)

  • 面向批處理支持:FlinkML(機(jī)器學(xué)習(xí)庫)、Gelly(圖處理)

Flink的優(yōu)勢

  • 支持高吞吐、低延遲、高性能的流處理
  • 支持高度靈活的窗口(Window)操作
  • 支持有狀態(tài)計算的Exactly-once語義
  • 提供DataStream API和DataSet API
image
image

Flink基本編程模型

  • Flink程序的基礎(chǔ)構(gòu)建模塊是流(streams) 與 轉(zhuǎn)換(transformations)
  • 每一個數(shù)據(jù)流起始于一個或多個 source,并終止于一個或多個 sink

下面是一個由Flink程序映射為Streaming Dataflow的示意圖:

image

并行數(shù)據(jù)流示意圖:

image

Flink基本架構(gòu)

  • Flink是基于Master-Slave風(fēng)格的架構(gòu)
  • Flink集群啟動時,會啟動一個JobManager進(jìn)程、至少一個TaskManager進(jìn)程
image

JobManager

  • Flink系統(tǒng)的協(xié)調(diào)者,它負(fù)責(zé)接收Flink Job,調(diào)度組成Job的多個Task的執(zhí)行

  • 收集Job的狀態(tài)信息,并管理Flink集群中從節(jié)點TaskManager

TaskManager

  • 實際負(fù)責(zé)執(zhí)行計算的Worker,在其上執(zhí)行Flink Job的一組Task
  • TaskManager負(fù)責(zé)管理其所在節(jié)點上的資源信息,如內(nèi)存、磁盤、網(wǎng)絡(luò),在啟動的時候?qū)①Y源的狀態(tài)向JobManager匯報

Client

  • 用戶提交一個Flink程序時,會首先創(chuàng)建一個Client,該Client首先會對用戶提交的Flink程序進(jìn)行預(yù)處理,并提交到Flink集群

  • Client會將用戶提交的Flink程序組裝一個JobGraph, 并且是以JobGraph的形式提交的

最后

本文是例行介紹,熟悉的直接跳過。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容