成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

手把手教你獲取、編譯和調(diào)試Flink的源代碼

開(kāi)發(fā) 架構(gòu)
獲取Flink源代碼的方式有兩種:一種是通過(guò)官網(wǎng)的源代碼下載地址直接下載,另一種是通過(guò)git clone的方式。

一獲取與導(dǎo)入Flink源代碼

1. 下載Flink源代碼

獲取Flink源代碼的方式有兩種:一種是通過(guò)官網(wǎng)的源代碼下載地址直接下載,另一種是通過(guò)git clone的方式。

1)官網(wǎng)下載方式

下載地址為

https://flink.apache.org/downloads.html

選擇Flink 1.9.0的Source版本下載。

2)git clone方式

輸入git clone git@github.com:apache/flink.git 命令將源代碼下載到本地,如圖1-5所示。

▲圖1-5 git clone方式下載

2. 導(dǎo)入Flink源代碼

導(dǎo)入Flink 源代碼分成兩步,分別是將Flink源代碼導(dǎo)入IDEA和配置Flink源代碼的CheckStyle。其中,配置好Flink 源代碼的CheckStyle是為了保證Flink 源代碼修改符合CheckStyle里的規(guī)范要求。

將下載好的Flink源代碼導(dǎo)入IDEA,流程如下。

啟動(dòng)IntelliJ IDEA 并單擊歡迎窗口右上角的Open按鈕。

在彈出窗口中選擇Flink源代碼的根目錄。

選擇Import project from external model和maven項(xiàng),并單擊Next按鈕。

選擇SDK。如果之前沒(méi)有配置過(guò)SDK,單擊“+”圖標(biāo), 并點(diǎn)擊JDK,選擇你的JDK的目錄,然后單擊OK按鈕。

單擊Next 按鈕完成Flink源代碼的導(dǎo)入。

在導(dǎo)入的項(xiàng)目右側(cè)單擊Maven→Generate Sources and Update Folders的圖標(biāo),將Flink Library 構(gòu)建到Maven 本地倉(cāng)庫(kù)。

構(gòu)建項(xiàng)目(單擊Build→Make Project圖標(biāo))。

想對(duì)Flink進(jìn)行二次開(kāi)發(fā)或者為開(kāi)源社區(qū)貢獻(xiàn)代碼的讀者可以選擇配置CheckStyle。

1)Java CheckStyle配置流程

IntelliJ IDEA 通過(guò)CheckStyle-IDEA 插件來(lái)支持CheckStyle。

在IntelliJ IDEA 的Plugins Marketplace中查找并安裝 CheckStyle-IDEA 插件。

依次選擇Settings→Tools→Checkstyle并設(shè)置checkstyle。

將 Scan Scope設(shè)置為Only Java sources(including tests)。

在Checkstyle version下拉列表中選擇checkstyle版本,并單擊Apply按鈕。(注:官方推薦版本為8.12。)

在Configuration File面板中單擊“+”圖標(biāo)添加新配置:

在彈窗中將Description設(shè)置為Flink;

選中 Use a local Checkstyle file,并選擇Flink源代碼目錄下的 tools/maven/checkstyle.xml文件;

勾選Store relative to project location 選項(xiàng),單擊Next按鈕;

將checkstyle.suppressions.file的屬性設(shè)置值為 suppressions.xml,單擊Next按鈕即完成配置。

勾選剛剛添加的新配置Flink,以將其設(shè)置為活躍的配置,依次單擊Apply 和OK按鈕,即完成Java 部分CheckStyle的配置。若源代碼違反CheckStyle規(guī)范,CheckStyle會(huì)給出警告。

在CheckStyle 構(gòu)建完成后,依次選擇Settings→Editor→Code Style→Java,并單擊齒輪圖標(biāo),選擇導(dǎo)入Flink源代碼目錄下的tools/maven/checkstyle.xml文件,這樣就可以自動(dòng)調(diào)整import的布局了。

可以在CheckStyle的窗口中單擊Check Module按鈕掃描整個(gè)模塊,以檢測(cè)代碼的CheckStyle。

注意:目前Flink源代碼的flink-core、flink-optimizer和 flink-runtime模塊還沒(méi)有完全符合設(shè)置的CheckStyle的要求,因此在這三個(gè)模塊中出現(xiàn)違反CheckStyle的警告是正常的。

