001 Flink 介紹與環(huán)境梳理

這將是一套完整詳細(xì)且持續(xù)更新的缰盏、長期維護(hù)的 原創(chuàng) Flink系列教程、文檔坠狡,其中會包含商用實例詳解继找、Flink源碼講解、機制剖析逃沿、周邊組件講解等婴渡,旨在幫助開發(fā)者快速融入Flink開發(fā),或作為工具文檔參閱凯亮。也希望更多的開發(fā)者可以參與到大數(shù)據(jù)相關(guān)的技術(shù)討論中來边臼,共同商討疑難雜癥,豐富社區(qū)假消∧ⅲ——盡際

本文標(biāo)題: Flink介紹與環(huán)境梳理

文章作者: 盡際

發(fā)布時間: 2019年07月17日 - 22:27:30

最后更新: 2019年07月22日 - 22:27:30

原始鏈接: http://www.reibang.com/p/86d0cbe2f45a

許可協(xié)議: 署名-非商業(yè)性使用-禁止演繹 4.0 國際 轉(zhuǎn)載請保留原文鏈接及作者。


一、Flink介紹與環(huán)境梳理

在這部分系列教程中臼予,暫且略過大數(shù)據(jù)相關(guān)介紹與Flink在生態(tài)圈中的定位介紹亿傅,畢竟,讀者可以通過搜索引擎查閱到大量關(guān)于這部分內(nèi)容的相關(guān)說明瘟栖。因此葵擎,我們將直接講解如何使用 Flink。

為了更好的融入Flink半哟,以及更好的接受這個學(xué)習(xí)過程酬滤,我們將在各種實例中穿插講解相關(guān)必要的知識點。因此寓涨,在講解各種專業(yè)概念之前盯串,先開始準(zhǔn)備部署一套Flink集群吧。

1.1 選擇并下載 Flink 安裝包

本系列教程將使用 Apache 編譯好的 Flink 軟件包進(jìn)行安裝戒良。如有需要体捏,后期也會整理如何針對不同的需求對 Flink 源碼進(jìn)行修改與編譯。

1.1.1 重大 Flink 版本介紹

下面將簡單介紹幾個(截止到2019年07月)最主流的糯崎、被使用的Flink版本几缭。這部分內(nèi)容暫且作為了解即可,后續(xù)會慢慢展開介紹沃呢。

1. Apache Flink 1.6.4

Flink 1.6.4 是 Flink 1.6.x 系列版本的第 4 次修訂版年栓,x所代表的數(shù)字一般代表小版本的變動,主要修復(fù)一些已知的重要的BUG薄霜。包括基于YARN運行Job時容器分配不均某抓、連接器無法正常連接、監(jiān)控指標(biāo)異常等惰瓜。

另外還更新了部分 Maven 依賴如下:

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-java</artifactId>
  <version>1.6.4</version>
</dependency>
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-streaming-java_2.11</artifactId>
  <version>1.6.4</version>
</dependency>
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-clients_2.11</artifactId>
  <version>1.6.4</version>
</dependency>

Flink 1.6.4 是 Flink 1.6.x 中最穩(wěn)定的版本否副,很多大型企業(yè)會根據(jù)1.6.4的Flink版本進(jìn)行定制修改,或業(yè)務(wù)開發(fā)崎坊。

2. Apache Flink 1.7.2

在 Flink 1.7.x 系列相比于 Flink 1.6.x 系列备禀,修復(fù)了420多個已知問題,并增加很多功能流强,其中最值得關(guān)注的幾個重要內(nèi)容如下:

  • 支持 Scala 2.12 API
  • 支持寫入數(shù)據(jù)到亞馬遜 S3 系統(tǒng)
  • 支持處理流式數(shù)據(jù)時痹届,在 SQL 中使用 MATCH_RECOGNIZE 語法
  • 支持時態(tài)表(特殊的維度表)以及時態(tài)表和流式數(shù)據(jù)的 JOIN 操作
  • 支持通過文件定義 SQL 視圖(通過SQL CLI),即通過類似SQL的語法生成Flink Job
  • 支持 Kafka 2.0 Connector打月,并能夠?qū)崿F(xiàn) EXACTLY_ONCE 語義

