2018-11-21-Flink(2)——apache flink 介紹

本文轉(zhuǎn)自個(gè)人微信公眾號(hào)掩完,原文鏈接瘤礁。

Apache Flink is a framework and distributed processing engine for stateful computations over?unbounded and bounded?data streams. Flink has been designed to run in?all common cluster environments, perform computations at?in-memory speed?and at?any scale.

1 概念

1.1 Bounded Streams VS Unbounded Streams & 批處理 VS 流處理

Bounded Streams 可以理解為有開始也有結(jié)束的數(shù)據(jù)流,處理這類數(shù)據(jù)流可以等所有數(shù)據(jù)都到了再處理,也就是常說的批處理

Unbounded Streams 可以理解為有開始沒有結(jié)束的數(shù)據(jù)流械筛,這類數(shù)據(jù)流持續(xù)產(chǎn)生數(shù)據(jù),所以飒炎,也要持續(xù)的進(jìn)行處理而不能等數(shù)據(jù)流結(jié)束再處理变姨,也就是常說的流處理

Apache Flink 既能處理Bounded Streams 也擅長處理Unbounded Streams厌丑,既能做批處理也能做流處理定欧。

1.2 部署方式

Apache Flink 是一個(gè)分布式系統(tǒng),需要資源以運(yùn)行其它應(yīng)用怒竿,Apache Flink 支持常見的資源管理器砍鸠,包括Yarn、 Mesos耕驰、K8S爷辱,也可以以Stand-Alone Cluster的方式運(yùn)行。

1.3. Runtime

Apache Flink Runtime 是一個(gè)典型的master-slave架構(gòu), 包括Jobmanagers 和 Taskmanagers 兩部分:

Jobmanagers (masters):協(xié)調(diào)分布式執(zhí)行饭弓,包括調(diào)度任務(wù)双饥、協(xié)調(diào)checkpoints、從失敗恢復(fù)等弟断。一般至少需要一個(gè)Jobmanager咏花,在HA環(huán)境下,需要有多個(gè)Jobmanagers阀趴,其中有一個(gè)作為leader昏翰,其他的standby。

taskmanagers (workers):執(zhí)行具體的任務(wù)刘急,buffer和傳遞數(shù)據(jù)流棚菊。

另外,Clients 不是Apache Flink Runtime的一部分叔汁,但常用于準(zhǔn)備和提交Job到 Jobmanager统求。

1.4 編程模型

1.4.1 抽象

Apache Flink 提供了不同的抽象級(jí)別以開發(fā)Flink 應(yīng)用。

Stateful Streaming:抽象級(jí)別最低据块,給應(yīng)用開發(fā)者提供了最大的自由度球订,實(shí)際開發(fā)中很少使用。

DataStream / DataSet API: 這是Flink 提供的核心APIs瑰钮,DataStream API 用于Unbounded Stream Data冒滩,DataSet API 用于Boundesd Stream Data,用于使用各種方法對(duì)數(shù)據(jù)進(jìn)行計(jì)算處理浪谴,如map等开睡。

Table API:以為核心的的聲明式DSL,該表可以是動(dòng)態(tài)變化的表苟耻,該層API提供了諸如Select篇恒、Join、Group-by凶杖、Aggregate之類的操作胁艰,更加簡潔。另外智蝠,用戶可以在Table API和Dataset/Datastream API 之間無縫切換甚至混用腾么。

SQL:跟Table API相似,只不過是以SQL的方式進(jìn)行描述杈湾。

1.4.2 程序與Dataflows

Apache Flink 程序一般包括data streams和?transformations?兩部分解虱,其中,data streams 是數(shù)據(jù)流漆撞,transformations 是操作數(shù)據(jù)流的算子殴泰,以一個(gè)或多個(gè)數(shù)據(jù)流為輸入于宙,輸出一個(gè)或多個(gè)數(shù)據(jù)流。

當(dāng)Apache Flink 程序運(yùn)行時(shí)悍汛,F(xiàn)link 程序可以理解為包含streams?和 transformation?operators?的streaming dataflow捞魁,每個(gè)dataflow 以一個(gè)或多個(gè)sources開始并以一個(gè)或多個(gè)sinks 結(jié)束,這個(gè)dataflow 類似于DAGs(directed acyclic graphs)离咐。(有沒有一種熟悉的感覺谱俭,比如Spark、Flume…)

Sources:數(shù)據(jù)源健霹,常見的如kafka。

Transformations:數(shù)據(jù)轉(zhuǎn)換瓶蚂,可以理解為對(duì)數(shù)據(jù)的操作糖埋。

Sinks:接收器,F(xiàn)link 轉(zhuǎn)換后將數(shù)據(jù)發(fā)送到的地方窃这。

1.4.3 其它重要概念

1.4.3.1 Time

在流計(jì)算中瞳别,Time包括三種:

Ingestion Time:數(shù)據(jù)記錄進(jìn)入Flink Data Source的時(shí)間。

Processing Time:Flink Operator進(jìn)行time-based 操作的本地時(shí)間杭攻。

Event Time:數(shù)據(jù)的時(shí)間祟敛,一般有業(yè)務(wù)意義。

Apache 可以支持這三種Time兆解,每種Time都有特定的用途馆铁,后序文章會(huì)詳細(xì)進(jìn)行說明。

1.4.3.2 Window

不同于批計(jì)算锅睛,流計(jì)算的計(jì)算一般是針對(duì)一個(gè)窗口的數(shù)據(jù)的計(jì)算埠巨,比如“統(tǒng)計(jì)過去5分鐘的記錄數(shù)”、“過去100個(gè)數(shù)據(jù)的平均值”等现拒。

