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

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

前言

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

fork

執行下面命令:git

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

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

編譯

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

git checkout blink

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

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

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

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

<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 , 而後點擊一波添加好友,歡迎來探討技術。瀏覽器

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

[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

配套視頻解析

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

<iframe frameborder="0" src="https://v.qq.com/txp/iframe/player.html?vid=s0858kj6upx" allowFullScreen="true"></iframe>

相關

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

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

總結

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

博客

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

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

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

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

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

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

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

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

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

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

十一、Flink 從0到1學習 —— Flink 讀取 Kafka 數據寫入到 ElasticSearch

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

1三、Flink 從0到1學習 —— Flink 讀取 Kafka 數據寫入到 Kafka

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

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

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

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

1八、Flink 從0到1學習 —— Flink 讀取 Kafka 數據寫入到 HBase

1九、Flink 從0到1學習 —— Flink 讀取 Kafka 數據寫入到 HDFS

20、Flink 從0到1學習 —— Flink 讀取 Kafka 數據寫入到 Redis

2一、Flink 從0到1學習 —— Flink 讀取 Kafka 數據寫入到 Cassandra

2二、Flink 從0到1學習 —— Flink 讀取 Kafka 數據寫入到 Flume

2三、Flink 從0到1學習 —— Flink 讀取 Kafka 數據寫入到 InfluxDB

2四、Flink 從0到1學習 —— Flink 讀取 Kafka 數據寫入到 RocketMQ

2五、Flink 從0到1學習 —— 你上傳的 jar 包藏到哪裏去了

2六、Flink 從0到1學習 —— 你的 Flink job 日誌跑到哪裏去了

2七、阿里巴巴開源的 Blink 實時計算框架真香

2八、Flink 從0到1學習 —— Flink 中如何管理配置?

2九、Flink 從0到1學習—— Flink 不能夠連續 Split(分流)?

30、Flink 從0到1學習—— 分享四本 Flink 國外的書和二十多篇 Paper 論文

3一、Flink 架構、原理與部署測試

3二、爲何說流處理即將來?

3三、OPPO 數據中臺之基石:基於 Flink SQL 構建實時數據倉庫

3四、流計算框架 Flink 與 Storm 的性能對比

3五、Flink狀態管理和容錯機制介紹

3六、Apache Flink 結合 Kafka 構建端到端的 Exactly-Once 處理

3七、360深度實踐:Flink與Storm協議級對比

3八、如何基於Flink+TensorFlow打造實時智能異常檢測平臺?只看這一篇就夠了

3九、Apache Flink 1.9 重大特性提早解讀

40、Flink 全網最全資源(視頻、博客、PPT、入門、實戰、源碼解析、問答等持續更新)

4一、Flink 靈魂兩百問,這誰頂得住?

源碼解析

一、Flink 源碼解析 —— 源碼編譯運行

二、Flink 源碼解析 —— 項目結構一覽

三、Flink 源碼解析—— local 模式啓動流程

四、Flink 源碼解析 —— standalone session 模式啓動流程

五、Flink 源碼解析 —— Standalone Session Cluster 啓動流程深度分析之 Job Manager 啓動

六、Flink 源碼解析 —— Standalone Session Cluster 啓動流程深度分析之 Task Manager 啓動

七、Flink 源碼解析 —— 分析 Batch WordCount 程序的執行過程

八、Flink 源碼解析 —— 分析 Streaming WordCount 程序的執行過程

九、Flink 源碼解析 —— 如何獲取 JobGraph?

十、Flink 源碼解析 —— 如何獲取 StreamGraph?

十一、Flink 源碼解析 —— Flink JobManager 有什麼做用?

十二、Flink 源碼解析 —— Flink TaskManager 有什麼做用?

1三、Flink 源碼解析 —— JobManager 處理 SubmitJob 的過程

1四、Flink 源碼解析 —— TaskManager 處理 SubmitJob 的過程

1五、Flink 源碼解析 —— 深度解析 Flink Checkpoint 機制

1六、Flink 源碼解析 —— 深度解析 Flink 序列化機制

1七、Flink 源碼解析 —— 深度解析 Flink 是如何管理好內存的?

1八、Flink Metrics 源碼解析 —— Flink-metrics-core

1九、Flink Metrics 源碼解析 —— Flink-metrics-datadog

20、Flink Metrics 源碼解析 —— Flink-metrics-dropwizard

2一、Flink Metrics 源碼解析 —— Flink-metrics-graphite

2二、Flink Metrics 源碼解析 —— Flink-metrics-influxdb

2三、Flink Metrics 源碼解析 —— Flink-metrics-jmx

2四、Flink Metrics 源碼解析 —— Flink-metrics-slf4j

2五、Flink Metrics 源碼解析 —— Flink-metrics-statsd

2六、Flink Metrics 源碼解析 —— Flink-metrics-prometheus

2六、Flink Annotations 源碼解析

2七、Flink 源碼解析 —— 如何獲取 ExecutionGraph ?

2八、大數據重磅炸彈——實時計算框架 Flink

2九、Flink Checkpoint-輕量級分佈式快照

30、Flink Clients 源碼解析原文出處:zhisheng的博客,歡迎關注個人公衆號:zhisheng

相關文章
相關標籤/搜索