在此基礎(chǔ)之上,F(xiàn)link 1.7.2 版本相比于 Flink 1.7.0 又修復(fù)了 40 多個已知問題蚕捉,并同樣更新部分 Maven 依賴如下:

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-java</artifactId>
  <version>1.7.2</version>
</dependency>
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-streaming-java_2.11</artifactId>
  <version>1.7.2</version>
</dependency>
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-clients_2.11</artifactId>
  <version>1.7.2</version>
</dependency>

3. Apache Flink 1.8.1

在 Flink 1.8.x 系列相比于 Flink 1.7.x 系列奏篙,增加的最值得關(guān)注的幾個重要內(nèi)容如下:

  • 支持連續(xù)清理數(shù)據(jù)分析過程中產(chǎn)生的狀態(tài)數(shù)據(jù)
  • 支持過濾 Kafka 恢復(fù)的分區(qū)
  • 解綁 Flink 軟件包與 Hadoop 二進(jìn)制包

其中 Flink 1.8.1 變更的 Maven 依賴如下:

<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-java</artifactId>
  <version>1.8.1</version>
</dependency>
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-streaming-java_2.11</artifactId>
  <version>1.8.1</version>
</dependency>
<dependency>
  <groupId>org.apache.flink</groupId>
  <artifactId>flink-clients_2.11</artifactId>
  <version>1.8.1</version>
</dependency>

并且,原先依賴 flink-table 的開發(fā)者需要轉(zhuǎn)向于依賴 flink-table-plannerflink-table-api-java-bridge(Java API) 或 flink-table-api-scala-bridge(Scala API)。

額外補充:Flink 1.9.0 的 snapshot 版本已經(jīng)出爐秘通,目前并非穩(wěn)定版本为严,因此暫且不做過多介紹。

1.1.2 下載指定的Flink版本

下面列出了上述各個主流 Flink 版本的下載地址肺稀,讀者也可自行前往官網(wǎng)進(jìn)行下載第股。

本系列教程將直接使用最新穩(wěn)定版 Flink 1.8.1 版本作為實例進(jìn)行演繹操作。

下載完成后话原,得到名為 flink-1.8.1-bin-scala_2.11.tgz 的壓縮包夕吻。

1.1.3 下載指定的Hadoop依賴

在使用Flink的情景中,如果涉及到對 Hadoop 組件的操作繁仁,則需要下載對應(yīng)的jar包涉馅。

以 Flink 1.8.1、Hadoop 2.7.x 為例黄虱,下載完成 Flink 壓縮包后稚矿,繼續(xù) Hadoop 依賴包,鏈接如下:

下載完成后捻浦,得到名為 flink-shaded-hadoop-2-uber-2.7.5-7.0.jar 的依賴包晤揣。

1.2 確認(rèn)現(xiàn)有的集群環(huán)境

在開始安裝 Flink 之前,先來確認(rèn)一下筆者目前所使用的安裝環(huán)境朱灿。

1.2.1 Linux版本與環(huán)境篩查

  1. 虛擬機的配置項

    表1-1 列出了三臺虛擬機的核心配置碉渡。這是目前最關(guān)心的幾項內(nèi)容,不再詳述其余配置項母剥。

提示:3 臺虛擬機的配置均為CentOS 6.8 版本滞诺,其與 CentOS 7.x 系列版本的使用方式大同小異,對于操作Flink而言并無分別环疼。如果讀者想體驗更新的CentOS系統(tǒng)习霹,自行切換即可。

  • 表1-1 虛擬機的核心配置項