窗口包括按時(shí)間進(jìn)行劃分的和按數(shù)據(jù)進(jìn)行劃分的辣垒,典型的包括?tumbling windows、?sliding windows,?session windows印蔬,每種窗口應(yīng)用于不同的場景勋桶。

1.4.3.3 State

有些操作只需要知道當(dāng)前數(shù)據(jù)記錄即可,還有些操作需要其它數(shù)據(jù)記錄侥猬,我們稱這種操作是stateful operations例驹,比如要計(jì)算Sum、Avg等退唠,這些值是需要存儲(chǔ)的眠饮,因?yàn)闀?huì)不斷變化,這些值就可以理解為?state铜邮。

Apache Flink 提供了內(nèi)置的狀態(tài)管理仪召,這也是Flink 區(qū)別于其它流計(jì)算引擎的最主要的區(qū)別寨蹋。

1.4.3.4 Checkpoint

Apache Flink的checkpoints 可以理解為輸入數(shù)據(jù)流在某一點(diǎn)以及所有operators對(duì)應(yīng)的state,Apache Flink 基于checkpoints 和 stream replay 實(shí)現(xiàn)容錯(cuò)扔茅,并基于此實(shí)現(xiàn)數(shù)據(jù)一致性(exactly-once)已旧。

2 Why Flink

上面主要介紹Flink 中的核心概念,總結(jié)下為什么選擇Flink:

Apache Flink 是一個(gè)低延遲召娜、高吞吐运褪、統(tǒng)一的大數(shù)據(jù)計(jì)算引擎。

支持狀態(tài)管理玖瘸,提供有狀態(tài)的計(jì)算秸讹。

提供準(zhǔn)確的結(jié)果,即使出現(xiàn)數(shù)據(jù)亂序或數(shù)據(jù)延遲雅倒。Flink 程序符合自然規(guī)律璃诀,如多種窗口、event time等能滿足正確性的要求蔑匣,而且劣欢,基于checkpoint 和replay 提供故障恢復(fù),支持 Exactly-Once 語義裁良,保障正確性凿将。

支持Yarn / Mesos / K8S等多種資源管理器,可以方便擴(kuò)展价脾。

是一個(gè)批流統(tǒng)一的平臺(tái)牧抵,在未來,批流融合是一大趨勢侨把。

Flink SQL 降低了使用門檻灭忠,便于推廣。

下篇文章座硕,開始編寫第一個(gè)Flink 程序弛作。

掃描下方二維碼關(guān)注我。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末华匾,一起剝皮案震驚了整個(gè)濱河市映琳,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌蜘拉,老刑警劉巖萨西,帶你破解...
    沈念sama閱讀 222,252評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異旭旭,居然都是意外死亡谎脯,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,886評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門持寄,熙熙樓的掌柜王于貴愁眉苦臉地迎上來源梭,“玉大人娱俺,你說我怎么就攤上這事》下椋” “怎么了荠卷?”我有些...
    開封第一講書人閱讀 168,814評(píng)論 0 361
  • 文/不壞的土叔 我叫張陵,是天一觀的道長烛愧。 經(jīng)常有香客問我油宜,道長,這世上最難降的妖魔是什么怜姿? 我笑而不...
    開封第一講書人閱讀 59,869評(píng)論 1 299
  • 正文 為了忘掉前任慎冤,我火速辦了婚禮,結(jié)果婚禮上沧卢,老公的妹妹穿的比我還像新娘蚁堤。我一直安慰自己,他們只是感情好搏恤,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,888評(píng)論 6 398
  • 文/花漫 我一把揭開白布违寿。 她就那樣靜靜地躺著湃交,像睡著了一般熟空。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上搞莺,一...
    開封第一講書人閱讀 52,475評(píng)論 1 312
  • 那天息罗,我揣著相機(jī)與錄音,去河邊找鬼才沧。 笑死迈喉,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的温圆。 我是一名探鬼主播挨摸,決...
    沈念sama閱讀 41,010評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼岁歉!你這毒婦竟也來了得运?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,924評(píng)論 0 277
  • 序言:老撾萬榮一對(duì)情侶失蹤锅移,失蹤者是張志新(化名)和其女友劉穎熔掺,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體非剃,經(jīng)...
    沈念sama閱讀 46,469評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡置逻,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,552評(píng)論 3 342
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了备绽。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片券坞。...
    茶點(diǎn)故事閱讀 40,680評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡鬓催,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出报慕,到底是詐尸還是另有隱情深浮,我是刑警寧澤,帶...
    沈念sama閱讀 36,362評(píng)論 5 351
  • 正文 年R本政府宣布眠冈,位于F島的核電站飞苇,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏蜗顽。R本人自食惡果不足惜布卡,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,037評(píng)論 3 335
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望雇盖。 院中可真熱鬧忿等,春花似錦、人聲如沸崔挖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,519評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽狸相。三九已至薛匪,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間脓鹃,已是汗流浹背逸尖。 一陣腳步聲響...
    開封第一講書人閱讀 33,621評(píng)論 1 274
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留瘸右,地道東北人娇跟。 一個(gè)月前我還...
    沈念sama閱讀 49,099評(píng)論 3 378
  • 正文 我出身青樓,卻偏偏與公主長得像太颤,于是被迫代替她去往敵國和親苞俘。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,691評(píng)論 2 361

推薦閱讀更多精彩內(nèi)容