《Flink 源碼解析》—— 源碼編譯運行

更新一篇知識星球裏面的源碼分析文章,去年寫的,週末本身錄了個視頻,你們看下效果好嗎?若是好的話,後面補錄發在知識星球裏面的其餘源碼解析文章。java

前言

以前本身本地 clone 了 Flink 的源碼,編譯過,而後 share 到了 GitHub 上去了,本身也寫了一些源碼的中文註釋,而且 push 到了 GitHub 上去了。這幾天阿里開源了宣傳已久的 Blink,結果我那個分支不可以繼續 pull 下新的代碼,再加上本身對 Flink 研究了也有點時間了,因此打算將這兩個東西對比着來看,這樣可能會學到很多更多東西,由於 Blink 是另一個分支,因此本身乾脆再從新 fork 了一份,拉到本地來看源碼。git

fork

執行下面命令:github

git clone git@github.com:apache/flink.git

拉取的時候找個網絡好點的地方,這樣速度可能會更快點。apache

編譯

由於本身想看下 Blink 分支的代碼,因此須要切換到 blink 分支來,windows

git checkout blink

這樣你就到了 blink 分支了,接下來咱們將 blink 源碼編譯一下,執行以下命令:瀏覽器

mvn clean install -Dmaven.test.skip=true -Dhadoop.version=2.7.6 -Dmaven.javadoc.skip=true -Dcheckstyle.skip=true

maven 編譯的時候跳過測試代碼、javadoc 和代碼風格檢查,這樣能夠減小很多時間。微信

注意:你的 maven 的 settings.xml 文件的 mirror 添加下面這個:(這樣下載依賴才能飛起來)網絡

<mirror>
  <id>nexus-aliyun</id>
  <mirrorOf>*,!jeecg,!jeecg-snapshots,!mapr-releases</mirrorOf>
  <name>Nexus aliyun</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public</url>
</mirror>

<mirror>
  <id>mapr-public</id>
  <mirrorOf>mapr-releases</mirrorOf>
  <name>mapr-releases</name>
  <url>https://maven.aliyun.com/repository/mapr-public</url>
</mirror>

執行完這個命令後,而後呢,你能夠掏出手機,打開微信,搜索下微信號:zhisheng_tian , 而後點擊一波添加好友,歡迎來探討技術。maven

等了一波時間以後,你可能會遇到這個問題(看到很多童鞋都遇到這個問題,以前編譯 Flink 的時候也遇到過):oop

[ERROR] Failed to execute goal on project flink-mapr-fs: Could not resolve dependencies for project com.alibaba.blink:flink-mapr-fs:jar:1.5.1: Failure to find com.mapr.hadoop:maprfs:jar:5.2.1-mapr in http://maven.aliyun.com/nexus/content/groups/public was cached in the local repository, resolution will not be reattempted until the update interval of nexus-aliyun has elapsed or updates are forced -> [Help 1]

若是你試了兩遍都沒編譯經過,那麼我這裏就教你們一種方法(執行完編譯命令後啥也沒動就 OK 的請跳過,誰叫你運氣這麼好呢):

在 flink-filesystems 中把 flink-mapr-fs module 給註釋掉。

上圖這是我給你們的忠告,特別管用。

再次執行命令編譯起來就沒有錯誤了,若是你還有其餘的錯誤,我猜估計仍是網絡的問題,致使一些國外的 maven 依賴下載不下來或者不完整,致使的錯誤,暴力的方法就是和我同樣,把這些下載不下來的依賴 module 註釋掉,或者你能夠像已經編譯好的童鞋要下 maven 的 .m2 文件裏面已經下載好了的依賴,而後複製粘貼到你的本地路徑去,注意路徑包名不要弄錯了,這樣通常能夠解決全部的問題了,若是還有問題,我也無能爲力了。

編譯成功就長下圖這樣:

運行

而後咱們的目錄是長這樣的:

