Azkaban — это планировщик задач пакетного рабочего процесса с открытым исходным кодом от Linkedin. Используется для запуска набора заданий и процессов в определенном порядке в рамках рабочего процесса. Azkaban определяет формат файла KV для установления зависимостей между задачами и предоставляет простой в использовании веб-интерфейс пользователя для поддержки и отслеживания вашего рабочего процесса.
1. Установка
Готов к работе
azkaban-web-server-2.5.0.tar.gz
azkaban-executor-server-2.5.0.tar.gz
azkaban-sql-script-2.5.0.tar.gz
в,azkaban-web-server-2.5.0.tar.gz
Это сервер,azkaban-executor-server-2.5.0.tar.gz
сервер исполнения,azkaban-sql-script-2.5.0.tar.gz
- это исполняемый sql-скрипт.
2. mysql создать таблицу
Разархивируйте и установите их отдельно. Нам также нужно создать базу данных в mysql, а затем запустить сценарий sql, предоставленный azkaban, для создания таблиц, необходимых для azkaban.
mysql -uroot -p
mysql> create database azkaban;
mysql> use azkaban;
Database changed
mysql> source /home/fantj/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql;
mysql> show tables;
+------------------------+
| Tables_in_azkaban |
+------------------------+
| active_executing_flows |
| active_sla |
| execution_flows |
| execution_jobs |
| execution_logs |
| project_events |
| project_files |
| project_flows |
| project_permissions |
| project_properties |
| project_versions |
| projects |
| properties |
| schedules |
| triggers |
+------------------------+
15 rows in set (0.00 sec)
3. Создайте конфигурацию SSL
1. Выполните командуkeytool -keystore keystore -alias jetty -genkey -keyalg RSA
создаст файл в текущем каталогеkeystore
Файл сертификата, конечно же, эта команда требуется для заполнения некоторой информации, такой как ваше имя + рабочая единица. Следуйте инструкциям.
2. Затем скопируйте хранилище ключей в каталог bin веб-сервера azkaban.
4. Настройте часовой пояс
[root@s166 azkaban]# tzselect
Please identify a location so that time zone rules can be set correctly.
Please select a continent or ocean.
1) Africa
2) Americas
3) Antarctica
4) Arctic Ocean
5) Asia
6) Atlantic Ocean
7) Australia
8) Europe
9) Indian Ocean
10) Pacific Ocean
11) none - I want to specify the time zone using the Posix TZ format.
#? 5
Please select a country.
1) Afghanistan 18) Israel 35) Palestine
2) Armenia 19) Japan 36) Philippines
3) Azerbaijan 20) Jordan 37) Qatar
4) Bahrain 21) Kazakhstan 38) Russia
5) Bangladesh 22) Korea (North) 39) Saudi Arabia
6) Bhutan 23) Korea (South) 40) Singapore
7) Brunei 24) Kuwait 41) Sri Lanka
8) Cambodia 25) Kyrgyzstan 42) Syria
9) China 26) Laos 43) Taiwan
10) Cyprus 27) Lebanon 44) Tajikistan
11) East Timor 28) Macau 45) Thailand
12) Georgia 29) Malaysia 46) Turkmenistan
13) Hong Kong 30) Mongolia 47) United Arab Emirates
14) India 31) Myanmar (Burma) 48) Uzbekistan
15) Indonesia 32) Nepal 49) Vietnam
16) Iran 33) Oman 50) Yemen
17) Iraq 34) Pakistan
#? 9
Please select one of the following time zone regions.
1) Beijing Time
2) Xinjiang Time
#? 1
The following information has been given:
China
Beijing Time
Therefore TZ='Asia/Shanghai' will be used.
Local time is now: Sat Jul 28 18:29:58 CST 2018.
Universal Time is now: Sat Jul 28 10:29:58 UTC 2018.
Is the above information OK?
1) Yes
2) No
#? 1
You can make this change permanent for yourself by appending the line
TZ='Asia/Shanghai'; export TZ
to the file '.profile' in your home directory; then log out and log in again.
Here is that TZ value again, this time on standard output so that you
can use the /usr/bin/tzselect command in shell scripts:
Asia/Shanghai
Эту конфигурацию необходимо установить для каждого хоста в кластере, поскольку планирование задач неотделимо от точного времени. Мы также можем напрямую копировать связанные файлы на другие хосты для перезаписи.
cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime
[root@s166 azkaban]# scp /usr/share/zoneinfo/Asia/Shanghai root@s168:/etc/localtime
Shanghai 100% 388 500.8KB/s 00:00
[root@s166 azkaban]# scp /usr/share/zoneinfo/Asia/Shanghai root@s169:/etc/localtime
Shanghai
5. Измените конфигурацию
5.1 Изменить конфигурацию сервера
5.1.1 /webserver/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=Asia/Shanghai
#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=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=root
mysql.password=root
mysql.numconnections=100
# Velocity dev mode
velocity.dev.mode=false
# Azkaban Jetty server properties.
jetty.maxThreads=25
jetty.ssl.port=8443
jetty.port=8081
jetty.keystore=keystore
jetty.password=jiaoroot
jetty.keypassword=jiaoroot
jetty.truststore=keystore
jetty.trustpassword=jiaoroot
# Azkaban Executor settings
executor.port=12321
# mail settings
mail.sender=844072586@qq.com
mail.host=smtp.qq.com
job.failure.email=
job.success.email=
lockdown.create.projects=false
cache.directory=cache
В основном измените часовой пояс + конфигурацию mysql + пароль SSL и путь к файлу + конфигурацию почтового ящика. Не оставляйте комментарии, вы можете понять с первого взгляда.
5.1.2 Модификация/conf/
в каталогеazkaban-users.xml
<azkaban-users>
<user username="azkaban" password="azkaban" roles="admin" groups="azkaban" />
<user username="metrics" password="metrics" roles="metrics"/>
<user username="admin" password="admin" roles="admin">
<role name="admin" permissions="ADMIN" />
<role name="metrics" permissions="METRICS"/>
</azkaban-users>
5.2 Выполните настройку сервера
Исправлять/executor/conf
в каталогеazkaban.properties
#Azkaban
default.timezone.id=Asia/Shanghai
# Azkaban JobTypes Plugins
azkaban.jobtype.plugin.dir=plugins/jobtypes
#Loader for projects
executor.global.properties=conf/global.properties
azkaban.project.dir=projects
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban
mysql.user=root
mysql.password=root
mysql.numconnections=100
# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30
6. Выполнить
6.1 Запустите веб-сервер
существуетwebserver/bin
каталог, выполнить[root@s166 webserver]# nohup bin/azkaban-web-start.sh 1>/tmp/azstd.out 2>/tmp/azerr.out &
Запустите службу.
Совет: не забудьте сначала использовать nohup для выполнения, иначе отчет об ошибке не сможет дать своевременную обратную связь.Попробуйте выполнить его с помощью nohup после попытки выполнить его.[root@s166 executor]# bin/azkaban-executor-start.sh
Некоторые из ошибок, которые я, вероятно, видел:
- Нет файла хранилища ключей в каталоге /bin/ ------ нужно скопировать в bin
- ----- Не могу найти множество конфигурационных файлов, чтобы настроить к этим файлам абсолютный путь в конфигурационном файле.
6.2 Запустите исполняющий сервер
существует/executor/bin/
Выполнить в каталоге[root@s166 webserver]# bin/azkaban-web-start.sh
6.3 Доступ через браузерhttps://s166:8443/
Если вы видите такой экран, это доказывает, что вы ошибаетесь.Вместо того, чтобы выполнять его в корневом каталоге, он обычно выполняет файл запуска в каталоге bin, поэтому многие из его CSS не могут быть загружены.
Войдите в систему с установленным паролем учетной записи.
7. Азкабан в действии
7.1 Пример отдельного задания
- Создать файл описания вакансии
vim command.job
#command.job
type=command
command=echo fantj666
-
Упакуйте файлы ресурсов задания в zip-файлы zip command.job
-
Создайте проект через веб-платформу управления azkaban и загрузите сжатый пакет задания. Сначала создайте проект
7.2 Рабочий процесс с несколькими заданиями
- Создание нескольких описаний вакансий с зависимостями Первая работа: foo.job
# foo.job
type=command
command=echo foo
Вторая работа: BAR.JOB зависит от Foo.job
# bar.job
type=command
dependencies=foo
command=echo bar
- Поместите все файлы ресурсов задания в zip-архив.
- Загрузите zip-пакет и начните
- Просмотр журнала заданий
7.3 Работа с хаупом
vim fs.job
# fs.job
type=command
command=/home/fantj/hadoop/bin/hadoop fs -lsr /
- Упаковано в виде zip-файла
- Запустите задание и просмотрите лоб
7.4 Рабочий улей
скрипт ульяtest.sql
use default;
drop table aztest;
create table aztest(id int,name string,age int) row format delimited fields terminated by ',' ;
load data inpath '/aztest/hiveinput' into table aztest;
create table azres as select * from aztest;
insert overwrite directory '/aztest/hiveoutput' select count(1) from aztest;
файл заданияhivef.job
# hivef.job
type=command
command=/home/fantj/hive/bin/hive -f 'test.sql'
zip пакет - загрузить - выполнить - проверить журнал