Componente de programación de datos: coordina la ejecución de tareas de series de tiempo basadas en Azkaban

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.

Componente de programación de datos: coordina la ejecución de tareas de series de tiempo basadas en Azkaban

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

Componente de programación de datos: coordina la ejecución de tareas de series de tiempo basadas en Azkaban

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>

Componente de programación de datos: coordina la ejecución de tareas de series de tiempo basadas en Azkaban

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/

Componente de programación de datos: coordina la ejecución de tareas de series de tiempo basadas en Azkaban

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

Componente de programación de datos: coordina la ejecución de tareas de series de tiempo basadas en Azkaban

Subir paquete de tareas

Componente de programación de datos: coordina la ejecución de tareas de series de tiempo basadas en Azkaban

Realizar tareas

Componente de programación de datos: coordina la ejecución de tareas de series de tiempo basadas en Azkaban

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

Componente de programación de datos: coordina la ejecución de tareas de series de tiempo basadas en Azkaban

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 ]

Componente de programación de datos: coordina la ejecución de tareas de series de tiempo basadas en Azkaban

Supongo que te gusta

Origin blog.51cto.com/14439672/2676904
Recomendado
Clasificación