2)Scala CheckStyle配置流程

開(kāi)啟Scala 的CheckStyle,依次選擇Settings→Editor→Inspections,再搜索Scala style inspections并勾選。將Flink源代碼目錄下的tools/maven/scalastyle_config.xml放置到Flink 源代碼的.idea目錄下,即完成Scala部分CheckStyle的配置。

二 編譯與調(diào)試Flink源代碼

1. 編譯與構(gòu)建Flink

源代碼已經(jīng)導(dǎo)入,CheckStyle也已配置好,接下來(lái)開(kāi)始編譯與構(gòu)建Flink。

在構(gòu)建源代碼之前,假如有修改Flink 版本的需求,可以通過(guò)修改Flink源代碼的tools/change-version.sh來(lái)實(shí)現(xiàn)。

Flink源代碼的編譯與構(gòu)建會(huì)因Maven版本的不同而有所差異。對(duì)于Maven 3.0.x 版本、3.1.x版本、3.2.x版本,可以采用簡(jiǎn)單構(gòu)建Flink的方式,在Flink源代碼的根目錄下運(yùn)行以下命令。

  1. $ mvn clean install -DskipTests 

而對(duì)于Maven 3.3.x及以上版本,則要相對(duì)麻煩一點(diǎn),在Flink源代碼的根目錄下運(yùn)行下面的命令。

  1. $ mvn clean install -DskipTests 
  2. $ cd flink-dist 
  3. $ mvn clean install 

推薦使用Maven 3.2.5版本,下面就依據(jù)這個(gè)版本來(lái)介紹更多的構(gòu)建內(nèi)容。使用如下方式快速構(gòu)建Flink源代碼,會(huì)跳過(guò)測(cè)試、QA插件、Java docs。

  1. $ mvn clean install -DskipTests -Dfast 

在構(gòu)建Flink時(shí),會(huì)默認(rèn)構(gòu)建一個(gè)Flink特定的Hadoop 2的jar,以供Flink 使用HDFS 和YARN。大多數(shù)開(kāi)發(fā)者有指定Hadoop版本的需求(建議選擇Hadoop 2.4及以上版本)。

  1. $ mvn clean install -DskipTests -Dhadoop.version=3.2.2 -Dinclude-hadoop 

其中加上了-Dinclude-hadoop參數(shù),這會(huì)將Hadoop的類打包到lib目錄下的flink-

dist*.jar,否則Hadoop 會(huì)作為一個(gè)jar包放在opt目錄下。

選擇合適的方式構(gòu)建Flink項(xiàng)目,會(huì)將Flink的構(gòu)建放到本地Maven倉(cāng)庫(kù)中,并將Flink源代碼構(gòu)建結(jié)果放在build-target目錄(Flink源代碼構(gòu)建目錄)下。可以將build-target目錄壓縮到一個(gè)tar包,即與官網(wǎng)一樣的Flink 二進(jìn)制包。

2. Flink 源代碼調(diào)試

調(diào)試Flink 源代碼有助于我們了解源代碼的執(zhí)行流程和排查問(wèn)題。Flink 源代碼調(diào)試分為本地調(diào)試和遠(yuǎn)程調(diào)試,下面來(lái)分別介紹。

1)本地調(diào)試

以Flink源代碼自帶Streaming 的WordCount為例介紹如何進(jìn)行本地調(diào)試。找到Flink 源代碼目錄flink-examples/flink-examples-streaming的多級(jí)子目錄下的WordCount.java,再選擇Debug。讀者可以在Flink源代碼中設(shè)置斷點(diǎn)進(jìn)行跟蹤調(diào)試。

2)遠(yuǎn)程調(diào)試

本地調(diào)試僅限于部署模式中的Local模式,對(duì)于基于Standalone、on YARN、on Kubernetes的部署模式,需要使用遠(yuǎn)程調(diào)試。

遠(yuǎn)程調(diào)試方式有兩種:一是修改日志等級(jí),二是修改配置來(lái)開(kāi)啟Java遠(yuǎn)程調(diào)試。

修改日志等級(jí)

