成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Flink是如何實(shí)現(xiàn)批流一體的

運(yùn)維 數(shù)據(jù)庫(kù)運(yùn)維
實(shí)現(xiàn)批處理的技術(shù)許許多多,從各種關(guān)系型數(shù)據(jù)庫(kù)的sql處理,到大數(shù)據(jù)領(lǐng)域的MapReduce,Hive,Spark等等。這些都是處理有限數(shù)據(jù)流的經(jīng)典方式。而Flink專注的是無(wú)限流處理,那么他是怎么做到批處理的呢?

[[312719]]

實(shí)現(xiàn)批處理的技術(shù)許許多多,從各種關(guān)系型數(shù)據(jù)庫(kù)的sql處理,到大數(shù)據(jù)領(lǐng)域的MapReduce,Hive,Spark等等。這些都是處理有限數(shù)據(jù)流的經(jīng)典方式。而Flink專注的是無(wú)限流處理,那么他是怎么做到批處理的呢?

 

大數(shù)據(jù)干貨丨Flink是如何實(shí)現(xiàn)批流一體的

 

無(wú)限流處理:輸入數(shù)據(jù)沒(méi)有盡頭;數(shù)據(jù)處理從當(dāng)前或者過(guò)去的某一個(gè)時(shí)間 點(diǎn)開始,持續(xù)不停地進(jìn)行

另一種處理形式叫作有限流處理,即從某一個(gè)時(shí)間點(diǎn)開始處理數(shù)據(jù),然后在另一個(gè)時(shí)間點(diǎn)結(jié)束。輸入數(shù)據(jù)可能本身是有限的(即輸入數(shù)據(jù)集并不會(huì)隨著時(shí)間增長(zhǎng)),也可能出于分析的目的被人為地設(shè)定為有限集(即只分析某一個(gè)時(shí)間段內(nèi)的事件)。

 

大數(shù)據(jù)干貨丨Flink是如何實(shí)現(xiàn)批流一體的

 

顯然,有限流處理是無(wú)限流處理的一種特殊情況,它只不過(guò)在某個(gè)時(shí)間點(diǎn)停止而已。此外,如果計(jì)算結(jié)果不在執(zhí)行過(guò)程中連續(xù)生成,而僅在末尾處生成一次,那就是批處理(分批處理數(shù)據(jù))。

