天天看點

《新手篇》如何正确使用FlinkX

一、前期準備

老規矩,如果以下概念中,有不懂的,自行查資料了解

(學會查資料,比問别人更有效率)

項目位址:

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 源碼一份!

《新手篇》如何正确使用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。

《新手篇》如何正确使用FlinkX

除此之外,還特意編寫了将jar包安裝到本地倉庫的可執行腳本。

(如何在不同的系統下執行腳本,請自行百度)

[圖檔截取自

官方文檔]

《新手篇》如何正确使用FlinkX

以上内容請注意!!!請注意!!!請注意!!!⚠️⚠️⚠️

項目編譯指令

mvn clean package -Dmaven.test.skip      

之後在項目的根目錄下,生成對應的插件目錄

1.8_release -> plugins

1.10_release -> syncplugins

《新手篇》如何正确使用FlinkX

二、任務送出

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

《新手篇》如何正确使用FlinkX

同樣有個快捷的方式,直接在入口類中,在類的執行按鈕下,選擇“Modify Run Configuration”,即可修改

《新手篇》如何正确使用FlinkX

主要修改任務參數,根據自己的情況對應修改即可,下面貼下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子產品

《新手篇》如何正确使用FlinkX

在LocalTest中

jobPath修改為任務JSON的絕對路徑,點選執行即可本地調試。官方還特意添加了常用的參數配置

《新手篇》如何正确使用FlinkX

遠端調試

如果需要遠端調試,那麼需要在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叢集,需要根據日志修改(怎麼看日志,怎麼修改,自行查資料)

《新手篇》如何正确使用FlinkX

至此,任務idea調試流程就這些内容。

四、自定義插件

如何自定義自己所需要的插件,官方文檔寫的非常詳細,有興趣請

點選連結跳轉