打開(kāi)Flink源代碼的構(gòu)建目錄(build-target)下的conf/log4j.properties,根據(jù)需要將內(nèi)容中的INFO改成DEBUG,如下所示,只是將rootLogger的賦值從INFO 修改為DEBUG。修改log4j.properties后構(gòu)建和運(yùn)行Flink,即可通過(guò)DEBUG日志進(jìn)行遠(yuǎn)程調(diào)試。

  1. # 設(shè)置全局的日志等級(jí) 
  2. log4j.rootLogger=DEBUG, file 
  3.  
  4. # 也可以按需改變Flink、Akka、Hadoop、Kafka和ZooKeeper包以及其他包的日志等級(jí) 
  5. log4j.logger.org.apache.flink=INFO 
  6.  
  7. log4j.logger.akka=INFO 
  8. log4j.logger.org.apache.kafka=INFO 
  9. log4j.logger.org.apache.hadoop=INFO 
  10. log4j.logger.org.apache.zookeeper=INFO 
  11.  
  12. # Log all infos in the given file 
  13. log4j.appender.file=org.apache.log4j.FileAppender 
  14. log4j.appender.file.file=${log.file} 
  15. log4j.appender.file.append=false 
  16. log4j.appender.file.layout=org.apache.log4j.PatternLayout 
  17. log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd HH:mm:ss,SSS}  
  18. %-5p %-60c %x - %m%n 
  19.  
  20. # Suppress the irrelevant (wrong) warnings from the Netty channel handler 
  21. log4j.logger.org.apache.flink.shaded.akka.org.jboss.netty.channel 
  22. .DefaultChannelPipeline=ERROR, file 

修改配置來(lái)開(kāi)啟Java遠(yuǎn)程調(diào)試

首先打開(kāi)IDEA,創(chuàng)建Remote項(xiàng)(見(jiàn)圖1-6)并復(fù)制Remote項(xiàng)的Java運(yùn)行參數(shù)內(nèi)容,然后修改Flink 構(gòu)建目錄下的conf/flink-conf.yaml,添加env.java.opts屬性與值,添加的內(nèi)容如下:

  1. env.java.opts: -agentlib:jdwp=transport=dt_socket,server=y,suspend=n, address=5005 

▲圖1-6 配置遠(yuǎn)程調(diào)試中的Remote項(xiàng)

還可以通過(guò)env.java.opts.jobmanager 與env.java.opts.taskmanager來(lái)設(shè)置JobManager 和TaskManager運(yùn)行的參數(shù),從而設(shè)置開(kāi)啟遠(yuǎn)程調(diào)試。設(shè)置配置后,基于這個(gè)構(gòu)建目錄運(yùn)行Flink應(yīng)用,根據(jù)運(yùn)行的JobManager 與TaskManager 的IP修改原先配置的Remote項(xiàng)的host,在Flink源代碼中設(shè)置斷點(diǎn),通過(guò)Debug 配置Remote項(xiàng)來(lái)進(jìn)行遠(yuǎn)程調(diào)試。

設(shè)置env.java.opts、env.java.opts.jobmanager和env.java.opts.taskmanager的方法在on Kubernetes模式下很適用,因?yàn)镕link 運(yùn)行的各個(gè)組件的IP不同。其他模式存在運(yùn)行組件與IP、調(diào)試端口相同的問(wèn)題,對(duì)于這種情況可以考慮采用修改日志等級(jí)的方式。

通過(guò)學(xué)習(xí)Flink源代碼的編譯與構(gòu)建,我們知道如何根據(jù)需要構(gòu)建一個(gè)Flink發(fā)布包。通過(guò)學(xué)習(xí)Flink源代碼的調(diào)試,我們對(duì)源代碼的調(diào)試有了更深的了解,為后續(xù)理解源代碼和排查源代碼問(wèn)題打下了基礎(chǔ)。

關(guān)于作者:羅江宇,F(xiàn)link技術(shù)專家,先后就職于新浪微博、滴滴和某大型電商公司。先后主導(dǎo)或參與了多家公司的Flink實(shí)時(shí)計(jì)算服務(wù)的構(gòu)建、對(duì)超大規(guī)模集群的維護(hù)以及Flink引擎的改造。擁有豐富的實(shí)時(shí)計(jì)算實(shí)戰(zhàn)經(jīng)驗(yàn),目前專注于Kubernetes調(diào)度、Flink SQL及Flink流批一體化方向。

