偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

終于有人把 Flink 設(shè)計(jì)理念與基本架構(gòu)講明白了

開發(fā) 架構(gòu)
MapReduce 是由谷歌首次在論文“MapReduce: Simplified Data Processing on Large Clusters”(谷歌大數(shù)據(jù)三駕馬車之一)中提出的,是一種處理和生成大數(shù)據(jù)的編程模型。

[[442090]]

一.Flink與主流計(jì)算引擎對比

1. Hadoop MapReduce

MapReduce 是由谷歌首次在論文“MapReduce: Simplified Data Processing on Large Clusters”(谷歌大數(shù)據(jù)三駕馬車之一)中提出的,是一種處理和生成大數(shù)據(jù)的編程模型。Hadoop MapReduce借鑒了谷歌這篇論文的思想,將大的任務(wù)分拆成較小的任務(wù)后進(jìn)行處理,因此擁有更好的擴(kuò)展性。如圖1所示,Hadoop MapReduce 包括兩個階段—Map和Reduce:Map 階段將數(shù)據(jù)映射為鍵值對(key/value),map 函數(shù)在Hadoop 中用Mapper類表示;Reduce階段使用shuffle后的鍵值對數(shù)據(jù),并使用自身提供的算法對其進(jìn)行處理,得到輸出結(jié)果,reduce函數(shù)在Hadoop中用Reducer類表示。其中shuffle階段對MapReduce模式開發(fā)人員透明。

圖1 Hadoop MapReduce處理模型

Hadoop MR1 通過JobTracker進(jìn)程來管理作業(yè)的調(diào)度和資源,TaskTracker進(jìn)程負(fù)責(zé)作業(yè)的實(shí)際執(zhí)行,通過Slot來劃分資源(CPU、內(nèi)存等),Hadoop MR1存在資源利用率低的問題。Hadoop MR2 為了解決MR1存在的問題,對作業(yè)的調(diào)度與資源進(jìn)行了升級改造,將JobTracker變成YARN,提升了資源的利用率。其中,YARN 的ResourceManager 負(fù)責(zé)資源的管理,ApplicationMaster負(fù)責(zé)任務(wù)的調(diào)度。YARN 支持可插拔,不但支持Hadoop MapReduce,還支持Spark、Flink、Storm等計(jì)算框架。Hadoop MR2 解決了Hadoop MR1的一些問題,但是其對HDFS的頻繁I/O操作會導(dǎo)致系統(tǒng)無法達(dá)到低延遲的要求,因而它只適合離線大數(shù)據(jù)的處理,不能滿足實(shí)時計(jì)算的要求。

2. Spark

Spark 是由加州大學(xué)伯克利分校開源的類Hadoop MapReduce的大數(shù)據(jù)處理框架。與 Hadoop MapReduce相比,它最大的不同是將計(jì)算中間的結(jié)果存儲于內(nèi)存中,而不需要存儲到HDFS中。

Spark的基本數(shù)據(jù)模型為RDD(Resilient Distributed Dataset,彈性分布式數(shù)據(jù)集)。RDD是一個不可改變的分布式集合對象,由許多分區(qū)(partition)組成,每個分區(qū)包含RDD的一部分?jǐn)?shù)據(jù),且每個分區(qū)可以在不同的節(jié)點(diǎn)上存儲和計(jì)算。在Spark 中,所有的計(jì)算都是通過RDD的創(chuàng)建和轉(zhuǎn)換來完成的。

Spark Streaming 是在Spark Core的基礎(chǔ)上擴(kuò)展而來的,用于支持實(shí)時流式數(shù)據(jù)的處理。如圖2所示,Spark Streaming 對流入的數(shù)據(jù)進(jìn)行分批、轉(zhuǎn)換和輸出。微批處理無法滿足低延遲的要求,只能算是近實(shí)時計(jì)算。

圖2 Spark Streaming 處理模型