配置項 linux01 (第一臺虛擬機) linux02 (第二臺虛擬機) linux03 (第三臺虛擬機)
內(nèi)存 4 GB 2 GB 2 GB
CPU內(nèi)核數(shù) 2 1 1
硬盤 50 GB 50 GB 50 GB
網(wǎng)絡(luò)適配器 NAT NAT NAT
  1. 禁用SELinux

    分布式框架在進(jìn)行端口通信時炫隶,SELinux 有可能阻塞其中的通信淋叶,因此暫且將其禁用。 在 CentOS 6.8 中伪阶,使用如下命令編輯 SELinux 配置文件:

    # vi /etc/sysconfig/selinux00000
    

    并將 SELINUX 選項改為: SELINUX:disable
    然后保存退出即可煞檩。

  2. 關(guān)閉防火墻

    防火墻也可以導(dǎo)致分布式框架之間的通信被拒絕昏兆,因此暫且關(guān)閉防火墻雌续。

    在 CentOS 6.8 系統(tǒng)中,使用如下命令關(guān)閉 iptables 防火墻:

    # service iptables stop
    # chkconfig iptables off
    

    提示:在 CentOS 7.x 系統(tǒng)中辑甜,用 firewalld 替代了 iptables檐薯。關(guān)閉防火墻的命令如下:

    # systemctl stop firewalld.service
    # systemctl disable firewalld.service
    
  3. 配置網(wǎng)卡文件

    為了能夠在 Windows 中通過 SSH 終端遠(yuǎn)程控制虛擬機凝赛,并實現(xiàn)分布式框架之間的通信注暗,需

    要修改虛擬機的網(wǎng)卡文件。

    在 CentOS 6.8 中編輯網(wǎng)卡配置文件的命令如下:

    # vi /etc/sysconfig/network-scripts/ifcfg-eth0
    

    編輯內(nèi)容如下:

    # 當(dāng)前虛擬機的 IP 地址墓猎,前三段與網(wǎng)關(guān)地址一致 
    IPADDR=192.168.216.20
    # 固定的子網(wǎng)掩碼地址 
    NETMASK=255.255.255.0
    # 網(wǎng)關(guān)地址捆昏,需要與虛擬機 NAT 設(shè)置中的網(wǎng)關(guān)的 IP 地址一致 
    GATEWAY=192.168.216.2
    # 首選 DNS,設(shè)置為網(wǎng)關(guān)的 IP 地址即可 
    DNS1=192.168.216.2
    # 備選 DNS毙沾,設(shè)置為如下即可 
    DNS2=8.8.8.8
    # 設(shè)置為靜態(tài)配置 IP 地址的模式 
    BOOTPROTO=static
    # 是否開機自動啟動網(wǎng)卡 
    ONBOOT=yes
    

    編輯完成后骗卜,執(zhí)行以下命令重啟網(wǎng)卡:

    # service network restart
    

    配置其余兩臺虛擬機網(wǎng)卡的過程與上述內(nèi)容基本一致,只需要修改 IPADDR 中 IP 地址的最 后一段左胞,使其不與其他虛擬機重復(fù)即可寇仓。

  4. 修改 IP 地址與主機名的映射關(guān)系

    在 CentOS 6.8 中編輯 network 文件的命令如下:

    # vi /etc/sysconfig/network
    

    在本例中,將其修改為如下內(nèi)容:

    192.168.128.20 linux01
    192.168.128.21 linux02
    192.168.128.22 linux03
    
  5. 實現(xiàn) 3 臺虛擬機之間的無秘鑰訪問

    集群中各虛擬機之間需要通過 SSH 協(xié)議進(jìn)行無秘鑰訪問罩句。在配置時請注意焚刺,每臺虛擬機都可以通過 SSH 協(xié)議無秘鑰訪問本機。 讀者可根據(jù)如下步驟快速實現(xiàn)無秘鑰訪問门烂。

    下面以第 1 臺虛擬機上的操作為例乳愉。 首先,執(zhí)行以下命令生成秘鑰:

    $ ssh-keygen -t rsa
    

    然后屯远,分發(fā)公鑰至 3 臺虛擬機蔓姚,執(zhí)行命令如下:

    $ ssh-copy-id linux01; ssh-copy-id linux02; ssh-copy-id linux03;
    

    其他兩臺虛擬機重復(fù)執(zhí)行上述兩個步驟即可。

  6. 配置 Java 環(huán)境變量

    本教程采用的 Java 環(huán)境是 JDK 1.8 版本慨丐,如果讀者使用了低于此版本的 JDK坡脐,請自行更換, 并在 Linux 的系統(tǒng)變量與用戶變量中配置 JDK房揭。

    配置樣例如下:

    JAVA_HOME=/home/admin/modules/jdk1.8.0_121
    export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/ lib/tools.jar
    export PATH=$PATH:$JAVA_HOME/bin
    

    此處省略JDK下載與安裝的步驟备闲。

1.2.2 已部署的 Hadoop 相關(guān)節(jié)點

