ChunJun은 분산 통합 프레임워크로 현재 Apache Flink를 기반으로 하고 있습니다. 처음에는 FlinkX로 알려졌으며 2022년 2월 22일에 ChunJun으로 이름이 변경되었습니다. 다양한 이기종 데이터 소스 간의 데이터 동기화 및 계산을 실현할 수 있습니다. ChunJun은 지금까지 수천 개의 회사에 안정적으로 배포 및 실행되었습니다.
ChunJun 공식 홈페이지: https://dtstack.github.io/chunjun/
ChunJun은 다양한 데이터베이스를 리더/소스 플러그인, 라이터/싱크 플러그인 및 조회 플러그인으로 추상화하며 다음과 같은 기능을 가지고 있습니다.
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]
해결책: URL '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 'Serialization Exceptions', 'NoSuchMethod Exception' 등의 문제가 발생한다.
지점 | 플링크 버전 |
---|---|
주인 | 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 환경에 의존하지 않습니다.
jar 디렉토리 찾기: maven을 사용하여 이 프로젝트를 빌드하는 경우 디렉토리 이름은 'chunjun-dist' 입니다. 릴리스 페이지에서 tar.gz 파일을 다운로드하면 압축을 푼 후 디렉터리 이름은 'chunjun-assemble-${revision}-chunjun-dist'와 같습니다.
Flink lib 디렉토리에 jar를 복사합니다. 명령 예:
cp -r chunjun-dist $FLINK_HOME /lib
참고: 이 작업은 Flink 클러스터의 모든 시스템에서 실행되어야 합니다. 그렇지 않으면 ClassNotFoundException으로 인해 일부 작업이 실패합니다.
sh $FLINK_HOME /bin/start-cluster.sh
시작이 성공한 후 Flink Web의 기본 포트는 8081이며 'flink-conf.yaml' 파일에서 구성할 수 있습니다. 현재 시스템의 8081 포트에 액세스하여 독립형 클러스터의 flink 웹에 들어갈 수 있습니다.
'chunjun-dist' 디렉터리로 이동하여 아래 명령을 실행합니다.
sh bin/chunjun-standalone.sh -job chunjun-examples/json/stream/stream.json
명령이 성공적으로 실행되면 flink 웹에서 작업 상태를 관찰할 수 있습니다.
참고영상
YarnSession 모드는 Flink jar 및 Hadoop 환경에 따라 다르며 작업이 제출되기 전에 Yarn 세션을 시작해야 합니다.
Yarn 세션 모드는 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에 해당하는 애플리케이션 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 웹에서 작업 상태를 확인할 수 있습니다.
참고영상
Yarn Per-Job 모드는 Flink 및 Hadoop 환경에 따라 다릅니다. $HADOOP_HOME 및 $FLINK_HOME을 미리 설정해야 합니다.
실 작업별 작업은 구성이 올바른 후에 제출될 수 있습니다. 그런 다음 'chunjun-dist' 디렉터리에 들어가서 아래 명령을 실행합니다.
sh ./bin/chunjun-yarn-perjob.sh -job chunjun-examples/json/stream/stream.json
제출이 성공적으로 완료되면 Yarn 웹에서 작업 상태를 확인할 수 있습니다.
자세한 내용은 https://dtstack.github.io/chunjun/documents/를 참조하세요.
모든 기여자에게 감사드립니다! 당신이 Chunjun에 기여할 수 있게 되어 매우 기쁩니다.
ChunJun은 Apache 2.0 라이선스를 따릅니다. 자세한 내용은 라이선스를 참조하세요.
천준 Slack과 함께하세요. https://join.slack.com/t/chunjun/shared_invite/zt-1hzmvh0o3-qZ726NXmhClmLFRMpEDHYw