批處理是流處理的一種非常特殊的情況。在流處理中,我們?yōu)閿?shù)據(jù)定義滑 動(dòng)窗口或滾動(dòng)窗口,并且在每次窗口滑動(dòng)或滾動(dòng)時(shí)生成結(jié)果。批處理則不同,我們定義一個(gè)全局窗口,所有的記錄都屬于同一個(gè)窗口。舉例來(lái)說(shuō), 以下代碼表示一個(gè)簡(jiǎn)單的Flink 程序,它負(fù)責(zé)每小時(shí)對(duì)某網(wǎng)站的訪問(wèn)者計(jì)數(shù),并按照地區(qū)分組。

  1. val counts = visits .keyBy("region") .timeWindow(Time.hours(1)) .sum("visits"

如果知道輸入數(shù)據(jù)是有限的,則可以通過(guò)以下代碼實(shí)現(xiàn)批處理。

  1. val counts = visits   .keyBy("region")   .window(GlobalWindows.create)   .trigger(EndOfTimeTrigger.create)   .sum("visits"

Flink 的不尋常之處在于,它既可以將數(shù)據(jù)當(dāng)作無(wú)限流來(lái)處理,也可以將它當(dāng)作有限流來(lái)處理。Flink 的 DataSet API 就是專為批處理而生的,如下所示。

  1. val counts = visits .groupBy("region") .sum("visits"

如果輸入數(shù)據(jù)是有限的,那么以上代碼的運(yùn)行結(jié)果將與前一段代碼的相同, 但是它對(duì)于習(xí)慣使用批處理器的程序員來(lái)說(shuō)更友好。

Fink批處理模型

Flink 通過(guò)一個(gè)底層引擎同時(shí)支持流處理和批處理

 

大數(shù)據(jù)干貨丨Flink是如何實(shí)現(xiàn)批流一體的

 

在流處理引擎之上,F(xiàn)link 有以下機(jī)制:

  • 檢查點(diǎn)機(jī)制和狀態(tài)機(jī)制:用于實(shí)現(xiàn)容錯(cuò)、有狀態(tài)的處理;
  • 水印機(jī)制:用于實(shí)現(xiàn)事件時(shí)鐘;
  • 窗口和觸發(fā)器:用于限制計(jì)算范圍,并定義呈現(xiàn)結(jié)果的時(shí)間。

在同一個(gè)流處理引擎之上,F(xiàn)link 還存在另一套機(jī)制,用于實(shí)現(xiàn)高效的批處理。

  • 用于調(diào)度和恢復(fù)的回溯法:由 Microsoft Dryad 引入,現(xiàn)在幾乎用于所有批處理器;
  • 用于散列和排序的特殊內(nèi)存數(shù)據(jù)結(jié)構(gòu):可以在需要時(shí),將一部分?jǐn)?shù)據(jù)從內(nèi)存溢出到硬盤上;
  • 優(yōu)化器:盡可能地縮短生成結(jié)果的時(shí)間。

兩套機(jī)制分別對(duì)應(yīng)各自的API(DataStream API 和 DataSet API);在創(chuàng)建 Flink 作業(yè)時(shí),并不能通過(guò)將兩者混合在一起來(lái)同時(shí) 利用 Flink 的所有功能。

在最新的版本中,F(xiàn)link 支持兩種關(guān)系型的 API,Table API 和 SQL。這兩個(gè) API 都是批處理和流處理統(tǒng)一的 API,這意味著在無(wú)邊界的實(shí)時(shí)數(shù)據(jù)流和有邊界的歷史記錄數(shù)據(jù)流上,關(guān)系型 API 會(huì)以相同的語(yǔ)義執(zhí)行查詢,并產(chǎn)生相同的結(jié)果。Table API 和 SQL 借助了 Apache Calcite 來(lái)進(jìn)行查詢的解析,校驗(yàn)以及優(yōu)化。它們可以與 DataStream 和 DataSet API 無(wú)縫集成,并支持用戶自定義的標(biāo)量函數(shù),聚合函數(shù)以及表值函數(shù)。

Table API / SQL 正在以流批統(tǒng)一的方式成為分析型用例的主要 API。

DataStream API 是數(shù)據(jù)驅(qū)動(dòng)應(yīng)用程序和數(shù)據(jù)管道的主要API。

從長(zhǎng)遠(yuǎn)來(lái)看,DataStream API應(yīng)該通過(guò)有界數(shù)據(jù)流完全包含DataSet API。

Flink批處理性能

MapReduce、Tez、Spark 和 Flink 在執(zhí)行純批處理任務(wù)時(shí)的性能比較。測(cè)試的批處理任務(wù)是 TeraSort 和分布式散列連接。

第一個(gè)任務(wù)是 TeraSort,即測(cè)量為 1TB 數(shù)據(jù)排序所用的時(shí)間。

TeraSort 本質(zhì)上是分布式排序問(wèn)題,它由以下幾個(gè)階 段組成:

(1) 讀取階段:從 HDFS 文件中讀取數(shù)據(jù)分區(qū);

(2) 本地排序階段:對(duì)上述分區(qū)進(jìn)行部分排序;

(3) 混洗階段:將數(shù)據(jù)按照 key 重新分布到處理節(jié)點(diǎn)上;

(4) 終排序階段:生成排序輸出;

(5) 寫入階段:將排序后的分區(qū)寫入 HDFS 文件。

 

大數(shù)據(jù)干貨丨Flink是如何實(shí)現(xiàn)批流一體的

 

Hadoop 發(fā)行版包含對(duì) TeraSort 的實(shí)現(xiàn),同樣的實(shí)現(xiàn)也可以用于 Tez,因?yàn)?Tez 可以執(zhí)行通過(guò)MapReduce API 編寫的程序。Spark 和 Flink 的 TeraSort 實(shí)現(xiàn)由 Dongwon Kim 提供.用來(lái)測(cè)量的集群由 42 臺(tái)機(jī)器組成,每臺(tái)機(jī)器 包含 12 個(gè) CPU 內(nèi)核、24GB 內(nèi)存,以及 6 塊硬盤。

 

大數(shù)據(jù)干貨丨Flink是如何實(shí)現(xiàn)批流一體的

 

結(jié)果顯示,F(xiàn)link 的排序時(shí)間比其他所有系統(tǒng)都少。 MapReduce 用了2157 秒,Tez 用了1887 秒,Spark 用了2171 秒,F(xiàn)link 則 只用了 1480 秒。