標記的那個就是咱們的可執行文件,就跟咱們在 Flink 官網下載的同樣,咱們能夠將它運行起來看下效果。

我把它移到了 /usr/local/blink-1.5.1 下了,我的習慣,喜歡把一些安裝的軟件安裝在 /usr/local/ 目錄下面。

目錄結構和我之前的安裝介紹文章相似,就是多了 batch_conf 目錄,和 conf 目錄是同樣的東西,不知道爲啥要弄兩個配置文件目錄,問過負責的人,沒理我,哈哈哈。

那麼咱們接下來就是運行下 Blink,進入到 bin 目錄,執行可執行文件:

./start-cluster.sh

windows 能夠點擊 start-cluster.bat 啓動,這點對 windows 用戶比較友好。

執行完後命令後,在瀏覽器裏訪問地址,http://localhost:8081/ , 出現下圖這樣就表明 Blink 成功啓動了:

上圖是開源版本的白色主題,騷氣的黑色主題經過在 Flink 羣裏得知如何改以後,編譯運行後的效果以下:

一次好奇的執行了屢次上面啓動命令,發現也可以正常的運行。

而後啓動的日誌是這樣的:

說明已經啓動了 9 個 Task Manager,而後看到咱們頁面的監控信息以下:

能夠看到監控信息裏面已經有 40 個可用的 slot,這是由於 Blink 默認的是一個 Task Manager 4 個 slot,咱們總共啓動了 10 個 Task Manager,因此纔會有 40 個可用的 slot,注意:Flink 默認的配置是 1 個 Task Manager 只含有 1 個 slot,不過這個是能夠本身分配的。

注意:開啓了多個 Task Manager 後,要關閉的話,得執行一樣次數的關閉命令:

./stop-cluster.sh

中文源碼分析

https://github.com/zhisheng17/flink

配套視頻解析

視頻錄製過程不免說錯,還請你們能夠指教

相關

更多源碼解析的文章和 Flink 資料請加知識星球!

本文地址是:http://www.54tianzhisheng.cn/2019/01/30/Flink-code-compile/,未經容許,禁止轉載!

總結

本篇文章是《從1到100深刻學習Flink》的第一篇,zhisheng 我帶帶你們一塊兒如何 clone 項目源碼,進行源碼編譯,而後運行編譯後的可執行文件 blink。下篇文章會分析項目源碼的結構組成。

相關文章

一、《從0到1學習Flink》—— Apache Flink 介紹

二、《從0到1學習Flink》—— Mac 上搭建 Flink 1.6.0 環境並構建運行簡單程序入門

三、《從0到1學習Flink》—— Flink 配置文件詳解

四、《從0到1學習Flink》—— Data Source 介紹

五、《從0到1學習Flink》—— 如何自定義 Data Source ?

六、《從0到1學習Flink》—— Data Sink 介紹

七、《從0到1學習Flink》—— 如何自定義 Data Sink ?

八、《從0到1學習Flink》—— Flink Data transformation(轉換)

九、《從0到1學習Flink》—— 介紹Flink中的Stream Windows

十、《從0到1學習Flink》—— Flink 中的幾種 Time 詳解

十一、《從0到1學習Flink》—— Flink 寫入數據到 ElasticSearch

十二、《從0到1學習Flink》—— Flink 項目如何運行?

1三、《從0到1學習Flink》—— Flink 寫入數據到 Kafka

1四、《從0到1學習Flink》—— Flink JobManager 高可用性配置

1五、《從0到1學習Flink》—— Flink parallelism 和 Slot 介紹

1六、《從0到1學習Flink》—— Flink 讀取 Kafka 數據批量寫入到 MySQL

1七、《從0到1學習Flink》—— Flink 讀取 Kafka 數據寫入到 RabbitMQ

1八、《從0到1學習Flink》—— 你上傳的 jar 包藏到哪裏去了?

相關文章
相關標籤/搜索