《大數(shù)據(jù)技術(shù)叢書(shū)Flink原理、實(shí)戰(zhàn)與性能優(yōu)化》

      網(wǎng)友投稿 1022 2025-03-31

      大數(shù)據(jù)技術(shù)叢書(shū)

      Flink原理、實(shí)戰(zhàn)與性能優(yōu)化

      張利兵 著

      Preface前  言

      為什么要寫(xiě)這本書(shū)

      記得在幾年前剛開(kāi)始做流式計(jì)算相關(guān)的項(xiàng)目時(shí),發(fā)覺(jué)項(xiàng)目對(duì)實(shí)時(shí)性和數(shù)據(jù)量的要求很高,無(wú)奈求助于Flink開(kāi)源社區(qū)(后文簡(jiǎn)稱(chēng)“社區(qū)”),在社區(qū)中發(fā)現(xiàn)可以使用的流式框架有很多,例如比較主流的框架Apache Storm、Spark Streaming等,Apache Flink(簡(jiǎn)稱(chēng)“Flink”)也在其中。于是筆者開(kāi)始對(duì)各種流式框架進(jìn)行詳細(xì)研究,最后發(fā)現(xiàn)能同時(shí)支持低延遲、高吞吐、Excactly-once的框架只有Apache Flink,從那時(shí)起筆者就對(duì)Flink這套框架充滿興趣,不管是其架構(gòu)還是接口,都可以發(fā)現(xiàn)其中包含了非常優(yōu)秀的設(shè)計(jì)思想。雖然當(dāng)時(shí)Flink在社區(qū)的成熟度并不是很高,但筆者還是決定將Flink應(yīng)用在自己的項(xiàng)目中,自此開(kāi)啟了Flink分布式計(jì)算技術(shù)應(yīng)用之旅。

      剛開(kāi)始學(xué)習(xí)Flink,對(duì)于沒(méi)有分布式處理技術(shù)和流式計(jì)算經(jīng)驗(yàn)的人來(lái)說(shuō)會(huì)相對(duì)比較困難,因?yàn)槠浜茈y理解有狀態(tài)計(jì)算、數(shù)據(jù)一致性保障等概念。尤其在相關(guān)中文資源比較匱乏的情況下,需要用戶(hù)在官網(wǎng)以及國(guó)外的技術(shù)網(wǎng)站中翻閱大量的外文資料,這在一定程度上對(duì)學(xué)習(xí)和應(yīng)用Flink造成了阻礙。筆者在2018年參加了一場(chǎng)由Flink中文社區(qū)組織的線下交流活動(dòng),當(dāng)時(shí)聽(tīng)了很多領(lǐng)域內(nèi)專(zhuān)家將Flink應(yīng)用在不同業(yè)務(wù)場(chǎng)景中的分享,發(fā)現(xiàn)Flink這項(xiàng)技術(shù)雖然優(yōu)秀,但是國(guó)內(nèi)尚未有一本能夠全面介紹Flink的中文書(shū)籍,于是筆者決定結(jié)合自己的實(shí)際項(xiàng)目經(jīng)驗(yàn)來(lái)完成一本Flink中文書(shū)籍,以幫助他人學(xué)習(xí)和使用Flink這項(xiàng)優(yōu)秀的分布式處理技術(shù)。

      阿里巴巴在2018年1月開(kāi)源了其內(nèi)部Flink的分支項(xiàng)目Blink,并推動(dòng)社區(qū)將Blink中優(yōu)秀的特性合并到Flink主干版本中,一時(shí)間Flink在國(guó)內(nèi)的發(fā)展被推向了高潮,成為很多公司想去嘗試使用的新技術(shù)。因此筆者相信未來(lái)會(huì)有更多的開(kāi)發(fā)者參與到Flink社區(qū)中來(lái),F(xiàn)link也將在未來(lái)的大數(shù)據(jù)生態(tài)中占據(jù)舉足輕重的位置。

      讀者對(duì)象

      本書(shū)從多個(gè)方面對(duì)Flink進(jìn)行了深入介紹,包括原理、多種抽象接口的使用,以及Flink的性能監(jiān)控與調(diào)優(yōu)等方面,因此本書(shū)比較適合以下類(lèi)型的讀者。

      流計(jì)算開(kāi)發(fā)工程師

      大數(shù)據(jù)架構(gòu)工程師

      大數(shù)據(jù)開(kāi)發(fā)工程師

      數(shù)據(jù)挖掘工程師

      高校研究生以及高年級(jí)本科生

      如何閱讀本書(shū)

      本書(shū)共分為10章,各章節(jié)間具有一定的先后關(guān)系,對(duì)于剛?cè)腴T(mén)的讀者,建議從第1章開(kāi)始循序漸進(jìn)地學(xué)習(xí)。

      對(duì)于有一定經(jīng)驗(yàn)的讀者可以自行選擇章節(jié)開(kāi)始學(xué)習(xí)。如果想使用Flink開(kāi)發(fā)流式應(yīng)用,則可以直接閱讀第4章、第5章,以及第7章之后的內(nèi)容;如果想使用Flink開(kāi)發(fā)批計(jì)算應(yīng)用,則可以選擇閱讀第5章以及第7章之后的內(nèi)容。

      勘誤和支持

      除封面署名外,參加本書(shū)編寫(xiě)工作的還有:張?jiān)賱佟⑸性健⒊听垺⒁h(yuǎn)等。由于筆者水平有限,編寫(xiě)時(shí)間倉(cāng)促,書(shū)中難免會(huì)出現(xiàn)一些錯(cuò)誤或者不準(zhǔn)確的地方,懇請(qǐng)讀者批評(píng)指正。由于Flink技術(shù)的參考資料相對(duì)較少,因此書(shū)中有些地方參考了Flink官方文檔,讀者也可以結(jié)合Flink官網(wǎng)來(lái)學(xué)習(xí)。書(shū)中的全部源文件可以從GitHub網(wǎng)站下載,地址為https://github.com/zhanglibing1990/learning-flink。同時(shí)筆者也會(huì)將相應(yīng)的功能及時(shí)更新。如果你有更多寶貴的意見(jiàn)可以通過(guò)QQ群686656574或電子郵箱zhanglibing1990@126.com聯(lián)系筆者,期待能夠得到你們的真摯反饋。

      致謝

      在本書(shū)的寫(xiě)作過(guò)程中,得到了很多朋友及同事的幫助和支持,在此表示衷心感謝!

      感謝我的女朋友,因?yàn)橛心愕闹С郑也拍軋?jiān)持將本書(shū)順利完成,謝謝你一直陪伴在我的身邊,不斷鼓勵(lì)我前行。

      感謝機(jī)械工業(yè)出版社華章公司的編輯楊福川和張錫鵬,在這半年多的時(shí)間中始終支持我的寫(xiě)作,你們的鼓勵(lì)和幫助引導(dǎo)我順利完成全部書(shū)稿。

      謹(jǐn)以此書(shū)獻(xiàn)給我最親愛(ài)的家人,以及眾多熱愛(ài)Flink的朋友!

      總結(jié)

      本書(shū)最開(kāi)始介紹Flink的發(fā)展歷史,然后對(duì)Flink批數(shù)據(jù)和流數(shù)據(jù)的不同處理接口進(jìn)行介紹,再對(duì)Flink的部署與實(shí)施、性能優(yōu)化等方面進(jìn)行全面講解。經(jīng)過(guò)系統(tǒng)完整地了解和學(xué)習(xí)Flink分布式處理技術(shù)之后,可以發(fā)現(xiàn)Flink有很多非常先進(jìn)的概念,以及非常完善的接口設(shè)計(jì),這些都能讓用戶(hù)更加有效地處理大數(shù)據(jù),特別是流式數(shù)據(jù)處理。隨著大數(shù)據(jù)技術(shù)的不斷發(fā)展,F(xiàn)link也在大數(shù)據(jù)的浪潮中奮勇前行。越來(lái)越多的用戶(hù)也參與到Flink社區(qū)的開(kāi)發(fā)中,尤其是近年來(lái)隨著阿里巴巴的推進(jìn),Blink的開(kāi)源在一定程度上推動(dòng)了Flink在國(guó)內(nèi)大規(guī)模的落地。相信在不久的將來(lái),F(xiàn)link會(huì)逐漸成為國(guó)內(nèi)乃至全球不可或缺的分布式處理引擎,筆者也相信Flink在流式數(shù)據(jù)處理領(lǐng)域會(huì)有新的突破,能夠改變目前大部分基于批處理的模式,讓分布式數(shù)據(jù)處理變得更加高效,使得數(shù)據(jù)處理成本不斷降低。

      張利兵

      2019年

      目  錄Contents

      前言

      第1章 Apache Flink介紹? 1

      1.1 Apache Flink是什么? 1

      1.2 數(shù)據(jù)架構(gòu)的演變? 2

      1.2.1 傳統(tǒng)數(shù)據(jù)基礎(chǔ)架構(gòu)? 3

      1.2.2 大數(shù)據(jù)數(shù)據(jù)架構(gòu)? 4

      1.2.3 有狀態(tài)流計(jì)算架構(gòu)? 5

      1.2.4 為什么會(huì)是Flink? 6

      1.3 Flink應(yīng)用場(chǎng)景? 8

      1.4 Flink基本架構(gòu)? 10

      1.4.1 基本組件棧? 10

      1.4.2 基本架構(gòu)圖? 11

      1.5 本章小結(jié)? 13

      第2章 環(huán)境準(zhǔn)備? 14

      2.1 運(yùn)行環(huán)境介紹? 14

      2.2 Flink項(xiàng)目模板? 15

      2.2.1 基于Java實(shí)現(xiàn)的項(xiàng)目模板? 15

      2.2.2 基于Scala實(shí)現(xiàn)的項(xiàng)目模板? 18

      2.3 Flink開(kāi)發(fā)環(huán)境配置? 20

      2.3.1 下載IntelliJ IDEA IDE? 21

      2.3.2 安裝Scala Plugins? 21

      2.3.3 導(dǎo)入Flink應(yīng)用代碼? 22

      2.3.4 項(xiàng)目配置? 22

      2.4 運(yùn)行Scala REPL? 24

      2.4.1 環(huán)境支持? 24

      2.4.2 運(yùn)行程序? 24

      2.5 Flink源碼編譯? 25

      2.6 本章小結(jié)? 26

      第3章 Flink編程模型? 27

      3.1 數(shù)據(jù)集類(lèi)型? 27

      3.2 Flink編程接口? 29

      3.3 Flink程序結(jié)構(gòu)? 30

      3.4 Flink數(shù)據(jù)類(lèi)型? 37

      3.4.1 數(shù)據(jù)類(lèi)型支持? 37

      3.4.2 TypeInformation信息獲取? 40

      3.5 本章小結(jié)? 43

      第4章 DataStream API 介紹與使用? 44

      4.1 DataStream編程模型? 44

      4.1.1 DataSources數(shù)據(jù)輸入? 45

      4.1.2 DataSteam轉(zhuǎn)換操作? 49

      4.1.3 DataSinks數(shù)據(jù)輸出? 59

      4.2 時(shí)間概念與Watermark? 61

      4.2.1 時(shí)間概念類(lèi)型? 61

      4.2.2 EventTime和Watermark? 63

      4.3 Windows窗口計(jì)算? 69

      4.3.1 Windows Assigner? 70

      4.3.2 Windows Function? 77

      4.3.3 Trigger窗口觸發(fā)器? 83

      4.3.4 Evictors數(shù)據(jù)剔除器? 87

      4.3.5 延遲數(shù)據(jù)處理? 88

      4.3.6 連續(xù)窗口計(jì)算? 89

      4.3.7 Windows多流合并? 90

      4.4 作業(yè)鏈和資源組? 95

      4.4.1 作業(yè)鏈? 95

      4.4.2 Slots資源組? 96

      4.5 Asynchronous I/O異步操作? 97

      4.6 本章小結(jié)? 98

      第5章 Flink狀態(tài)管理和容錯(cuò)? 100

      5.1 有狀態(tài)計(jì)算? 100

      5.2 Checkpoints和Savepoints? 109

      5.2.1 Checkpoints檢查點(diǎn)機(jī)制? 109

      5.2.2 Savepoints機(jī)制? 111

      5.3 狀態(tài)管理器? 114

      5.3.1 StateBackend類(lèi)別? 114

      5.3.2 狀態(tài)管理器配置? 116

      5.4 Querable State? 118

      5.5 本章小結(jié)? 123

      第6章 DataSet API介紹與使用? 124

      6.1 DataSet API? 124

      6.1.1 應(yīng)用實(shí)例? 125

      6.1.2 DataSources數(shù)據(jù)接入? 126

      6.1.3 DataSet轉(zhuǎn)換操作? 128

      6.1.4 DataSinks數(shù)據(jù)輸出? 134

      6.2 迭代計(jì)算? 136

      6.2.1 全量迭代? 136

      6.2.2 增量迭代? 137

      6.3 廣播變量與分布式緩存? 139

      6.3.1 廣播變量? 139

      6.3.2 分布式緩存? 140

      6.4 語(yǔ)義注解? 141

      6.4.1 Forwarded Fileds注解? 141

      6.4.2 Non-Forwarded Fileds注解? 143

      6.4.3 Read Fields注解? 144

      6.5 本章小結(jié)? 145

      第7章 Table API & SQL介紹與使用? 146

      7.1 TableEnviroment概念? 146

      7.1.1 開(kāi)發(fā)環(huán)境構(gòu)建? 147

      7.1.2 TableEnvironment基本操作? 147

      《大數(shù)據(jù)技術(shù)叢書(shū)Flink原理、實(shí)戰(zhàn)與性能優(yōu)化》

      7.1.3 外部連接器? 155

      7.1.4 時(shí)間概念? 162

      7.1.5 Temporal Tables臨時(shí)表? 166

      7.2 Flink Table API? 167

      7.2.1 Table API應(yīng)用實(shí)例? 167

      7.2.2 數(shù)據(jù)查詢(xún)和過(guò)濾? 168

      7.2.3 窗口操作? 168

      7.2.4 聚合操作? 173

      7.2.5 多表關(guān)聯(lián)? 175

      7.2.6 集合操作? 177

      7.2.7 排序操作? 178

      7.2.8 數(shù)據(jù)寫(xiě)入? 179

      7.3 Flink SQL使用? 179

      7.3.1 Flink SQL實(shí)例? 179

      7.3.2 執(zhí)行SQL? 180

      7.3.3 數(shù)據(jù)查詢(xún)與過(guò)濾? 181

      7.3.4 Group Windows窗口操作? 182

      7.3.5 數(shù)據(jù)聚合? 184

      7.3.6 多表關(guān)聯(lián)? 186

      7.3.7 集合操作? 187

      7.3.8 數(shù)據(jù)輸出? 189

      7.4 自定義函數(shù)? 189

      7.4.1 Scalar Function? 189

      7.4.2 Table Function? 191

      7.4.3 Aggregation Function? 192

      7.5 自定義數(shù)據(jù)源? 193

      7.5.1 TableSource定義? 193

      7.5.2 TableSink定義? 196

      7.5.3 TableFactory定義? 199

      7.6 本章小結(jié)? 201

      第8章 Flink組件棧介紹與使用? 202

      8.1 Flink復(fù)雜事件處理? 202

      8.1.1 基礎(chǔ)概念? 203

      8.1.2 Pattern API? 204

      8.1.3 事件獲取? 210

      8.1.4 應(yīng)用實(shí)例? 212

      8.2 Flink Gelly圖計(jì)算應(yīng)用? 213

      8.2.1 基本概念? 213

      8.2.2 Graph API? 214

      8.2.3 迭代圖處理? 220

      8.2.4 圖生成器? 226

      8.3 FlinkML機(jī)器學(xué)習(xí)應(yīng)用? 227

      8.3.1 基本概念? 227

      8.3.2 有監(jiān)督學(xué)習(xí)算子? 229

      8.3.3 數(shù)據(jù)預(yù)處理? 231

      8.3.4 推薦算法? 234

      8.3.5 Pipelines In FlinkML? 235

      8.4 本章小結(jié)? 236

      第9章 Flink部署與應(yīng)用? 237

      9.1 Flink集群部署? 237

      9.1.1 Standalone Cluster部署? 238

      9.1.2 Yarn Cluster部署? 240

      9.1.3 Kubernetes Cluster部署? 244

      9.2 Flink高可用配置? 247

      9.2.1 Standalone集群高可用配置? 248

      9.2.2 Yarn Session集群高可用配置? 250

      9.3 Flink安全管理? 251

      9.3.1 認(rèn)證目標(biāo)? 251

      9.3.2 認(rèn)證配置? 252

      9.3.3 SSL配置? 253

      9.4 Flink集群升級(jí)? 255

      9.4.1 任務(wù)重啟? 256

      9.4.2 狀態(tài)維護(hù)? 256

      9.4.3 版本升級(jí)? 257

      9.5 本章小結(jié)? 258

      第10章 Flink監(jiān)控與性能優(yōu)化? 259

      10.1 監(jiān)控指標(biāo)? 259

      10.1.1 系統(tǒng)監(jiān)控指標(biāo)? 259

      10.1.2 監(jiān)控指標(biāo)注冊(cè)? 261

      10.1.3 監(jiān)控指標(biāo)報(bào)表? 264

      10.2 Backpressure監(jiān)控與優(yōu)化? 266

      10.2.1 Backpressure進(jìn)程抽樣? 266

      10.2.2 Backpressure頁(yè)面監(jiān)控? 267

      10.2.3 Backpressure配置? 268

      10.3 Checkpointing監(jiān)控與優(yōu)化? 268

      10.3.1 Checkpointing頁(yè)面監(jiān)控? 268

      10.3.2 Checkpointing優(yōu)化? 271

      10.4 Flink內(nèi)存優(yōu)化? 273

      10.4.1 Flink內(nèi)存配置? 274

      10.4.2 Network Buffers配置? 275

      10.5 本章小結(jié)? 277

      分布式 大數(shù)據(jù) Apache

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶(hù)投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請(qǐng)聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Excel表格中如何快速輸入特殊符號(hào)√對(duì)號(hào)有哪些最快捷的方式(表格中對(duì)號(hào)符號(hào)怎么打快捷鍵)
      下一篇:電子表格培訓(xùn)(電子表格培訓(xùn)計(jì)劃)
      相關(guān)文章
      亚洲欧洲精品成人久久曰| 亚洲精品乱码久久久久久自慰 | 国产亚洲av片在线观看18女人| 亚洲欧洲日产国码久在线| 亚洲一区二区久久| 亚洲精品自在线拍| 亚洲电影在线播放| 亚洲日韩中文字幕| 亚洲1234区乱码| 国产午夜亚洲精品国产| 香蕉大伊亚洲人在线观看| 亚洲人成网站色在线观看| 国产成人精品亚洲2020| 久久亚洲精品国产精品婷婷| 亚洲AV男人的天堂在线观看| 久久精品国产亚洲av麻豆蜜芽| 精品久久久久久亚洲精品| 日韩亚洲产在线观看| 亚洲码欧美码一区二区三区| 亚洲色www永久网站| 亚洲国产精品无码第一区二区三区 | 亚洲精品中文字幕无码AV| 亚洲精品电影天堂网| 亚洲一级大黄大色毛片| 久久亚洲精品专区蓝色区| 日韩亚洲人成在线| 久久久久亚洲精品无码网址色欲 | 男人的天堂av亚洲一区2区| 国产AV无码专区亚洲AV琪琪| 亚洲国产成人VA在线观看| 亚洲国产一区视频| 亚洲色自偷自拍另类小说| 亚洲AV无码码潮喷在线观看| 老色鬼久久亚洲AV综合| 亚洲国产片在线观看| 亚洲砖码砖专无区2023| 色偷偷亚洲第一综合| 国产日韩成人亚洲丁香婷婷| 国产成人亚洲综合色影视| 亚洲天天在线日亚洲洲精| 亚洲制服丝袜在线播放|