[컴] Azkaban build

 아즈카반 빌드 / 빌드하는 법 / 빌드하기

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 하게 해준다.

설치 절차

  1. db 설정
  2. 여러 executor 가 database 를 이용할 수 있도록 설정
  3. Executor Server 를 다운로드후 설치, 각 executor 에 대한 설정이 db 에 들어가 있어야 한다.
  4. Azkaban plugin 을 설치
  5. Web server 를 설치

build

java 로 작성되어 있고, gradle 을 사용한다. java는 java 8 이상을 필요로 한다.

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를 설치하라고 한다.

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>

댓글 없음:

댓글 쓰기