成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

《從0到1學(xué)習(xí)Flink》—— Apache Flink 介紹

flyer_dev / 802人閱讀

摘要:擴(kuò)展庫(kù)還包括用于復(fù)雜事件處理,機(jī)器學(xué)習(xí),圖形處理和兼容性的專用代碼庫(kù)。事件時(shí)間機(jī)制使得那些事件無(wú)序到達(dá)甚至延遲到達(dá)的數(shù)據(jù)流能夠計(jì)算出精確的結(jié)果。負(fù)責(zé)接受用戶的程序代碼,然后創(chuàng)建數(shù)據(jù)流,將數(shù)據(jù)流提交給以便進(jìn)一步執(zhí)行。

前言

Flink 是一種流式計(jì)算框架,為什么我會(huì)接觸到 Flink 呢?因?yàn)槲夷壳霸谪?fù)責(zé)的是監(jiān)控平臺(tái)的告警部分,負(fù)責(zé)采集到的監(jiān)控?cái)?shù)據(jù)會(huì)直接往 kafka 里塞,然后告警這邊需要從 kafka topic 里面實(shí)時(shí)讀取到監(jiān)控?cái)?shù)據(jù),并將讀取到的監(jiān)控?cái)?shù)據(jù)做一些 聚合/轉(zhuǎn)換/計(jì)算 等操作,然后將計(jì)算后的結(jié)果與告警規(guī)則的閾值進(jìn)行比較,然后做出相應(yīng)的告警措施(釘釘群、郵件、短信、電話等)。畫了個(gè)簡(jiǎn)單的圖如下:

目前告警這塊的架構(gòu)是這樣的結(jié)構(gòu),剛進(jìn)公司那會(huì)的時(shí)候,架構(gòu)是所有的監(jiān)控?cái)?shù)據(jù)直接存在 ElasticSearch 中,然后我們告警是去 ElasticSearch 中搜索我們監(jiān)控指標(biāo)需要的數(shù)據(jù),幸好 ElasticSearch 的搜索能力夠強(qiáng)大。但是你有沒有發(fā)現(xiàn)一個(gè)問題,就是所有的監(jiān)控?cái)?shù)據(jù)從采集、采集后的數(shù)據(jù)做一些 計(jì)算/轉(zhuǎn)換/聚合、再通過 Kafka 消息隊(duì)列、再存進(jìn) ElasticSearch 中,再而去 ElasticSearch 中查找我們的監(jiān)控?cái)?shù)據(jù),然后做出告警策略。整個(gè)流程對(duì)監(jiān)控來(lái)說看起來(lái)很按照常理,但是對(duì)于告警來(lái)說,如果中間某個(gè)環(huán)節(jié)出了問題,比如 Kafka 消息隊(duì)列延遲、監(jiān)控?cái)?shù)據(jù)存到 ElasticSearch 中寫入時(shí)間較長(zhǎng)、你的查詢姿勢(shì)寫的不對(duì)等原因,這都將導(dǎo)致告警從 ElasticSearch 查到的數(shù)據(jù)是有延遲的。也許是 30 秒、一分鐘、或者更長(zhǎng),這樣對(duì)于告警來(lái)說這無(wú)疑將導(dǎo)致告警的消息沒有任何的意義。

為什么這么說呢?為什么需要監(jiān)控告警平臺(tái)呢?無(wú)非就是希望我們能夠盡早的發(fā)現(xiàn)問題,把問題給告警出來(lái),這樣開發(fā)和運(yùn)維人員才能夠及時(shí)的處理解決好線上的問題,以免給公司造成巨大的損失。

更何況現(xiàn)在還有更多的公司在做那種提前預(yù)警呢!這種又該如何做呢?需要用大數(shù)據(jù)和機(jī)器學(xué)習(xí)的技術(shù)去分析周期性的歷史數(shù)據(jù),然后根據(jù)這些數(shù)據(jù)可以整理出來(lái)某些監(jiān)控指標(biāo)的一些周期性(一天/七天/一月/一季度/一年)走勢(shì)圖,這樣就大概可以繪圖出來(lái)。然后根據(jù)這個(gè)走勢(shì)圖,可以將當(dāng)前時(shí)間點(diǎn)的監(jiān)控指標(biāo)的數(shù)據(jù)使用量和走勢(shì)圖進(jìn)行對(duì)比,在快要達(dá)到我們告警規(guī)則的閾值時(shí),這時(shí)就可以提前告一個(gè)預(yù)警出來(lái),讓運(yùn)維提前知道預(yù)警,然后提前查找問題,這樣就能夠提早發(fā)現(xiàn)問題所在,避免損失,將損失降到最小!當(dāng)然,這種也是我打算做的,應(yīng)該可以學(xué)到不少東西的。

