Link
- GitHub – azkaban/azkaban: Azkaban workflow manager.
- Azkaban documentation! — Azkaban documentation
- Azkaban 3.0 Documentation
- Azkaban (The current documentation will be deprecated soon)
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)

ตัวอย่าง Flow แบบมี Dependencies เป็น flow
nodes: - name: jobC type: noop dependsOn: - embedded_flow - name: embedded_flow type: flow config: flow.num.job.threads: 3 nodes: - name: job01 type: command config: command: sleep 10 - name: job02 type: command config: command: sleep 10 - name: job03 type: command config: command: sleep 10 - name: job04 type: command config: command: sleep 10 - name: job05 type: command config: command: sleep 10 - name: job06 type: command config: command: sleep 10
กำหนดจำนวน thread ที่ flow.num.job.threads


การสั่งให้ job รันมากกว่า 1 คำสั่ง
ถ้าใส่มากกว่า 1 คำสั่งเข้าไปตรงๆ จะ error เช่น
command: cd /home/jack/; ./run_some_job
ให้ปรับเป็นใส่คำสั่งเรียก shell script แทน เช่น
command: /home/jack/run_some_shell.sh
แล้วใส่คำสั่งใน run_some_shell.sh
แทน
cd /home/jack/ ./run_some_job