第二個(gè)任務(wù)是一個(gè)大數(shù)據(jù)集(240GB)和一個(gè)小數(shù)據(jù)集(256MB)之間的分布式散列連接。結(jié)果顯示,F(xiàn)link 仍然是速度最快的系統(tǒng),它所用的時(shí)間分別是 Tez 和 Spark 的 1/2 和 1/4.

 

大數(shù)據(jù)干貨丨Flink是如何實(shí)現(xiàn)批流一體的

 

產(chǎn)生以上結(jié)果的總體原因是,F(xiàn)link 的執(zhí)行過(guò)程是基于流的,這意味著各個(gè)處理階段有更多的重疊,并且混洗操作是流水線式的,因此磁盤訪問(wèn)操作更少。相反,MapReduce、Tez 和 Spark 是基于批的,這意味著數(shù)據(jù)在通過(guò)網(wǎng)絡(luò)傳輸之前必須先被寫入磁盤。該測(cè)試說(shuō)明,在使用Flink 時(shí),系統(tǒng)空閑時(shí)間和磁盤訪問(wèn)操作更少。

值得一提的是,性能測(cè)試結(jié)果中的原始數(shù)值可能會(huì)因集群設(shè)置、配置和軟件版本而異。

因此,F(xiàn)link 可以用同一個(gè)數(shù)據(jù)處理框架來(lái)處理無(wú)限數(shù)據(jù)流和有限數(shù)據(jù)流,并且不會(huì)犧牲性能。

責(zé)任編輯:武曉燕 來(lái)源: 今日頭條
相關(guān)推薦

2019-07-01 15:40:53

大數(shù)據(jù)架構(gòu)流處理

2021-11-29 22:39:39

引擎Flink架構(gòu)

2022-06-30 09:30:36

FlinkSQL流批一體京東

2023-09-05 07:22:17

Hudi數(shù)據(jù)存儲(chǔ)

2023-05-16 07:24:25

數(shù)據(jù)湖快手

2020-11-24 10:26:08

2023-03-30 07:40:03

FeatHub 項(xiàng)目特征工程開發(fā)

2021-08-02 10:19:08

Dataphin 數(shù)倉(cāng)架構(gòu)存儲(chǔ)計(jì)算分離

2024-06-25 13:08:31

2022-09-29 09:22:33

數(shù)據(jù)倉(cāng)

2021-06-30 09:20:08

數(shù)倉(cāng)FlinkHive

2021-11-18 21:09:50

流批場(chǎng)景引擎

2023-09-24 20:31:23

數(shù)字化

2019-11-29 10:02:53

AI 行業(yè) 人工智能

2019-11-28 20:51:10

阿里云Alink開源

2021-09-08 10:36:01

Flink阿里云

2021-06-11 14:01:51

數(shù)據(jù)倉(cāng)庫(kù)湖倉(cāng)一體 Flink

2011-05-26 10:15:43

解析噴墨一體機(jī)

2019-12-19 14:38:08

Flink SQL數(shù)據(jù)流Join

2012-12-21 16:40:19

商用一體機(jī)惠普電腦
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 国产三级 | 国产精品成人一区二区 | 男女视频在线观看网站 | 青青草华人在线视频 | 中文字幕第一页在线 | 亚洲一区二区在线 | 我想看一级黄色毛片 | 中文字幕免费中文 | 干干干操操操 | 国产精品一区二区av | 免费国产一区 | 国产91综合 | 一区二区在线免费观看 | 亚洲综合在线网 | 99九九久久| 嫩草影院网址 | 成人免费在线小视频 | 亚洲国产精品激情在线观看 | 99资源 | av一区二区在线观看 | 爱综合| 久久精品1| 中文字幕亚洲一区 | 久久国产精品99久久久大便 | 91精品久久久久久久久久入口 | 日韩a级片 | 午夜精品一区 | 一区二区三区精品 | 国产精品小视频在线观看 | 亚洲成人一二区 | 9久9久| 久久成人18免费网站 | 精品视频一区二区在线观看 | www国产成人免费观看视频,深夜成人网 | 成人一区二区三区在线观看 | 国产线视频精品免费观看视频 | 欧美夜夜 | 国产成人精品久久二区二区91 | 欧美不卡 | 在线免费观看欧美 | 国产成人叼嘿视频在线观看 |