1. Descripción general de Azkaban
1. Duración de la tarea
En el escenario empresarial de los servicios de datos, un proceso empresarial muy común es que los archivos de registro se analizan mediante big data y luego los datos resultantes se envían a la empresa; en este proceso, habrá muchas tareas por realizar, y es Es difícil captar con precisión la hora de finalización de la ejecución de la tarea. Pero también espero que toda la cadena de tareas finalice lo antes posible para liberar recursos.
El orden aproximado de ejecución es el siguiente:
- Los archivos de registro comercial se sincronizan con el sistema de archivos HDFS;
- Ejecutar el proceso de análisis y cálculo a través de Hadoop;
- Los datos de resultados se almacenan en el almacén de datos importados;
- Por último, los datos del almacén de datos deben sincronizarse con la base de datos empresarial;
Este proceso no requiere la programación de tareas en la empresa, y el tiempo es básicamente predecible. Solo mantenga suficiente tiempo de intervalo de tareas. El enlace de tareas de big data generalmente necesita que uno termine e inicie el otro directamente, para reducir el costo de tiempo y primera entrada. En una empresa de servicios de datos, ha habido casos en los que se completó la ejecución de la tarea de sincronización pero no se generó el archivo de datos CSV individual final, lo que provocó que casi un millón de datos de análisis no pudieran sincronizar y actualizar la base de datos empresarial .
2. Introducción a Azkaban
Azkaban es un programador lanzado por Linkedin que puede administrar tareas de flujo de trabajo por lotes. Se utiliza para ejecutar un conjunto de trabajos y procesos en un orden específico dentro de un flujo de trabajo. Azkaban utiliza archivos de configuración de trabajos para establecer dependencias entre tareas y proporciona una interfaz de usuario web fácil de usar para mantener y realizar un seguimiento de su flujo de trabajo.
Características y ventajas de Azkaban
- Proporcionar una interfaz de usuario web clara y fácil de usar;
- Configuración de trabajo simple, tareas claras y dependencias de trabajo;
- Proporcionar componentes escalables;
- Basado en el desarrollo del lenguaje Java, fácil desarrollo secundario;
En comparación con el proceso de flujo de trabajo de configuración de Oozie, es escribir una gran cantidad de configuración XML, y su complejidad de código es relativamente alta, no es fácil para el desarrollo secundario, Azkaban es liviano, la función y el uso son relativamente simples y fáciles de usar.
Dos, instalación de servicio
1. Paquete básico
servicio web
azkaban-web-server-2.5.0.tar.gz
Servicio ejecutivo
azkaban-executor-server-2.5.0.tar.gz
Secuencia de comandos SQL
azkaban-sql-script-2.5.0.tar.gz
2. Ruta de instalación
Sube los tres paquetes de instalación anteriores y descomprímelos.
[root@hop01 azkaban]# pwd
/opt/azkaban
[root@hop01 azkaban]# tar -zxvf azkaban-web-server-2.5.0.tar.gz
[root@hop01 azkaban]# tar -zxvf azkaban-executor-server-2.5.0.tar.gz
[root@hop01 azkaban]# tar -zxvf azkaban-sql-script-2.5.0.tar.gz
[root@hop01 azkaban]# mv azkaban-web-2.5.0/ server
[root@hop01 azkaban]# mv azkaban-executor-2.5.0/ executor
3. Secuencia de comandos de importación de MySQL
[root@hop01 ~]# mysql -uroot -p123456
mysql> create database azkaban_test;
mysql> use azkaban_test;
mysql> source /opt/azkaban/azkaban-2.5.0/create-all-sql-2.5.0.sql
Ver tabla
4. Configuración SSL
[root@hop01 opt]# keytool -keystore keystore -alias jetty -genkey -keyalg RSA
Generar archivo:keystore
Copie en el directorio del servidor AzkabanWeb:
[root@hop01 opt]# mv keystore /opt/azkaban/server/
5. Configuración del servicio web
Configuracion basica
[root@hop01 conf]# pwd
/opt/azkaban/server/conf
[root@hop01 conf]# vim azkaban.properties
Modificaciones principales: MySQL y Jetty.
default.timezone.id=Asia/Shanghai
# Azkaban MySQL server properties.
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban_test
mysql.user=root
mysql.password=123456
mysql.numconnections=100
# Azkaban Jetty server properties.
jetty.maxThreads=25
jetty.ssl.port=8443
jetty.port=8081
jetty.keystore=keystore
jetty.password=123456
jetty.keypassword=123456
jetty.truststore=keystore
jetty.trustpassword=123456
La configuración aquí puede cumplir con los parámetros de configuración local.
Configuración de usuario
[root@hop01 conf]# vim azkaban-users.xml
Agregue un usuario administrador:
<azkaban-users>
<user username="admin" password="admin" roles="admin,metrics" />
</azkaban-users>
6. Configuración del servicio ejecutor
[root@hop01 conf]# pwd
/opt/azkaban/executor/conf
[root@hop01 conf]# vim azkaban.properties
Cambios principales: MySQL y zona horaria.
default.timezone.id=Asia/Shanghai
# Azkaban MySQL server properties.
database.type=mysql
mysql.port=3306
mysql.host=localhost
mysql.database=azkaban_test
mysql.user=root
mysql.password=123456
mysql.numconnections=100
7, inicie el servidor
servicio web
[root@hop01 bin]# pwd
/opt/azkaban/server/bin
[root@hop01 bin]# ll
total 16
-rwxr-xr-x 1 root root 161 Apr 21 2014 azkaban-web-shutdown.sh
-rwxr-xr-x 1 root root 1275 Apr 21 2014 azkaban-web-start.sh
Aquí están los scripts de inicio y apagado.
[root@hop01 bin]# /opt/azkaban/server/bin/azkaban-web-start.sh
Servicio de albacea
[root@hop01 bin]# /opt/azkaban/executor/bin/azkaban-executor-start.sh
Registro de inicio
Los registros clave de la línea final de los dos servicios:
Azkaban Server running on ssl port 8443.
Azkaban Executor Server started on port 12321
interfaz de inicio de sesión
Tenga en cuenta que esto se basa en el protocolo https:
https://hop01:8443/
Tres, caso de operación
1. Caso introductorio
Crear trabajo de tipo de comando
[root@hop01 flow_01]# pwd
/opt/azkaban/testJob/flow_01
[root@hop01 flow_01]# vim simple.job
type=command
command=echo 'mySimpleJob'
Paquete zip
[root@hop01 flow_01]# zip -q -r simpleJob.zip simple.job
Crear proyecto
Subir paquete de tareas
Realizar tareas
2. Ejecución de la secuencia de tareas
Crear tarea A
[root@hop01 flow_02]# vim simpleA.job
type=command
command=echo 'simplejobA'
Crear tarea B
[root@hop01 flow_02]# vim simpleB.job
type=command
dependencies=simpleA
command=echo 'simplejobB'
Tarea de empaque
[root@hop01 flow_02]# zip -q -r simpleTwoJob.zip simpleA.job simpleB.job
De la misma forma de operación, las dos tareas se colocan en un paquete zip, se cargan a través del servicio web y se puede observar el efecto de ejecución.
Cuarto, la dirección del código fuente
GitHub·地址
https://github.com/cicadasmile/big-data-parent
GitEE·地址
https://gitee.com/cicadasmile/big-data-parent
Leer la etiqueta
[ Java Foundation ] [ Patrón de diseño ] [ Estructura y algoritmo ] [ Sistema Linux ] [ Base de datos ]
[ Arquitectura distribuida ] [ microservicio ] [ componentes de big data ] [ SpringBoot Advanced ] [ Spring & Boot foundation ]
[ Análisis de datos ] [ Mapa técnico ] [ Lugar de trabajo ]