ChunJun是一個分散式整合框架,目前基於Apache Flink。它最初被稱為FlinkX,於2022年2月22日更名為ChunJun。目前ChunJun已在上千家企業部署並穩定運作。
ChunJun官網:https://dtstack.github.io/chunjun/
ChunJun將不同的資料庫抽象化為reader/source插件、writer/sink插件和lookup插件,它具有以下功能:
使用git克隆ChunJun的程式碼
git clone https://github.com/DTStack/chunjun.git
在專案目錄下執行指令。
./mvnw clean package
或執行
sh build/build.sh
錯誤訊息:
[ ERROR ] Failed to execute goal com . diffplug . spotless : spotless - maven - plugin : 2.4 . 2 : check ( spotless - check ) on project chunjun - core :
Execution spotless - check of goal com . diffplug . spotless : spotless - maven - plugin : 2.4 . 2 : check failed : Unable to resolve dependencies :
Failed to collect dependencies at com . google . googlejavaformat : google - java - format : jar : 1.7 -> com . google . errorprone : javac - shaded : jar : 9 + 181 - r4173 - 1 :
Failed to read artifact descriptor for com . google . errorprone : javac - shaded : jar : 9 + 181 - r4173 - 1 : Could not transfer artifact
com . google . errorprone : javac - shaded : pom : 9 + 181 - r4173 - 1 from / to aliyunmaven ( https : //maven.aliyun.com/repository/public):
Access denied to : https : //maven.aliyun.com/repository/public/com/google/errorprone/javac-shaded/9+181-r4173-1/javac-shaded-9+181-r4173-1.pom -> [Help 1]
解決方案: 從網址「https://repo1.maven.org/maven2/com/google/errorprone/javac-shaded/9+181-r4173-」下載「javac-shaded-9+181-r4173-1.jar ” 1/javac-shaded-9+181-r4173-1.jar',然後使用以下命令在本地安裝:
mvn install:install-file -DgroupId=com.google.errorprone -DartifactId=javac-shaded -Dversion=9+181-r4173-1 -Dpackaging=jar -Dfile=./jars/javac-shaded-9+181-r4173-1.jar
下表是ChunJun的分支與flink版本的對應關係。如果版本不對齊,任務中會出現mysql‘序列化異常’、‘NoSuchMethod異常’等問題。
分公司 | Flink版本 |
---|---|
掌握 | 1.16.1 |
1.12_發布 | 1.12.7 |
1.10_發布 | 1.10.1 |
1.8_發布 | 1.8.3 |
ChunJun支援多種模式運行任務。不同的模式取決於不同的環境和步驟。以下是
本機模式不依賴Flink環境和Hadoop環境,在本機環境中啟動JVM程序來執行任務。
進入“chunjun-dist”目錄並執行以下命令:
sh bin/chunjun-local.sh -job $SCRIPT_PATH
「$SCRIPT_PATH」參數的意思是「任務腳本所在的路徑」。執行後,就可以在本地執行任務了。
筆記:
when you package in windows and run sh in linux , you need to execute command sed -i "s/r//g" bin/*.sh to fix the 'r' problems.
參考影片
Standalone模式依賴Flink Standalone環境,不依賴Hadoop環境。
尋找 jars 目錄:如果使用 maven 建置此項目,則目錄名稱為 'chunjun-dist' ;如果您從release頁面下載tar.gz文件,解壓縮後,目錄名稱將類似於「chunjun-assemble-${revision}-chunjun-dist」。
將 jar 複製到 Flink lib 目錄,指令範例:
cp -r chunjun-dist $FLINK_HOME /lib
注意:此操作需要在Flink叢集的所有機器上執行,否則部分作業會因為ClassNotFoundException而失敗。
sh $FLINK_HOME /bin/start-cluster.sh
啟動成功後,Flink Web 預設連接埠為 8081,可以在「flink-conf.yaml」檔案中設定。我們可以存取本機的8081端口,進入standalone叢集的flink web。
進入“chunjun-dist”目錄並執行以下命令:
sh bin/chunjun-standalone.sh -job chunjun-examples/json/stream/stream.json
指令執行成功後,可以在flink web上觀察任務狀態。
參考影片
YarnSession 模式取決於 Flink jar 和 Hadoop 環境,在任務提交之前需要啟動yarn-session。
Yarn-Session 模式依賴 Flink 和 Hadoop 環境。您需要提前設定$HADOOP_HOME和$FLINK_HOME,並且我們需要使用yarn-session'-t'參數上傳'chunjun-dist'。
cd $FLINK_HOME /bin
./yarn-session -t $CHUNJUN_HOME -d
透過yarn web取得yarn-session對應的application id $SESSION_APPLICATION_ID,然後進入chunjun-dist目錄,執行以下指令:
sh ./bin/chunjun-yarn-session.sh -job chunjun-examples/json/stream/stream.json -confProp { " yarn.application.id " : " SESSION_APPLICATION_ID " }
'yarn.application.id' 也可以在 'flink-conf.yaml' 中設定。提交成功後,可以在紗網上觀察任務狀態。
參考影片
Yarn Per-Job 模式依賴 Flink 和 Hadoop 環境。需提前設定$HADOOP_HOME和$FLINK_HOME。
配置正確後即可提交yarn per-job任務。然後進入目錄'chunjun-dist'並執行以下命令:
sh ./bin/chunjun-yarn-perjob.sh -job chunjun-examples/json/stream/stream.json
提交成功後,可以在紗網上觀察任務狀態。
詳情請見:https://dtstack.github.io/chunjun/documents/
感謝所有貢獻者!我們很高興您能為Chunjun 做出貢獻。
ChunJun 使用 Apache 2.0 許可證。請造訪許可證以了解詳細資訊。
加入 ChunJun Slack。 https://join.slack.com/t/chunjun/shared_invite/zt-1hzmvh0o3-qZ726NXmhClmLFRMpEDHYw