欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何分析Flink源碼閱讀環(huán)境搭建并調(diào)試Flink-Clients模塊

這篇文章給大家介紹如何分析Flink源碼閱讀環(huán)境搭建并調(diào)試Flink-Clients模塊,內(nèi)容非常詳細(xì),感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

創(chuàng)新互聯(lián)是一家業(yè)務(wù)范圍包括IDC托管業(yè)務(wù),網(wǎng)絡(luò)空間、主機(jī)租用、主機(jī)托管,四川、重慶、廣東電信服務(wù)器租用,成都機(jī)柜租用,成都網(wǎng)通服務(wù)器托管,成都服務(wù)器租用,業(yè)務(wù)范圍遍及中國大陸、港澳臺以及歐美等多個(gè)國家及地區(qū)的互聯(lián)網(wǎng)數(shù)據(jù)服務(wù)公司。

大綱

如何分析Flink源碼閱讀環(huán)境搭建并調(diào)試Flink-Clients模塊

一、Flink 官方文檔這么全面,為什么還要讀 Flink 源碼

讀文檔和讀源碼的目的是不一樣的,就拿 Apache Flink 這個(gè)項(xiàng)目來說,如果你想知道 Flink 的使用功能,設(shè)計(jì)思想,實(shí)現(xiàn)原理,看官方文檔就足夠了;如果你想了解的就是具體細(xì)節(jié),比如說 StreamGraph 是怎么生成的或者是 Exactly Once 究竟如何實(shí)現(xiàn)的,那么就需要去閱讀源碼了。

關(guān)鍵是看你的目的是什么,如果你想了解思想,經(jīng)驗(yàn)等看文檔就夠了,因?yàn)槲臋n是人寫給人的;如果你想了解具體細(xì)節(jié),那應(yīng)該去看源碼,因?yàn)樵创a是人寫給機(jī)器的,源碼里有到底做了什么這些事情。

那么我寫這篇的文章目的是什么?我的目的是,萬一你已經(jīng)在生產(chǎn)上身經(jīng)百戰(zhàn)了,對 Flink 的原理都把握住了,那么看源碼是對你來說最好的進(jìn)階方式,所以我為你準(zhǔn)備了這篇搭建環(huán)境的教程,為你節(jié)約寶貴的時(shí)間陪家人陪孩子不香嗎?

二、Flink 源碼幾百萬行,該如何下手

通常對于閱讀源碼這件事情來說是有方法論可循的。

1、首先得具備前提條件
  • 相關(guān)語言和基礎(chǔ)技術(shù)知識。比如 Java,Maven,Git,設(shè)計(jì)模式等等。如果你只會 C++,哪天心血來潮去閱讀 Flink 源碼,那是不現(xiàn)實(shí)的;

  • 開源項(xiàng)目的功能。需要知道這個(gè)項(xiàng)目是為了解決什么問題,完成什么功能,有哪些特性,如何啟動,有哪些配置項(xiàng)。先把這個(gè)項(xiàng)目跑起來,能運(yùn)行簡單的 Demo;

  • 相關(guān)的文檔。也就是龐大的工程中,有哪些模塊,每個(gè)模塊大概的功能是干嘛的;

這些前提知識準(zhǔn)備好了之后,你就對這個(gè)項(xiàng)目有了一個(gè)感性的認(rèn)識,再去閱讀它的代碼就輕松一些了。

在閱讀代碼過程中,不是說拿到源碼就直接從第一個(gè)模塊一行行的開始讀,這樣很容易迷失方向,陷入到代碼細(xì)節(jié)中無可自拔。

2、其次需要關(guān)注這些重點(diǎn)東西
  • 接口抽象定義。任何項(xiàng)目代碼都會有很多接口,接口的繼承關(guān)系和方法,描述了它處理的數(shù)據(jù)結(jié)構(gòu),業(yè)務(wù)實(shí)體以及和其他模塊的關(guān)系,理清楚這些關(guān)系是非常重要的。

  • 模塊粘合層。代碼中很多的設(shè)計(jì)模式,都是為了解耦各個(gè)模塊的,好處就是靈活擴(kuò)展,壞處就是讓本來平鋪直述的代碼割裂成一個(gè)個(gè)模塊,不那么方便閱讀。

  • 業(yè)務(wù)流程。在代碼一開始,不要進(jìn)入細(xì)節(jié),一方面會打消你的積極性,一方面也看不過來。要站在一定的高度,搞清楚整個(gè)的業(yè)務(wù)流程是怎樣的,數(shù)據(jù)是怎么被傳遞的。最好可以畫流程圖或者時(shí)序圖,方便理解和記憶。

  • 具體實(shí)現(xiàn)。在具體實(shí)現(xiàn)中,仍然需要弄清楚一些重要的點(diǎn)

    (1)代碼邏輯。在代碼中,有業(yè)務(wù)邏輯,是真正的業(yè)務(wù)處理邏輯;還有控制邏輯,像流程流轉(zhuǎn)之類的;

    (2)出錯(cuò)處理。其實(shí)很多地方都是在處理出錯(cuò)的邏輯,可以忽略掉這部分邏輯,排除干擾因素;

    (3)數(shù)據(jù)處理。屬性轉(zhuǎn)換,JSON 解析,XML 解析,這些代碼都比較冗長和無聊,可以忽略;

    (4)重要的算法。這是比較核心的地方,也是最有技術(shù)含量的地方;

    (5)底層交互。有一些代碼是和底層操作系統(tǒng)或者是和 JVM 交互的,需要知道一些底層的東西;

  • 運(yùn)行時(shí)調(diào)試。這是最直接的方式,可以看到代碼究竟是如何跑起來的,數(shù)據(jù)是怎么樣的,是了解代碼最重要的方式。