于是乎,我現(xiàn)在就在接觸流式計(jì)算框架 Flink,類似的還有常用的 Spark 等。

自己也接觸了 Flink 一段時(shí)間了,這塊中文資料目前書籍是只有一本很薄的,英文書籍也是三本不超過。

我自己整理了些 Flink 的學(xué)習(xí)資料,目前已經(jīng)全部放到微信公眾號(hào)了。你可以關(guān)注我的公眾號(hào):zhisheng,然后回復(fù)關(guān)鍵字:Flink 即可無(wú)條件獲取到。

另外這里也推薦一些博客可以看看:

1、官網(wǎng):[https://flink.apache.org/]()

2、GitHub: [https://github.com/apache/flink]()

3、[https://blog.csdn.net/column/...]()

4、[https://blog.csdn.net/lmalds/...]()

5、[http://wuchong.me/]()

6、[https://blog.csdn.net/liguohu...]()

下面的介紹可能也有不少參考以上所有的資料,感謝他們!在介紹 Flink 前,我們先看看 數(shù)據(jù)集類型數(shù)據(jù)運(yùn)算模型 的種類。

數(shù)據(jù)集類型有哪些呢:

無(wú)窮數(shù)據(jù)集:無(wú)窮的持續(xù)集成的數(shù)據(jù)集合

有界數(shù)據(jù)集:有限不會(huì)改變的數(shù)據(jù)集合

那么那些常見的無(wú)窮數(shù)據(jù)集有哪些呢?

用戶與客戶端的實(shí)時(shí)交互數(shù)據(jù)

應(yīng)用實(shí)時(shí)產(chǎn)生的日志

金融市場(chǎng)的實(shí)時(shí)交易記錄

...

數(shù)據(jù)運(yùn)算模型有哪些呢:

流式:只要數(shù)據(jù)一直在產(chǎn)生,計(jì)算就持續(xù)地進(jìn)行

批處理:在預(yù)先定義的時(shí)間內(nèi)運(yùn)行計(jì)算,當(dāng)完成時(shí)釋放計(jì)算機(jī)資源

Flink 它可以處理有界的數(shù)據(jù)集、也可以處理無(wú)界的數(shù)據(jù)集、它可以流式的處理數(shù)據(jù)、也可以批量的處理數(shù)據(jù)。

Flink 是什么 ?

上面三張圖轉(zhuǎn)自 云邪 成都站 《Flink 技術(shù)介紹與未來(lái)展望》,侵刪。

從下至上,F(xiàn)link 整體結(jié)構(gòu)

從下至上:

1、部署:Flink 支持本地運(yùn)行、能在獨(dú)立集群或者在被 YARN 或 Mesos 管理的集群上運(yùn)行, 也能部署在云上。

2、運(yùn)行:Flink 的核心是分布式流式數(shù)據(jù)引擎,意味著數(shù)據(jù)以一次一個(gè)事件的形式被處理。

3、API:DataStream、DataSet、Table、SQL API。

4、擴(kuò)展庫(kù):Flink 還包括用于復(fù)雜事件處理,機(jī)器學(xué)習(xí),圖形處理和 Apache Storm 兼容性的專用代碼庫(kù)。

Flink 數(shù)據(jù)流編程模型 抽象級(jí)別

Flink 提供了不同的抽象級(jí)別以開發(fā)流式或批處理應(yīng)用。

最底層提供了有狀態(tài)流。它將通過 過程函數(shù)(Process Function)嵌入到 DataStream API 中。它允許用戶可以自由地處理來(lái)自一個(gè)或多個(gè)流數(shù)據(jù)的事件,并使用一致、容錯(cuò)的狀態(tài)。除此之外,用戶可以注冊(cè)事件時(shí)間和處理事件回調(diào),從而使程序可以實(shí)現(xiàn)復(fù)雜的計(jì)算。

DataStream / DataSet API 是 Flink 提供的核心 API ,DataSet 處理有界的數(shù)據(jù)集,DataStream 處理有界或者無(wú)界的數(shù)據(jù)流。用戶可以通過各種方法(map / flatmap / window / keyby / sum / max / min / avg / join 等)將數(shù)據(jù)進(jìn)行轉(zhuǎn)換 / 計(jì)算。

Table API 是以 為中心的聲明式 DSL,其中表可能會(huì)動(dòng)態(tài)變化(在表達(dá)流數(shù)據(jù)時(shí))。Table API 提供了例如 select、project、join、group-by、aggregate 等操作,使用起來(lái)卻更加簡(jiǎn)潔(代碼量更少)。

你可以在表與 DataStream/DataSet 之間無(wú)縫切換,也允許程序?qū)?Table APIDataStream 以及 DataSet 混合使用。

Flink 提供的最高層級(jí)的抽象是 SQL 。這一層抽象在語(yǔ)法與表達(dá)能力上與 Table API 類似,但是是以 SQL查詢表達(dá)式的形式表現(xiàn)程序。SQL 抽象與 Table API 交互密切,同時(shí) SQL 查詢可以直接在 Table API 定義的表上執(zhí)行。

Flink 程序與數(shù)據(jù)流結(jié)構(gòu)

Flink 應(yīng)用程序結(jié)構(gòu)就是如上圖所示:

1、Source: 數(shù)據(jù)源,F(xiàn)link 在流處理和批處理上的 source 大概有 4 類:基于本地集合的 source、基于文件的 source、基于網(wǎng)絡(luò)套接字的 source、自定義的 source。自定義的 source 常見的有 Apache kafka、Amazon Kinesis Streams、RabbitMQ、Twitter Streaming API、Apache NiFi 等,當(dāng)然你也可以定義自己的 source。

2、Transformation:數(shù)據(jù)轉(zhuǎn)換的各種操作,有 Map / FlatMap / Filter / KeyBy / Reduce / Fold / Aggregations / Window / WindowAll / Union / Window join / Split / Select / Project 等,操作很多,可以將數(shù)據(jù)轉(zhuǎn)換計(jì)算成你想要的數(shù)據(jù)。

3、Sink:接收器,F(xiàn)link 將轉(zhuǎn)換計(jì)算后的數(shù)據(jù)發(fā)送的地點(diǎn) ,你可能需要存儲(chǔ)下來(lái),F(xiàn)link 常見的 Sink 大概有如下幾類:寫入文件、打印出來(lái)、寫入 socket 、自定義的 sink 。自定義的 sink 常見的有 Apache kafka、RabbitMQ、MySQL、ElasticSearch、Apache Cassandra、Hadoop FileSystem 等,同理你也可以定義自己的 sink。

為什么選擇 Flink?

Flink 是一個(gè)開源的分布式流式處理框架:

①提供準(zhǔn)確的結(jié)果,甚至在出現(xiàn)無(wú)序或者延遲加載的數(shù)據(jù)的情況下。

②它是狀態(tài)化的容錯(cuò)的,同時(shí)在維護(hù)一次完整的的應(yīng)用狀態(tài)時(shí),能無(wú)縫修復(fù)錯(cuò)誤。

③大規(guī)模運(yùn)行,在上千個(gè)節(jié)點(diǎn)運(yùn)行時(shí)有很好的吞吐量和低延遲。

更早的時(shí)候,我們討論了數(shù)據(jù)集類型(有界 vs 無(wú)窮)和運(yùn)算模型(批處理 vs 流式)的匹配。Flink 的流式計(jì)算模型啟用了很多功能特性,如狀態(tài)管理,處理無(wú)序數(shù)據(jù),靈活的視窗,這些功能對(duì)于得出無(wú)窮數(shù)據(jù)集的精確結(jié)果是很重要的。

Flink 保證狀態(tài)化計(jì)算強(qiáng)一致性?!睜顟B(tài)化“意味著應(yīng)用可以維護(hù)隨著時(shí)間推移已經(jīng)產(chǎn)生的數(shù)據(jù)聚合或者,并且 Filnk 的檢查點(diǎn)機(jī)制在一次失敗的事件中一個(gè)應(yīng)用狀態(tài)的強(qiáng)一致性。

Flink 支持流式計(jì)算和帶有事件時(shí)間語(yǔ)義的視窗。事件時(shí)間機(jī)制使得那些事件無(wú)序到達(dá)甚至延遲到達(dá)的數(shù)據(jù)流能夠計(jì)算出精確的結(jié)果。

除了提供數(shù)據(jù)驅(qū)動(dòng)的視窗外,F(xiàn)link 還支持基于時(shí)間,計(jì)數(shù),session 等的靈活視窗。視窗能夠用靈活的觸發(fā)條件定制化從而達(dá)到對(duì)復(fù)雜的流傳輸模式的支持。Flink 的視窗使得模擬真實(shí)的創(chuàng)建數(shù)據(jù)的環(huán)境成為可能。

Flink 的容錯(cuò)能力是輕量級(jí)的,允許系統(tǒng)保持高并發(fā),同時(shí)在相同時(shí)間內(nèi)提供強(qiáng)一致性保證。Flink 以零數(shù)據(jù)丟失的方式從故障中恢復(fù),但沒有考慮可靠性和延遲之間的折衷。

Flink 能滿足高并發(fā)和低延遲(計(jì)算大量數(shù)據(jù)很快)。下圖顯示了 Apache Flink 與 Apache Storm 在完成流數(shù)據(jù)清洗的分布式任務(wù)的性能對(duì)比。

Flink 保存點(diǎn)提供了一個(gè)狀態(tài)化的版本機(jī)制,使得能以無(wú)丟失狀態(tài)和最短停機(jī)時(shí)間的方式更新應(yīng)用或者回退歷史數(shù)據(jù)。

Flink 被設(shè)計(jì)成能用上千個(gè)點(diǎn)在大規(guī)模集群上運(yùn)行。除了支持獨(dú)立集群部署外,F(xiàn)link 還支持 YARN 和Mesos 方式部署。

Flink 的程序內(nèi)在是并行和分布式的,數(shù)據(jù)流可以被分區(qū)成 stream partitions,operators 被劃分為operator subtasks; 這些 subtasks 在不同的機(jī)器或容器中分不同的線程獨(dú)立運(yùn)行;operator subtasks 的數(shù)量在具體的 operator 就是并行計(jì)算數(shù),程序不同的 operator 階段可能有不同的并行數(shù);如下圖所示,source operator 的并行數(shù)為 2,但最后的 sink operator 為1;

自己的內(nèi)存管理

Flink 在 JVM 中提供了自己的內(nèi)存管理,使其獨(dú)立于 Java 的默認(rèn)垃圾收集器。 它通過使用散列,索引,緩存和排序有效地進(jìn)行內(nèi)存管理。

豐富的庫(kù)

Flink 擁有豐富的庫(kù)來(lái)進(jìn)行機(jī)器學(xué)習(xí),圖形處理,關(guān)系數(shù)據(jù)處理等。 由于其架構(gòu),很容易執(zhí)行復(fù)雜的事件處理和警報(bào)。

分布式運(yùn)行

flink 作業(yè)提交架構(gòu)流程可見下圖:

1、Program Code:我們編寫的 Flink 應(yīng)用程序代碼

2、Job Client:Job Client 不是 Flink 程序執(zhí)行的內(nèi)部部分,但它是任務(wù)執(zhí)行的起點(diǎn)。 Job Client 負(fù)責(zé)接受用戶的程序代碼,然后創(chuàng)建數(shù)據(jù)流,將數(shù)據(jù)流提交給 Job Manager 以便進(jìn)一步執(zhí)行。 執(zhí)行完成后,Job Client 將結(jié)果返回給用戶

3、Job Manager:主進(jìn)程(也稱為作業(yè)管理器)協(xié)調(diào)和管理程序的執(zhí)行。 它的主要職責(zé)包括安排任務(wù),管理checkpoint ,故障恢復(fù)等。機(jī)器集群中至少要有一個(gè) master,master 負(fù)責(zé)調(diào)度 task,協(xié)調(diào) checkpoints 和容災(zāi),高可用設(shè)置的話可以有多個(gè) master,但要保證一個(gè)是 leader, 其他是 standby; Job Manager 包含 Actor system、Scheduler、Check pointing 三個(gè)重要的組件

4、Task Manager:從 Job Manager 處接收需要部署的 Task。Task Manager 是在 JVM 中的一個(gè)或多個(gè)線程中執(zhí)行任務(wù)的工作節(jié)點(diǎn)。 任務(wù)執(zhí)行的并行性由每個(gè) Task Manager 上可用的任務(wù)槽決定。 每個(gè)任務(wù)代表分配給任務(wù)槽的一組資源。 例如,如果 Task Manager 有四個(gè)插槽,那么它將為每個(gè)插槽分配 25% 的內(nèi)存。 可以在任務(wù)槽中運(yùn)行一個(gè)或多個(gè)線程。 同一插槽中的線程共享相同的 JVM。 同一 JVM 中的任務(wù)共享 TCP 連接和心跳消息。Task Manager 的一個(gè) Slot 代表一個(gè)可用線程,該線程具有固定的內(nèi)存,注意 Slot 只對(duì)內(nèi)存隔離,沒有對(duì) CPU 隔離。默認(rèn)情況下,F(xiàn)link 允許子任務(wù)共享 Slot,即使它們是不同 task 的 subtask,只要它們來(lái)自相同的 job。這種共享可以有更好的資源利用率。

最后

本文主要講了我接觸到 Flink 的緣由,然后從數(shù)據(jù)集類型和數(shù)據(jù)運(yùn)算模型開始講起,接著介紹了下 Flink 是什么、Flink 的整體架構(gòu)、提供的 API、Flink 的優(yōu)點(diǎn)所在以及 Flink 的分布式作業(yè)運(yùn)行的方式。水文一篇,希望你能夠?qū)?Flink 稍微有一點(diǎn)概念了。

關(guān)注我

轉(zhuǎn)載請(qǐng)務(wù)必注明原創(chuàng)地址為:http://www.54tianzhisheng.cn/2018/10/13/flink-introduction/

另外我自己整理了些 Flink 的學(xué)習(xí)資料,目前已經(jīng)全部放到微信公眾號(hào)了。你可以加我的微信:zhisheng_tian,然后回復(fù)關(guān)鍵字:Flink 即可無(wú)條件獲取到。

相關(guān)文章

1、《從0到1學(xué)習(xí)Flink》—— Apache Flink 介紹

2、《從0到1學(xué)習(xí)Flink》—— Mac 上搭建 Flink 1.6.0 環(huán)境并構(gòu)建運(yùn)行簡(jiǎn)單程序入門

3、《從0到1學(xué)習(xí)Flink》—— Flink 配置文件詳解

4、《從0到1學(xué)習(xí)Flink》—— Data Source 介紹

5、《從0到1學(xué)習(xí)Flink》—— 如何自定義 Data Source ?

6、《從0到1學(xué)習(xí)Flink》—— Data Sink 介紹

7、《從0到1學(xué)習(xí)Flink》—— 如何自定義 Data Sink ?

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/72019.html

相關(guān)文章

  • Apache Flink 1.9 重大特性提前解讀

    showImg(https://segmentfault.com/img/remote/1460000019961426); 今天在 Apache Flink meetup ·北京站進(jìn)行 Flink 1.9 重大新特性進(jìn)行了講解,兩位講師分別是 戴資力/楊克特,zhisheng 我也從看完了整個(gè) 1.9 特性解讀的直播,預(yù)計(jì) Flink 1.9 版本正式發(fā)布時(shí)間大概是 7 月底 8 月初左右正式發(fā)...

    wall2flower 評(píng)論0 收藏0
  • 01學(xué)習(xí)Flink》—— Mac 上搭建 Flink 1.6.0 環(huán)境并構(gòu)建運(yùn)行簡(jiǎn)單程序入門

    摘要:總結(jié)本文描述了如何在電腦上安裝,及運(yùn)行它。相關(guān)文章從到學(xué)習(xí)介紹從到學(xué)習(xí)上搭建環(huán)境并構(gòu)建運(yùn)行簡(jiǎn)單程序入門從到學(xué)習(xí)配置文件詳解從到學(xué)習(xí)介紹從到學(xué)習(xí)如何自定義從到學(xué)習(xí)介紹從到學(xué)習(xí)如何自定義 showImg(https://segmentfault.com/img/remote/1460000016915923?w=1920&h=1275); 準(zhǔn)備工作 1、安裝查看 Java 的版本號(hào),推薦...

    zeyu 評(píng)論0 收藏0
  • Flink 01學(xué)習(xí)—— 分享四本 Flink 國(guó)外的書和二十多篇 Paper 論文

    摘要:另外,將機(jī)制發(fā)揚(yáng)光大,對(duì)有著非常好的支持。系統(tǒng)也注意到并討論了和的問題??偨Y(jié)本文分享了四本相關(guān)的書籍和一份領(lǐng)域相關(guān)的論文列表篇,涉及的設(shè)計(jì),實(shí)現(xiàn),故障恢復(fù),彈性擴(kuò)展等各方面。 前言 之前也分享了不少自己的文章,但是對(duì)于 Flink 來(lái)說,還是有不少新入門的朋友,這里給大家分享點(diǎn) Flink 相關(guān)的資料(國(guó)外數(shù)據(jù) pdf 和流處理相關(guān)的 Paper),期望可以幫你更好的理解 Flink。...

    jollywing 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<