在生產(chǎn)環(huán)境中,大多情況會下捅暴,F(xiàn)link會與Hadoop相關(guān)服務(wù)配合使用恬砂,因此在搭建Flink集群之前,最好已經(jīng)完成Hadoop相關(guān)的服務(wù)部署蓬痒。

表1-2 中列舉了虛擬機中已經(jīng)部署的框架服務(wù)泻骤。

  • 表1-2 已部署的框架服務(wù)
框架類別 linux01(第一臺虛擬機) linux02(第二臺虛擬機) linux03(第三臺虛擬機)
HDFS(Hadoop 2.7.2) NameNode、DataNode DataNode DataNode梧奢、SecondaryNameNode
YARN-MR(Hadoop 2.7.2) NodeManager狱掂、JobHistoryServer ResourceManager、NodeManager NodeManager
Zookeeper QuorumPeerMain QuorumPeerMain QuorumPeerMain

讀者可以參考作者簡書中的Hadoop相關(guān)文章完成部署亲轨。如有需要趋惨,也可私信索取并下載 3 臺已經(jīng)完成上述部署配置的虛擬機進(jìn)行使用。

1.4 本章小結(jié)

本章簡單介紹了Flink多個版本之間的重要區(qū)別瓶埋,并羅列了稍后搭建Flink集群需要使用的虛擬機環(huán)境希柿。在下一章中诊沪,將詳細(xì)演示如何基于不同模式搭建Flink集群养筒。


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末曾撤,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子晕粪,更是在濱河造成了極大的恐慌挤悉,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,273評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件巫湘,死亡現(xiàn)場離奇詭異装悲,居然都是意外死亡,警方通過查閱死者的電腦和手機尚氛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,349評論 3 398
  • 文/潘曉璐 我一進(jìn)店門诀诊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人阅嘶,你說我怎么就攤上這事属瓣。” “怎么了讯柔?”我有些...
    開封第一講書人閱讀 167,709評論 0 360
  • 文/不壞的土叔 我叫張陵抡蛙,是天一觀的道長。 經(jīng)常有香客問我魂迄,道長粗截,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 59,520評論 1 296
  • 正文 為了忘掉前任捣炬,我火速辦了婚禮熊昌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘湿酸。我一直安慰自己婿屹,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 68,515評論 6 397
  • 文/花漫 我一把揭開白布稿械。 她就那樣靜靜地躺著选泻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪美莫。 梳的紋絲不亂的頭發(fā)上页眯,一...
    開封第一講書人閱讀 52,158評論 1 308
  • 那天,我揣著相機與錄音厢呵,去河邊找鬼窝撵。 笑死,一個胖子當(dāng)著我的面吹牛襟铭,可吹牛的內(nèi)容都是我干的碌奉。 我是一名探鬼主播短曾,決...
    沈念sama閱讀 40,755評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赐劣!你這毒婦竟也來了嫉拐?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,660評論 0 276
  • 序言:老撾萬榮一對情侶失蹤魁兼,失蹤者是張志新(化名)和其女友劉穎婉徘,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體咐汞,經(jīng)...
    沈念sama閱讀 46,203評論 1 319
  • 正文 獨居荒郊野嶺守林人離奇死亡盖呼,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 38,287評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了化撕。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片几晤。...
    茶點故事閱讀 40,427評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖植阴,靈堂內(nèi)的尸體忽然破棺而出蟹瘾,到底是詐尸還是另有隱情,我是刑警寧澤墙贱,帶...
    沈念sama閱讀 36,122評論 5 349
  • 正文 年R本政府宣布热芹,位于F島的核電站,受9級特大地震影響惨撇,放射性物質(zhì)發(fā)生泄漏伊脓。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,801評論 3 333
  • 文/蒙蒙 一魁衙、第九天 我趴在偏房一處隱蔽的房頂上張望报腔。 院中可真熱鬧,春花似錦剖淀、人聲如沸纯蛾。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,272評論 0 23
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽翻诉。三九已至,卻和暖如春捌刮,著一層夾襖步出監(jiān)牢的瞬間碰煌,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,393評論 1 272
  • 我被黑心中介騙來泰國打工绅作, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留芦圾,地道東北人。 一個月前我還...
    沈念sama閱讀 48,808評論 3 376
  • 正文 我出身青樓俄认,卻偏偏與公主長得像个少,于是被迫代替她去往敵國和親洪乍。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,440評論 2 359

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