一、前期準備
老規矩,如果以下概念中,有不懂的,自行查資料了解
(學會查資料,比問别人更有效率)
項目位址:
https://github.com/DTStack/flinkx
!!!強烈推薦官方文檔,内容非常豐富
官方文檔:
https://github.com/DTStack/flinkx/blob/1.10_release/docs/quickstart.md
官方視訊:
https://www.bilibili.com/video/BV13Z4y1P7G5?from=search&seid=18033425315277652693
《初識Flinkx》
下面這個視訊強烈推薦!!講得是非常全,非常細!
https://www.bilibili.com/video/BV11X4y1V79R?from=search&seid=18033425315277652693
《Flinkx-RDB子產品使用場景與示範》
Git Clone 項目
首先将項目從Github中下載下傳并導入到IDEA中(方法較多,介紹常見的一種)
從IDEA菜單欄裡,Git 選項 -> Clone -> Flinkx 項目位址,點選Clone即可擷取Flinkx 源碼一份!
版本對應
項目clone下來預設版本是
1.10_release,目前推薦的穩定版本是
1.8_release 和 1.10_release。最新版本是1.11_release。但是!
最新不代表最穩定。Flinkx的每一個版本,都對應着Flink的版本,
上下版本不一定相容,是以使用前,請确定好Flinkx與Flinkx對應的版本。
項目編譯
因為項目中涉及的插件非常的多,是以編譯整個項目耗時非常大,是以建議,對于不需要使用的插件,可以注釋掉。同時,強烈建議,先看
官方文檔,再去編譯
!!!但是,請注意!!!請注意!!!請注意!!!⚠️⚠️⚠️
1. 部分插件之間是有依賴關系的,比如:
- flinkx-core是被所有插件依賴,千萬不能注釋!
- flinkx-rdb子產品是被所有rdb資料源插件依賴,是以在使用類似mysql,oracle等(包括hive,因為連接配接時用的是jdbc)的場景下,flinkx-rdb子產品千萬不能注釋!
- flinkx-test是用于本地調試代碼的子產品,項目打包成jar包時是必須要注釋掉的!
- flinkx-launcher子產品是用來将可執行任務送出到對應的執行環境中的,不能注釋!!
2. 部分插件中有些jar包在maven中央倉庫中可能沒有,但是在項目的
jars目錄下,開發者貼心地準備了jar。
除此之外,還特意編寫了将jar包安裝到本地倉庫的可執行腳本。
(如何在不同的系統下執行腳本,請自行百度)
[圖檔截取自
官方文檔]
以上内容請注意!!!請注意!!!請注意!!!⚠️⚠️⚠️
項目編譯指令
mvn clean package -Dmaven.test.skip
之後在項目的根目錄下,生成對應的插件目錄
1.8_release -> plugins
1.10_release -> syncplugins
二、任務送出
Flinkx支援的任務送出方式有local-test(通過flinkx-test子產品送出任務)、local、standalone、yarn-session、yarn-per-job模式,暫時不支援application模式送出。
從idea中送出任務
使用的
idea版本是
2020.3 公開版,有不一樣的地方自行修改
這裡以
yarn-per-job模式為例,其他模式類似,可以看
官方文檔自行配置任務送出參數
1. 配置idea-application
子產品:flinkx-launcher
入口類:Launcher
同樣有個快捷的方式,直接在入口類中,在類的執行按鈕下,選擇“Modify Run Configuration”,即可修改
主要修改任務參數,根據自己的情況對應修改即可,下面貼下idea中一直使用的任務參數
-mode yarnPer
-name flinkx-test
-job docs/example/stream_stream.json
-pluginRoot syncplugins
-flinkconf /dtstack/conf/flink
-yarnconf /dtstack/conf/yarn
-flinkLibJar /dtstack/flink-1.10.1/lib
-confProp {\"flink.checkpoint.interval"\:60000}
-queue c
任務參數具體什麼含義?請看官方文檔的參數說明
任務JSON怎麼配置?請看官方文檔,這裡就不再多說了,而且,官方還特意整理常用插件的任務JSON,隻要對應着修改參數即可,點選連結跳轉(如此貼心的官方還有誰?這難道不值得一個star嘛?)
三、調試代碼
本地調試
首先打開flinkx-test子產品
在LocalTest中
jobPath修改為任務JSON的絕對路徑,點選執行即可本地調試。官方還特意添加了常用的參數配置
遠端調試
如果需要遠端調試,那麼需要在flink-conf.yaml中增加Flink 的遠端調試配置,然後在idea中配置”JVM Remote“,在代碼塊中打斷點(這種方法還能調試Flink 本身的代碼)
env.java.opts.jobmanager: -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5005
env.java.opts.taskmanager: -agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=5006
隻需要修改标記的這兩個地方,如果是HA叢集,需要根據日志修改(怎麼看日志,怎麼修改,自行查資料)
至此,任務idea調試流程就這些内容。
四、自定義插件
如何自定義自己所需要的插件,官方文檔寫的非常詳細,有興趣請
點選連結跳轉