Structured Streaming 是基于Streaming SQL 引擎的可擴(kuò)展和容錯的流式計(jì)算引擎。如圖3所示,Structured Streaming將流式的數(shù)據(jù)整體看成一張無界表,將每一條流入的數(shù)據(jù)看成無界的輸入表,對輸入進(jìn)行處理會生成結(jié)果表。生成結(jié)果表可以通過觸發(fā)器來觸發(fā),目前支持的觸發(fā)器都是定時觸發(fā)的,整個處理類似Spark Streaming的微批處理;從Spark 2.3開始引入持續(xù)處理。持續(xù)處理是一種新的、處于實(shí)驗(yàn)狀態(tài)的流式處理模型,它在Structured Streaming的基礎(chǔ)上支持持續(xù)觸發(fā)來實(shí)現(xiàn)低延遲。

圖3 Structured Streaming處理模型

3. Flink

Flink是對有界數(shù)據(jù)和無界數(shù)據(jù)進(jìn)行有狀態(tài)計(jì)算的分布式引擎,它是純流式處理模式。流入Flink的數(shù)據(jù)會經(jīng)過預(yù)定的DAG(Directed Acyclic Graph,有向無環(huán)圖)節(jié)點(diǎn),F(xiàn)link會對這些數(shù)據(jù)進(jìn)行有狀態(tài)計(jì)算,整個計(jì)算過程類似于管道。每個計(jì)算節(jié)點(diǎn)會有本地存儲,用來存儲計(jì)算狀態(tài),而計(jì)算節(jié)點(diǎn)中的狀態(tài)會在一定時間內(nèi)持久化到分布式存儲,來保證流的容錯,如圖4所示。這種純流式模式保證了Flink的低延遲,使其在諸多的實(shí)時計(jì)算引擎競爭中具有優(yōu)勢。

圖4 Flink 流式處理模型

二.Flink基本架構(gòu)

下面從分層角度和運(yùn)行時角度來介紹Flink 基本架構(gòu)。其中,對于運(yùn)行時Flink 架構(gòu),會以1.5版本為分界線對前后版本的架構(gòu)變更進(jìn)行介紹。

1. 分層架構(gòu)

Flink是分層架構(gòu)的分布式計(jì)算引擎,每層的實(shí)現(xiàn)依賴下層提供的服務(wù),同時提供抽象的接口和服務(wù)供上層使用。整體分層架構(gòu)如圖5所示。

圖5 Flink 分層架構(gòu)

  • 部署:Flink 支持本地運(yùn)行,支持Standalone 集群以及YARN、Mesos、Kubernetes管理的集群,還支持在云上運(yùn)行。
  • 核心:Flink的運(yùn)行時是整個引擎的核心,是分布式數(shù)據(jù)流的實(shí)現(xiàn)部分,實(shí)現(xiàn)了運(yùn)行時組件之間的通信及組件的高可用等。
  • API:DataStream 提供流式計(jì)算的API,DataSet 提供批處理的API,Table 和SQL AP提供對Flink 流式計(jì)算和批處理的SQL的支持。
  • Library:在Library層,F(xiàn)link 提供了復(fù)雜事件處理(CEP)、圖計(jì)算(Gelly)及機(jī)器學(xué)習(xí)庫。

2. 運(yùn)行時架構(gòu)

Flink 運(yùn)行時架構(gòu)經(jīng)歷過一次不小的演變。在Flink 1.5 版本之前,運(yùn)行時架構(gòu)如圖6所示。

圖6 Flink 1.5 以前版本的運(yùn)行時架構(gòu)

  • Client 負(fù)責(zé)編譯提交的作業(yè),生成DAG,并向JobManager提交作業(yè),往JobManager發(fā)送操作作業(yè)的命令。
  • JobManager 作為Flink引擎的Master角色,主要有兩個功能:作業(yè)調(diào)度和檢查點(diǎn)協(xié)調(diào)。
  • TaskManager為Flink 引擎的Worker角色,是作業(yè)實(shí)際執(zhí)行的地方。TaskManager通過Slot對其資源進(jìn)行邏輯分割,以確定TaskManager運(yùn)行的任務(wù)數(shù)量。

從Flink 1.5開始,F(xiàn)link 運(yùn)行時有兩種模式,分別是Session 模式和Per-Job模式。

Session模式:在Flink 1.5之前都是Session模式,1.5及之后的版本與之前不同的是引入了Dispatcher。Dispatcher負(fù)責(zé)接收作業(yè)提交和持久化,生成多個JobManager和維護(hù)Session的一些狀態(tài),如圖7所示。

