日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

手把手教你获取、编译和调试Flink的源代码

發布時間:2025/3/15 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 手把手教你获取、编译和调试Flink的源代码 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

導讀:本文介紹如何導入Flink源代碼,對源代碼進行編譯、構建及調試。

作者:羅江宇 趙士杰 李涵淼 閔文俊

來源:大數據DT(ID:hzdashuju)

01 獲取與導入Flink源代碼

1. 下載Flink源代碼

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

1)官網下載方式

下載地址為

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. 導入Flink源代碼

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

將下載好的Flink源代碼導入IDEA,流程如下。

  • 啟動IntelliJ IDEA 并單擊歡迎窗口右上角的Open按鈕。

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

  • 選擇Import project from external model和maven項,并單擊Next按鈕。

  • 選擇SDK。如果之前沒有配置過SDK,單擊“+”圖標, 并點擊JDK,選擇你的JDK的目錄,然后單擊OK按鈕。

  • 單擊Next 按鈕完成Flink源代碼的導入。

  • 在導入的項目右側單擊Maven→Generate Sources and Update Folders的圖標,將Flink Library 構建到Maven 本地倉庫。

  • 構建項目(單擊Build→Make Project圖標)。

  • 想對Flink進行二次開發或者為開源社區貢獻代碼的讀者可以選擇配置CheckStyle。

    1)Java CheckStyle配置流程

    IntelliJ IDEA 通過CheckStyle-IDEA 插件來支持CheckStyle。

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

  • 依次選擇Settings→Tools→Checkstyle并設置checkstyle。

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

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

  • 在Configuration File面板中單擊“+”圖標添加新配置:

    在彈窗中將Description設置為Flink;

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

    勾選Store relative to project location 選項,單擊Next按鈕;

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

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

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

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

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

    2)Scala CheckStyle配置流程

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

    02 編譯與調試Flink源代碼

    1. 編譯與構建Flink

    源代碼已經導入,CheckStyle也已配置好,接下來開始編譯與構建Flink。

    在構建源代碼之前,假如有修改Flink 版本的需求,可以通過修改Flink源代碼的tools/change-version.sh來實現。

    Flink源代碼的編譯與構建會因Maven版本的不同而有所差異。對于Maven 3.0.x 版本、3.1.x版本、3.2.x版本,可以采用簡單構建Flink的方式,在Flink源代碼的根目錄下運行以下命令。

    $?mvn?clean?install?-DskipTests

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

    $?mvn?clean?install?-DskipTests $?cd?flink-dist $?mvn?clean?install

    推薦使用Maven 3.2.5版本,下面就依據這個版本來介紹更多的構建內容。使用如下方式快速構建Flink源代碼,會跳過測試、QA插件、Java docs。

    $?mvn?clean?install?-DskipTests?-Dfast

    在構建Flink時,會默認構建一個Flink特定的Hadoop 2的jar,以供Flink 使用HDFS 和YARN。大多數開發者有指定Hadoop版本的需求(建議選擇Hadoop 2.4及以上版本)。

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

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

    dist*.jar,否則Hadoop 會作為一個jar包放在opt目錄下。

    選擇合適的方式構建Flink項目,會將Flink的構建放到本地Maven倉庫中,并將Flink源代碼構建結果放在build-target目錄(Flink源代碼構建目錄)下。可以將build-target目錄壓縮到一個tar包,即與官網一樣的Flink 二進制包。

    2. Flink 源代碼調試

    調試Flink 源代碼有助于我們了解源代碼的執行流程和排查問題。Flink 源代碼調試分為本地調試和遠程調試,下面來分別介紹。

    1)本地調試

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

    2)遠程調試

    本地調試僅限于部署模式中的Local模式,對于基于Standalone、on YARN、on Kubernetes的部署模式,需要使用遠程調試。

    遠程調試方式有兩種:一是修改日志等級,二是修改配置來開啟Java遠程調試。

    • 修改日志等級

    打開Flink源代碼的構建目錄(build-target)下的conf/log4j.properties,根據需要將內容中的INFO改成DEBUG,如下所示,只是將rootLogger的賦值從INFO 修改為DEBUG。修改log4j.properties后構建和運行Flink,即可通過DEBUG日志進行遠程調試。

    #?設置全局的日志等級 log4j.rootLogger=DEBUG,?file#?也可以按需改變Flink、Akka、Hadoop、Kafka和ZooKeeper包以及其他包的日志等級 log4j.logger.org.apache.flink=INFOlog4j.logger.akka=INFO log4j.logger.org.apache.kafka=INFO log4j.logger.org.apache.hadoop=INFO log4j.logger.org.apache.zookeeper=INFO#?Log?all?infos?in?the?given?file log4j.appender.file=org.apache.log4j.FileAppender log4j.appender.file.file=${log.file} log4j.appender.file.append=false log4j.appender.file.layout=org.apache.log4j.PatternLayout log4j.appender.file.layout.ConversionPattern=%d{yyyy-MM-dd?HH:mm:ss,SSS}? %-5p?%-60c?%x?-?%m%n#?Suppress?the?irrelevant?(wrong)?warnings?from?the?Netty?channel?handler log4j.logger.org.apache.flink.shaded.akka.org.jboss.netty.channel .DefaultChannelPipeline=ERROR,?file
    • 修改配置來開啟Java遠程調試

    首先打開IDEA,創建Remote項(見圖1-6)并復制Remote項的Java運行參數內容,然后修改Flink 構建目錄下的conf/flink-conf.yaml,添加env.java.opts屬性與值,添加的內容如下:

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

    ▲圖1-6 配置遠程調試中的Remote項

    還可以通過env.java.opts.jobmanager 與env.java.opts.taskmanager來設置JobManager 和TaskManager運行的參數,從而設置開啟遠程調試。設置配置后,基于這個構建目錄運行Flink應用,根據運行的JobManager 與TaskManager 的IP修改原先配置的Remote項的host,在Flink源代碼中設置斷點,通過Debug 配置Remote項來進行遠程調試。

    設置env.java.opts、env.java.opts.jobmanager和env.java.opts.taskmanager的方法在on?Kubernetes模式下很適用,因為Flink 運行的各個組件的IP不同。其他模式存在運行組件與IP、調試端口相同的問題,對于這種情況可以考慮采用修改日志等級的方式。

    通過學習Flink源代碼的編譯與構建,我們知道如何根據需要構建一個Flink發布包。通過學習Flink源代碼的調試,我們對源代碼的調試有了更深的了解,為后續理解源代碼和排查源代碼問題打下了基礎。

    關于作者:羅江宇,Flink技術專家,先后就職于新浪微博、滴滴和某大型電商公司。先后主導或參與了多家公司的Flink實時計算服務的構建、對超大規模集群的維護以及Flink引擎的改造。擁有豐富的實時計算實戰經驗,目前專注于Kubernetes調度、Flink SQL及Flink流批一體化方向。

    趙士杰,資深大數據技術專家,曾就職于滴滴、阿里巴巴等一線互聯網公司。從0到1深度參與了滴滴的大數據建設,擁有非常豐富的大數據平臺一線建設經驗,對于大數據領域的計算和存儲引擎也有深入研究。

    李涵淼,大數據研發專家,曾任滴滴大數據開發工程師。從事大數據領域工作多年,參與過多家公司流計算平臺的設計與研發,目前專注于批流一體、OLAP技術方向的研究與應用。

    閔文俊,螞蟻集團技術專家、開源大數據社區愛好者、Flink Contributor,在實時計算領域工作多年,深度參與了滴滴、螞蟻集團的實時計算平臺建設。

    本文摘編自《Flink技術內幕:架構設計與實現原理》,經出版方授權發布。(ISBN:9787111696292)

    《Flink技術內幕:架構設計與實現原理》

    點擊上圖了解及購買

    轉載請聯系微信:DoctorData

    推薦語:Flink源碼維護者阿里、螞蟻、滴滴經驗總結,剖析Flink機制,指導性能調優、可用性保障、效能優化、二次開發。

    劃重點👇

    干貨直達👇

    • 程序員怎樣上元宇宙的車?

    • 什么是貝葉斯定理?樸素貝葉斯有多“樸素”?終于有人講明白了

    • 產品經理必讀:用戶場景分析的四要素

    • 2021朋友圈都在傳的10本書,找到了

    更多精彩👇

    在公眾號對話框輸入以下關鍵詞

    查看更多優質內容!

    讀書?|?書單?|?干貨?|?講明白?|?神操作?|?手把手

    大數據?|?云計算?|?數據庫?|?Python?|?爬蟲?|?可視化

    AI?|?人工智能?|?機器學習?|?深度學習?|?NLP

    5G?|?中臺?|?用戶畫像?|?數學?|?算法?|?數字孿生

    據統計,99%的大咖都關注了這個公眾號

    👇

    總結

    以上是生活随笔為你收集整理的手把手教你获取、编译和调试Flink的源代码的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。

    主站蜘蛛池模板: 亚洲精品一线二线三线 | 国产高清自拍视频 | 福利片在线播放 | 色网在线 | 日韩在线电影一区二区 | 超级乱淫视频 | 日本视频免费在线播放 | 2019中文字幕在线免费观看 | a级片免费网站 | 男人的天堂一区二区 | 久久久久久久久国产精品 | 男生操女生动漫 | 福利在线视频观看 | 91久久综合亚洲鲁鲁五月天 | 欧美一级淫片007 | 国产一区二区三区在线观看免费 | 日韩欧美中字 | 91亚洲视频在线 | av资源网在线观看 | 国产吞精囗交免费视频 | 干欧美少妇| 日韩亚洲欧美一区二区三区 | 草女人视频 | 日本成人激情 | 亚洲大尺度视频 | 温柔少妇的高潮呻吟 | 欧美大片高清免费观看 | 黄色小视频在线免费看 | 91久久国产精品 | 亚洲av电影天堂男人的天堂 | av黄网站 | 国产亚洲欧美在线视频 | 国产人人干 | 国产成人午夜精品 | 午夜免费成人 | 在线免费观看视频网站 | 日韩爱爱片 | 国产高清av在线 | 少妇人妻一级a毛片 | 午夜蜜桃视频 | 色网综合 | 欧美国产大片 | 日韩欧美麻豆 | 特大黑人娇小亚洲女 | 激情小视频 | 亚洲天堂一区在线观看 | 亚洲成人av电影在线 | 国产欧美日韩在线观看 | 国产成年人免费视频 | 奇米四色网 | 中文字幕人妻无码系列第三区 | 日一区二区三区 | www.五月.com | 一级理论片 | 色01看片网 | 99久久久国产精品免费蜜臀 | 四虎影院污 | 日韩黄色影院 | 插入综合网 | 九九热国产精品视频 | 99热9| 国产黄色片av | 99热这里只有精品久久 | 久草一区二区 | 黄色一级在线观看 | 久久精品一二三区 | 久久影音先锋 | 在线观看亚洲精品 | 五十路息子 | 日本一区二区三区视频在线播放 | 初尝黑人巨炮波多野结衣 | 激情视频一区 | 中国老太婆性做爰 | 欧美日韩国产一区二区三区在线观看 | 成人看的视频 | 亚洲大逼 | 最好看的日本字幕mv视频大全 | 激情毛片视频 | 国产精品精东影业 | 日韩免费黄色片 | 老头糟蹋新婚少妇系列小说 | 第四色影音先锋 | 欧美夜夜操 | 国产69精品久久久久久久久久 | 亚洲3p| 99在线观看免费视频 | 99热在线免费 | 2025韩国大尺度电影 | 亚洲一区自拍 | 日韩1级片 | 超碰2023| av免费的| 亚洲免费高清 | 欧美在线视频播放 | 成人免费视频网站在线观看 | 国产特黄| 午夜影院在线看 | 亚洲第一女人av | 日韩精品2 |