總結(jié)成一句話:高屋建瓴,提綱挈領(lǐng),把握方向

好了,有了這些內(nèi)容心法,下面開始實(shí)戰(zhàn)吧!

三、安裝 Git 環(huán)境

我就不具體演示了,說一下大致流程,可以自行百度,相關(guān)的文章很多的。

1、下載 Git

下載對應(yīng)平臺(Windows,Mac)的 Git 客戶端,并安裝

下載地址:https://git-scm.com/downloads

2、初始配置
$ git config --global user.name "Your Name"
$ git config --global user.email yourEmail@example.com
3、生成秘鑰,并上傳到 Gitee 上
ssh-keygen -t rsa

登陸 Gitee,在頭像 - 設(shè)置 - 安全設(shè)置 - SSH 公鑰 添加一個(gè)公鑰

四、Github 龜速如何解決

GitHub 很慢如何下載好幾十 M 的源碼文件呢?

你想下載任意 GitHub 項(xiàng)目,都可以在 Gitee 上導(dǎo)入這個(gè) Github 項(xiàng)目:

如何分析Flink源碼閱讀環(huán)境搭建并調(diào)試Flink-Clients模塊

導(dǎo)入之后,就可以下載了。當(dāng)然 Apache Flink 活躍度前幾的項(xiàng)目,Gitee 肯定是會同步的了,直接搜索即可。

https://gitee.com/apache/flink?_from=gitee_search

然后打開 Git Bash,克隆這個(gè)項(xiàng)目

git@gitee.com:apache/flink.git

獲取所有的分支

git fetch --tags

切換到 1.12.0 分支

git checkout release-1.12.0

這樣最新發(fā)布的 1.12.0 版本源碼就在本地了。

五、配置 Maven 阿里鏡像

在導(dǎo)入 IDEA 之前,我們要配置 Maven 的鏡像為阿里云的,這樣下載 Jar 包比較快速。

在 Maven 安裝目錄的 conf 目錄的 settings.xml 文件中,加入如下配置到 mirrors 標(biāo)簽中

<mirror>
    <id>alimaven</id>
    <name>aliyun maven</name>
    <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
    <mirrorOf>central</mirrorOf>       
</mirror>

六、導(dǎo)入 IDEA

打開 IDEA,直接打開即可,等待它下載好所有的依賴

如何分析Flink源碼閱讀環(huán)境搭建并調(diào)試Flink-Clients模塊

導(dǎo)入后,可以看到有很多模塊,但是各個(gè)模塊的功能見名知意,非常清晰,這里我就不挨個(gè)介紹了。直接開始 Debug Flink-Clients 模塊。

七、開始調(diào)試 Flink-Clients

首先想強(qiáng)調(diào)一下,為什么要調(diào)試這個(gè)模塊。因?yàn)檫@個(gè)模塊是提交 Flink 作業(yè)的入口模塊,代碼流程相對比較清晰,調(diào)試完,就可以知道 Flink 作業(yè)是怎么提交的了。

1、我們該調(diào)試哪個(gè)對象

回憶下,大數(shù)據(jù)的 Hello,World 程序是什么,是不是 WordCount,F(xiàn)link 發(fā)行版自帶的例子中,就有 WordCount 程序。

下面的圖,我是下載了官網(wǎng)的 Flink-1.12 發(fā)行版,放到我的虛擬機(jī)上了。

如何分析Flink源碼閱讀環(huán)境搭建并調(diào)試Flink-Clients模塊

如何把它運(yùn)行起來呢?

首先啟動一個(gè)本機(jī)的 Flink 集群,把壓縮包解壓出來之后,什么都不要做,直接啟動

cd /my2/flink/bin
./start-cluster.sh

提交 WordCount 程序到集群

./flink run ../examples/streaming/WordCount.jar

這樣就直接把 WordCount 程序提交到集群上了,是怎么做到的呢?可以看看 flink 這個(gè)命令里面是什么

vi flink

移動到最后,可以發(fā)現(xiàn)

# Add HADOOP_CLASSPATH to allow the usage of Hadoop file systems
exec $JAVA_RUN $JVM_ARGS $FLINK_ENV_JAVA_OPTS "${log_setting[@]}" -classpath "`manglePathList "$CC_CLASSPATH:$INTERNAL_HADOOP_CLASSPATHS"`" org.apache.flink.client.cli.CliFrontend "$@"

原來它就是一個(gè) java -classpath 類名,啟動了一個(gè) Java 虛擬機(jī)啊