圖7 Session模式

Per-Job模式:該模式啟動后只會運(yùn)行一個作業(yè),且集群的生命周期與作業(yè)的生命周期息息相關(guān), 而Session 模式可以有多個作業(yè)運(yùn)行、多個作業(yè)共享TaskManager資源, 如圖8所示。

圖8 Per-Job模式

關(guān)于作者:羅江宇,趙士杰,李涵淼,閔文俊,四位作者都是非常資深的Flink專家,部分作者是Flink源代碼的維護(hù)者和改造者。

羅江宇:Flink技術(shù)專家,先后就職于新浪微博、滴滴和某大型電商公司。先后主導(dǎo)或參與了多家公司的Flink實(shí)時計(jì)算服務(wù)的構(gòu)建、對超大規(guī)模集群的維護(hù)以及Flink引擎的改造。擁有豐富的實(shí)時計(jì)算實(shí)戰(zhàn)經(jīng)驗(yàn),目前專注于Kubernetes調(diào)度、Flink SQL及Flink流批一體化方向。

趙士杰:資深大數(shù)據(jù)技術(shù)專家,曾就職于滴滴、阿里巴巴等一線互聯(lián)網(wǎng)公司。從0到1深度參與了滴滴的大數(shù)據(jù)建設(shè),擁有非常豐富的大數(shù)據(jù)平臺一線建設(shè)經(jīng)驗(yàn),對于大數(shù)據(jù)領(lǐng)域的計(jì)算和存儲引擎也有深入研究。

李涵淼:大數(shù)據(jù)研發(fā)專家,曾任滴滴大數(shù)據(jù)開發(fā)工程師。從事大數(shù)據(jù)領(lǐng)域工作多年,參與過多家公司流計(jì)算平臺的設(shè)計(jì)與研發(fā),目前專注于流批一體、OLAP技術(shù)方向的研究與應(yīng)用。

閔文?。何浵伡瘓F(tuán)技術(shù)專家、開源大數(shù)據(jù)社區(qū)愛好者、Flink Contributor,在實(shí)時計(jì)算領(lǐng)域工作多年,深度參與了滴滴、螞蟻集團(tuán)的實(shí)時計(jì)算平臺建設(shè)。 書評

 

本文摘編于《Flink技術(shù)內(nèi)幕:架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理》,經(jīng)出版方授權(quán)發(fā)布。(書號:9787111696292)轉(zhuǎn)載請保留文章來源。

 

責(zé)任編輯:武曉燕 來源: 數(shù)倉寶貝庫
相關(guān)推薦

2022-04-22 11:26:55

數(shù)據(jù)管理架構(gòu)

2021-06-13 12:03:46

SaaS軟件即服務(wù)

2021-10-09 00:02:04

DevOps敏捷開發(fā)

2022-03-27 20:32:28

Knative容器事件模型

2025-05-29 01:00:00

數(shù)據(jù)架構(gòu)大數(shù)據(jù)數(shù)據(jù)湖

2022-08-08 08:39:51

灰度發(fā)布架構(gòu)流量

2021-03-25 11:24:25

爬蟲技術(shù)開發(fā)

2020-11-03 07:04:39

云計(jì)算公有云私有云

2022-04-27 18:25:02

數(shù)據(jù)采集維度

2021-12-03 18:25:56

數(shù)據(jù)指標(biāo)本質(zhì)

2021-10-12 18:31:40

流量運(yùn)營前端

2021-10-17 20:38:30

微服務(wù)內(nèi)存組件

2022-01-05 18:27:44

數(shù)據(jù)挖掘工具

2021-06-29 11:21:41

數(shù)據(jù)安全網(wǎng)絡(luò)安全黑客

2020-11-30 08:34:44

大數(shù)據(jù)數(shù)據(jù)分析技術(shù)

2021-02-14 00:21:37

區(qū)塊鏈數(shù)字貨幣金融

2022-07-31 20:29:28

日志系統(tǒng)

2021-03-03 21:31:24

量化投資利潤

2022-04-12 18:29:41

元數(shù)據(jù)系統(tǒng)架構(gòu)

2021-01-26 10:17:48

智能語音大數(shù)據(jù)機(jī)器學(xué)習(xí)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號