아즈카반 빌드 / 빌드하는 법 / 빌드하기
Azkaban build
LinkedIn 에서 Hadoop job 들을 실행하기 위해 만든 job scheduler 이다. java로 만들어져 있다.
job dependency 를 정해서 실행순서를 정할 수 있다. 예를들면, B라는 작업을 수행하려면, A가 수행돼야 한다. 등으로.
mode
2개의 mode 가 있다.
- solo-server mode : standalone
- DB 가 H2에 포함되어 있다.
- web server 와 executor server 가 하나의 process 로 되어있다.
- 테스트 용 또는 작은 규모의 작업에 적합
- multiple-executor mode: 분산
- DB 는 MySQL instance 를 연결해야만 한다.(master-slave set up 을 해야 한다.)
- web server 와 executor server 가 이상적으로는 다른 host 에서 동작해야만 한다. 그래서 upgrading 이나 maintenance 는 user에게 영향을 주지 않게 된다.
- 여러개의 host 를 설정하는게 Azkaban 을 견고하고(robust), scalable 하게 해준다.
설치 절차
- db 설정
- 여러 executor 가 database 를 이용할 수 있도록 설정
- Executor Server 를 다운로드후 설치, 각 executor 에 대한 설정이 db 에 들어가 있어야 한다.
- Azkaban plugin 을 설치
- Web server 를 설치
build
java 로 작성되어 있고, gradle 을 사용한다. java는 java 8 이상을 필요로 한다.
- gradle
- jdk 9 이후에 version string format 이 달라졌다.
- java 15 이상을 위해서는 gradle 6.7 이상을 사용하라고 한다.
- 참고: android - Could not determine java version from ‘15.0.1’ - Stack Overflow
- java 8 이상
- linux 환경에서 하자. windows에서는 실패했다. 아래를 참고하자.
- 여기서는 버전 3.90.0을 빌드한다. : Release 3.90.0 · azkaban/azkaban · GitHub
git clone https://github.com/azkaban/azkaban.git
cd azkaban
gradlew build installDist
Open JDK 8 + javaFx
Ubuntu 20 에서 build 를 시도하면 다음과 같은 error 가 발생한다.
myuser@DESKTOP-3TJIL3S:~/a/apps/azkaban-3.90.0$ ./gradlew build installDist --debug > log.txt
22:37:48.400 [ERROR] [system.err] /home/myuser/a/apps/azkaban-3.90.0/azkaban-exec-server/src/test/java/azkaban/dag/DagServiceTest.java:32: error: package javafx.util does not exist
22:37:48.400 [ERROR] [system.err] import javafx.util.Pair;
22:37:48.400 [ERROR] [system.err] ^
22:37:48.438 [ERROR] [system.err] /home/myuser/a/apps/azkaban-3.90.0/azkaban-exec-server/src/test/java/azkaban/dag/StatusChangeRecorder.java:24: error: package javafx.util does not exist
22:37:48.438 [ERROR] [system.err] import javafx.util.Pair;
22:37:48.438 [ERROR] [system.err] ^
22:37:48.468 [ERROR] [system.err] /home/myuser/a/apps/azkaban-3.90.0/azkaban-exec-server/src/test/java/azkaban/dag/DagServiceTest.java:56: error: cannot find symbol
22:37:48.468 [ERROR] [system.err] private final List<Pair<String, Status>> expectedSequence = new ArrayList<>();
22:37:48.468 [ERROR] [system.err] ^
22:37:48.468 [ERROR] [system.err] symbol: class Pair
22:37:48.468 [ERROR] [system.err] location: class DagServiceTest
22:37:48.481 [ERROR] [system.err] /home/myuser/a/apps/azkaban-3.90.0/azkaban-exec-server/src/test/java/azkaban/dag/StatusChangeRecorder.java:31: error: cannot find symbol
22:37:48.481 [ERROR] [system.err] private final List<Pair<String, Status>> sequence = new ArrayList<>();
22:37:48.481 [ERROR] [system.err] ^
22:37:48.481 [ERROR] [system.err] symbol: class Pair
22:37:48.481 [ERROR] [system.err] location: class StatusChangeRecorder
22:37:48.487 [ERROR] [system.err] /home/myuser/a/apps/azkaban-3.90.0/azkaban-exec-server/src/test/java/azkaban/dag/StatusChangeRecorder.java:41: error: cannot find symbol
22:37:48.498 [ERROR] [system.err] void verifySequence(final List<Pair<String, Status>> expectedSequence) {
22:37:48.499 [ERROR] [system.err] ^
22:37:48.499 [ERROR] [system.err] symbol: class Pair
22:37:48.499 [ERROR] [system.err] location: class StatusChangeRecorder
22:37:49.100 [ERROR] [system.err] Note: /home/myuser/a/apps/azkaban-3.90.0/azkaban-exec-server/src/test/java/azkaban/execapp/AzkabanExecutorServerTest.java uses or overrides a deprecated API.
22:37:49.100 [ERROR] [system.err] Note: Recompile with -Xlint:deprecation for details.
22:37:49.100 [ERROR] [system.err] 5 errors
22:37:49.826 [ERROR] [system.err] Note: /home/myuser/a/apps/azkaban-3.90.0/azkaban-solo-server/src/test/java/azkaban/soloserver/AzkabanSingleServerTest.java uses or overrides a deprecated API.
22:37:49.826 [ERROR] [system.err] Note: Recompile with -Xlint:deprecation for details.
22:38:11.331 [ERROR] [org.gradle.api.internal.tasks.testing.logging.TestCountLogger]
521 tests completed, 3 failed, 18 skipped
다음 글들에 따르면, javaFx 의 설치로 해결이 가능하다. 하지만, ubuntu 20 에서 jdk 8 에 대한 openjdk 의 설치도 어렵다. 그래서 결과적으로 openJDK 를 설치할 때부터 JFX 를 포함한 openJDK를 설치하라고 한다.
- https://github.com/azkaban/azkaban/issues/1999#issuecomment-432479282
- java - Install openJDK+openJFX 8 on Ubuntu 20 - Stack Overflow
bellsoft jdk 설치
curl https://download.bell-sw.com/java/8u292+10/bellsoft-jdk8u292+10-linux-amd64-full.deb --output bellsoft-jdk8u292+10-linux-amd64-full.deb
sudo apt-get install -f ./bellsoft-jdk8u292+10-linux-amd64-full.deb
build 완료
그래도 계속 해서 Test Failure 가 3개 났다.
myuser@DESKTOP-3TJIL3S:~/a/apps/azkaban-3.90.0$ ./gradlew build installDist --debug > log.txt
23:03:05.671 [ERROR] [system.err] Note: /home/myuser/a/apps/azkaban-3.90.0/azkaban-exec-server/src/test/java/azkaban/execapp/AzkabanExecutorServerTest.java uses or overrides a deprecated API.
23:03:05.672 [ERROR] [system.err] Note: Recompile with -Xlint:deprecation for details.
23:03:05.672 [ERROR] [system.err] Note: /home/myuser/a/apps/azkaban-3.90.0/azkaban-exec-server/src/test/java/azkaban/execapp/FlowPreparerTest.java uses unchecked or unsafe operations.
23:03:05.672 [ERROR] [system.err] Note: Recompile with -Xlint:unchecked for details.
23:03:07.550 [ERROR] [system.err] Note: /home/myuser/a/apps/azkaban-3.90.0/azkaban-web-server/src/test/java/azkaban/webapp/AzkabanWebServerTest.java uses or overrides a deprecated API.
23:03:07.550 [ERROR] [system.err] Note: Recompile with -Xlint:deprecation for details.
23:03:07.550 [ERROR] [system.err] Note: /home/myuser/a/apps/azkaban-3.90.0/azkaban-web-server/src/test/java/azkaban/scheduler/QuartzJobDescriptionTest.java uses unchecked or unsafe operations.
23:03:07.550 [ERROR] [system.err] Note: Recompile with -Xlint:unchecked for details.
23:03:33.545 [ERROR] [org.gradle.api.internal.tasks.testing.logging.TestCountLogger]
521 tests completed, 3 failed, 18 skipped
그래서 <azkaban-3.90.0>\azkaban-common\src\test\java\azkaban\trigger\BasicTimeCheckerTest.java
의 test 를 전부 주석처리했다.
추후 확인은 필요하다.
windows 에서는 build 가 안된다
window 에서 gradle build 를 시도했지만, 아래 같은 error 와 함께 build 는 실패했다.
D:\azkaban\azkaban-3.90.0>set JAVA_HOME="d:\a\apps\java\java-se-8u41-ri"
D:\azkaban\azkaban-3.90.0>gradlew build installDist
Parallel execution with configuration on demand is an incubating feature.
FAILURE: Build failed with an exception.
* Where:
Build file 'D:\azkaban\azkaban-3.90.0\build.gradle' line: 30
* What went wrong:
Plugin [id: 'com.gradle.build-scan', version: '1.9'] was not found in any of the following sources:
- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Plugin Repositories (could not resolve plugin artifact 'com.gradle.build-scan:com.gradle.build-scan.gradle.plugin:1.9')
Searched in the following repositories:
Gradle Central Plugin Repository
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.
* Get more help at https://help.gradle.org
BUILD FAILED in 2s
D:\azkaban\azkaban-3.90.0>
댓글 없음:
댓글 쓰기