趙士杰,資深大數(shù)據(jù)技術(shù)專家,曾就職于滴滴、阿里巴巴等一線互聯(lián)網(wǎng)公司。從0到1深度參與了滴滴的大數(shù)據(jù)建設(shè),擁有非常豐富的大數(shù)據(jù)平臺(tái)一線建設(shè)經(jīng)驗(yàn),對(duì)于大數(shù)據(jù)領(lǐng)域的計(jì)算和存儲(chǔ)引擎也有深入研究。

李涵淼,大數(shù)據(jù)研發(fā)專家,曾任滴滴大數(shù)據(jù)開(kāi)發(fā)工程師。從事大數(shù)據(jù)領(lǐng)域工作多年,參與過(guò)多家公司流計(jì)算平臺(tái)的設(shè)計(jì)與研發(fā),目前專注于批流一體、OLAP技術(shù)方向的研究與應(yīng)用。

閔文俊,螞蟻集團(tuán)技術(shù)專家、開(kāi)源大數(shù)據(jù)社區(qū)愛(ài)好者、Flink Contributor,在實(shí)時(shí)計(jì)算領(lǐng)域工作多年,深度參與了滴滴、螞蟻集團(tuán)的實(shí)時(shí)計(jì)算平臺(tái)建設(shè)。

本文摘編自《Flink技術(shù)內(nèi)幕:架構(gòu)設(shè)計(jì)與實(shí)現(xiàn)原理》,經(jīng)出版方授權(quán)發(fā)布。(ISBN:9787111696292)

 

責(zé)任編輯:武曉燕 來(lái)源: 大數(shù)據(jù)DT
相關(guān)推薦

2021-09-26 16:08:23

CC++clang_forma

2022-07-22 12:45:39

GNU

2022-04-19 10:45:28

自動(dòng)化簽名鴻蒙app操作系統(tǒng)

2021-07-14 09:00:00

JavaFX開(kāi)發(fā)應(yīng)用

2023-12-13 08:17:24

JPDAJavaDebug

2011-01-10 14:41:26

2025-05-07 00:31:30

2011-05-03 15:59:00

黑盒打印機(jī)

2024-01-26 08:16:48

Exporter開(kāi)源cprobe

2022-07-27 08:16:22

搜索引擎Lucene

2022-01-08 20:04:20

攔截系統(tǒng)調(diào)用

2022-03-14 14:47:21

HarmonyOS操作系統(tǒng)鴻蒙

2023-04-26 12:46:43

DockerSpringKubernetes

2022-12-07 08:42:35

2021-06-04 05:18:29

ARM程序Gdbserver

2023-06-05 13:07:38

2020-08-12 09:07:53

Python開(kāi)發(fā)爬蟲(chóng)

2011-02-22 13:46:27

微軟SQL.NET

2021-02-26 11:54:38

MyBatis 插件接口

2021-12-28 08:38:26

Linux 中斷喚醒系統(tǒng)Linux 系統(tǒng)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 国产高清区 | 日韩av在线一区二区三区 | 亚州视频在线 | 成人免费一区二区三区牛牛 | 人人操日日干 | av一级一片 | 电影午夜精品一区二区三区 | 日韩午夜电影 | 蜜桃臀av一区二区三区 | 欧美天堂 | 日韩电影一区 | 亚洲一页| 成人一区二区三区视频 | 国产一区二区三区免费视频 | 国产美女一区二区 | 人人玩人人添人人澡欧美 | 波多野结衣二区 | 久久精品免费观看 | 亚洲天天干 | 91精品国产麻豆 | 在线国产一区二区 | 精品网 | 久久久久国产一区二区三区四区 | 久久草在线视频 | 亚洲精品一区二区网址 | 精品视频在线观看 | 中文字幕在线视频一区二区三区 | 欧美日韩亚洲在线 | 91精品国产一区二区三区香蕉 | 成人在线观 | 69电影网| 91精品国产一区 | 91免费观看国产 | 日本在线网站 | 久国产视频 | 久久专区| 国产精品福利一区二区三区 | 在线āv视频 | 午夜视频一区二区 | 中文字幕成人网 | 日韩一区二区三区四区五区 |