ติดตั้ง Azkaban 3.84.14 บน Ubuntu 18.04.5 LTS

Link

In solo server mode, the DB is embedded H2 and both web server and executor server run in the same process.

The multiple executor mode is for most serious production environment. Its DB should be backed by MySQL instances with master-slave set up. The web server and executor servers should ideally run in different hosts

ติดตั้ง Azkaban 3.84.14 บน Ubuntu 18.04.5 LTS

อัพเดทแพกเกจ

sudo apt update

ติดตั้ง Java

sudo apt install openjdk-8-jdk

ติดตั้ง Hadoop

ติดตั้ง Hadoop in Stand-Alone Mode บน Ubuntu 18.04

ติดตั้ง Azkaban

ดาว์นโหลด Azkaban 3.84.14

git clone https://github.com/phaisarnsut/azkaban3.84.14.git
$ mv azkaban3.84.14/ azkaban
$ cd azkaban/
$ chmod +x gradlew

Build

$ ./gradlew distZip

unzip Azkaban solo server

$ unzip azkaban-solo-server/build/distributions/azkaban-solo-server-0.1.0-SNAPSHOT.zip

สร้างไฟล์ config

$ mkdir conf
$ cd conf

สร้างไฟล์ azkaban.properties

# Azkaban Personalization Settings
azkaban.name=Test
azkaban.label=My Local Azkaban
azkaban.color=#FF3601
azkaban.default.servlet.path=/index
web.resource.dir=web/
default.timezone.id=America/Los_Angeles
# Azkaban UserManager class
user.manager.class=azkaban.user.XmlUserManager
user.manager.xml.file=conf/azkaban-users.xml
# Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
database.type=h2
# h2.path=./h2
h2.path=.
# h2.create.tables=true
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.use.ssl=false
jetty.maxThreads=25
jetty.port=8081
# Azkaban Executor settings
executor.port=12321
# mail settings
mail.sender=
mail.host=
# User facing web server configurations used to construct the user facing server URLs. They are useful when there is a reverse proxy between Azkaban web servers and users.
# enduser -> myazkabanhost:443 -> proxy -> localhost:8081
# when this parameters set then these parameters are used to generate email links.
# if these parameters are not set then jetty.hostname, and jetty.port(if ssl configured jetty.ssl.port) are used.
# azkaban.webserver.external_hostname=myazkabanhost.com
# azkaban.webserver.external_ssl_port=443
# azkaban.webserver.external_port=8081
job.failure.email=
job.success.email=
lockdown.create.projects=false
cache.directory=cache
# JMX stats
jetty.connector.stats=true
executor.connector.stats=true
# Azkaban plugin settings
azkaban.jobtype.plugin.dir=plugins/jobtypes
# Number of executions to be displayed
azkaban.display.execution_page_size=16
azkaban.use.multiple.executors=true
azkaban.executor.runtimeProps.override.eager=false
# Azkaban Ramp Feature Configuration
#Ramp Feature Related
azkaban.ramp.enabled=true
azkaban.ramp.status.polling.enabled=true
azkaban.ramp.status.polling.interval.min=30
azkaban.ramp.status.push.interval.threshold=15
azkaban.ramp.status.pull.interval.threshold=100

สร้างไฟล์ azkaban-users.xml

<azkaban-users>
  <user groups="azkaban" password="azkaban" roles="admin" username="azkaban"/>
  <user password="metrics" roles="metrics" username="metrics"/>

  <role name="admin" permissions="ADMIN"/>
  <role name="metrics" permissions="METRICS"/>
</azkaban-users>

สร้างไฟล์เปล่า global.properties

Start the server

$ cd azkaban-solo-server-0.1.0-SNAPSHOT/
$ pwd
/home/jack/Downloads/azkaban/azkaban-solo-server-0.1.0-SNAPSHOT

Start the solo server:

$ bin/start-solo.sh

ดูว่า start ขึ้นมั๊ย

$ cat soloServerLog__2022-05-05+14:52:27.out

Stop server

$ bin/shutdown-solo.sh

ทดลองเรียกไปที่ http://localhost:8081/

ตัวอย่าง Flow แบบง่าย

สร้างไฟล์ flow20.project

azkaban-flow-version: 2.0

สร้างไฟล์ basic.flow

nodes:
  - name: jobA
    type: command
    config:
      command: echo "This is an echoed text."

ตัวอย่าง Flow แบบมี Dependencies

แก้ไขไฟล์ basic.flow

nodes:
  - name: jobC
    type: noop
    # jobC depends on jobA and jobB
    dependsOn:
      - jobA
      - jobB

  - name: jobA
    type: command
    config:
      command: echo "This is an echoed text."

  - name: jobB
    type: command
    config:
      command: pwd

type: noop คือ A job that takes no parameters and is essentially a null operation. Used for organizing your graph. (Azkaban 3.0 Documentation #builtin-jobtypes)