這個(gè)類就是

org.apache.flink.client.cli.CliFrontend

這個(gè)類就是我們要運(yùn)行的對象了

2、開始調(diào)試

可以看到 CliFrontend 里面有一個(gè) main 方法,二話不說,直接 debug,報(bào)錯(cuò)了再說

果然,報(bào)錯(cuò)如下:

如何分析Flink源碼閱讀環(huán)境搭建并調(diào)試Flink-Clients模塊

說在環(huán)境變量中,沒有找到 FLINK_CONF_DIR 配置,也就是 flink 配置文件沒有找到,就是那個(gè) flink-conf.yml 文件

這個(gè)文件其實(shí)是在發(fā)行目錄下:

如何分析Flink源碼閱讀環(huán)境搭建并調(diào)試Flink-Clients模塊

然后配置一個(gè)

如何分析Flink源碼閱讀環(huán)境搭建并調(diào)試Flink-Clients模塊

在這個(gè)地方加上這個(gè)配置

如何分析Flink源碼閱讀環(huán)境搭建并調(diào)試Flink-Clients模塊

FLINK_CONF_DIR=D:\Code\flink\flink\flink-dist\src\main\resources

再運(yùn)行一遍,報(bào)錯(cuò)如下

如何分析Flink源碼閱讀環(huán)境搭建并調(diào)試Flink-Clients模塊

原來是因?yàn)?,我們之前在運(yùn)行命令的時(shí)候,后面還有一坨參數(shù),現(xiàn)在什么參數(shù)都沒有往 main 方法傳,當(dāng)然報(bào)錯(cuò)了。

這里我們還需要一個(gè) WordCount.jar 包,源碼都有了,直接從源碼打包一個(gè)出來,就是這么的任性了。

直接把 Flink : Examples : Streaming 模塊打個(gè)包

如何分析Flink源碼閱讀環(huán)境搭建并調(diào)試Flink-Clients模塊

打完包之后,在 target 目錄下,就會有一個(gè) WordCount.jar 包了

如何分析Flink源碼閱讀環(huán)境搭建并調(diào)試Flink-Clients模塊

如何分析Flink源碼閱讀環(huán)境搭建并調(diào)試Flink-Clients模塊

填到這個(gè)地方

run D:\Code\flink\flink\flink-examples\flink-examples-streaming\target\WordCount.jar

如何分析Flink源碼閱讀環(huán)境搭建并調(diào)試Flink-Clients模塊

然后再 Debug 看一下,發(fā)現(xiàn)它在這卡了很久,直到超時(shí)(WARNING 先不用管)

如何分析Flink源碼閱讀環(huán)境搭建并調(diào)試Flink-Clients模塊

這個(gè)是正常的,因?yàn)樗谧詈笊?JobGraph 之后,是要通過 JobClient 客戶端,提交到集群上的(還記得我們那個(gè)配置文件嗎?里面可是配了集群的 JobManager 地址和端口的),而我們在 Windows 本地并沒有啟動集群。

關(guān)于如何分析Flink源碼閱讀環(huán)境搭建并調(diào)試Flink-Clients模塊就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯(cuò),可以把它分享出去讓更多的人看到。

分享標(biāo)題:如何分析Flink源碼閱讀環(huán)境搭建并調(diào)試Flink-Clients模塊
當(dāng)前網(wǎng)址:http://aaarwkj.com/article28/jpogjp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站策劃、搜索引擎優(yōu)化、小程序開發(fā)電子商務(wù)、面包屑導(dǎo)航網(wǎng)頁設(shè)計(jì)公司

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名
中文字幕中出亚洲精品| 日韩一区二区精品网站| 禁止未满十八在线观看| 黄色录像一级大片中国的| 熟女人妻视频一区二区| 日本在线看片一区二区| 日韩免费av在线观看| 国产黄片一区二区不卡| 亚洲国产日朝欧美综合久久| 少妇高潮惨叫久久麻豆传| 久久96国产精品久久久| 视频一区二区三区拍拍| 天堂在线精品亚洲综合网| 免费观看黄片视频在线播放 | 丰满人妻一区二区三区色| 一本综合九九国产二区| 日韩爱视频一区二区| 日韩欧美中文字幕一区二区| 亚洲精品国产熟女久久| 国产一区二区三区精品女同| 亚洲精品国产自在现线| 久久亚洲中文字幕精品一区四区| 国产欧美日韩综合一区| 给我免费在线观看视频| 91麻豆精品一区二区三区| 亚洲精品91在线中文字幕| 欧美日韩黄片免费在线观看| 亚洲欧洲成熟熟女妇专区乱| 日本精品一级免费在线| 懂色一区二区三区精品视频| 亚洲国产专区一区二区麻豆| 亚洲精品欧美综合第四区| 91成人大片在线观看| 美女av在线免费观看| 日韩夫妻性生活免费视频| 看看永久成人免费视频| 日韩亚洲天堂视频免费观看| 亚洲精品理论片在线观看| 91麻豆精品国产91久5久久| 色哟哟精品丝袜一区二区| 看看美女阴逼毛茸茸的|