3.4.3 Sistema de programación de flujo de trabajo de Azkaban, descripción general, instalación e implementación, uso (programación de shell, dependencia del trabajo, programación de HDFS, programación de MR, programación de script HIVE)

Tabla de contenido

Sistema de programación de flujo de trabajo Azkaban

Sección 1 Descripción general

1.1 Sistema de programación del flujo de trabajo

1.2 Implementación de la programación del flujo de trabajo

1.3 Conversación entre Azkaban y Oozie

Sección 2 Introducción a Azkaban

Sección 3 Instalación e implementación de Azkaban

3.1 Preparativos para la instalación de Azkaban

3.2 implementación en modo de servidor solo

3.3 Implementación en modo de ejecutor múltiple

Sección 4 Uso de Azkaban

1 programación de comandos de shell

2 programación dependiente del trabajo

3 programación de tareas HDFS

4 Programación de tareas MAPREDUCE

5 programación de tareas de guión de HIVE


 

Sistema de programación de flujo de trabajo Azkaban

Sección 1 Descripción general

1.1 Sistema de programación del flujo de trabajo

Un sistema completo de análisis de datos suele estar compuesto por una gran cantidad de unidades de tareas:

  • script de shell
  • programa java
  • programa mapreduce
  • guión de colmena, etc.

Existe una secuencia de tiempo y una relación de dependencia entre cada unidad de tarea Para poder organizar bien un plan de ejecución tan complejo, se necesita un sistema de programación de flujo de trabajo para programar la ejecución de la tarea.

Supongamos que tengo un requisito de este tipo, un determinado sistema empresarial produce datos brutos de 20G todos los días y los procesa todos los días. Los pasos de procesamiento son los siguientes:

  • Sincronice los datos originales con HDFS a través de Hadoop;
  • Los datos originales se convierten con la ayuda del marco informático MapReduce y los datos resultantes se almacenan en varias tablas de Hive en forma de tablas de partición;
  • Debe realizar el procesamiento JOIN en los datos de varias tablas en Hive para obtener una tabla de datos detallada de Hive;
  • Realizar varios análisis estadísticos sobre los datos detallados para obtener la información del informe de resultados;
  • Los datos de los resultados obtenidos del análisis estadístico deben sincronizarse con el sistema empresarial para la invocación empresarial.

 

1.2 Implementación de la programación del flujo de trabajo

Programación de tareas simple

  • Utilice crontab de linux directamente;

Programación de tareas complejas

  • Desarrolle plataformas de programación o utilice sistemas de programación de código abierto listos para usar, como Ooize, Azkaban, Airflow, etc.

 

1.3 Conversación entre Azkaban y Oozie

Compara y analiza los dos programadores más populares del mercado. En general, Ooize es un sistema de programación de tareas pesado en comparación con Azkaban, con funciones completas pero una configuración y uso más complicados (xml). Si no le importa la falta de ciertas funciones, el programador ligero Azkaban es un buen candidato.

Caracteristicas

  • Ambos pueden programar mapreduce, pig, java, scripts como tareas de transmisión
  • Ambos pueden realizar tareas de flujo de trabajo con regularidad

Definición de flujo de trabajo

  • Azkaban usa el archivo de propiedades para definir el flujo de trabajo
  • Oozie usa archivos XML para definir el flujo de trabajo

Como una referencia

  • Azkaban admite el paso directo de parámetros, como $ {input}
  • Oozie admite parámetros y expresiones EL, como $ {fs: dirSize (myInputDir)}

Ejecución cronometrada

  • Las tareas programadas de Azkaban se basan en el tiempo
  • Las tareas programadas de Oozie se basan en el tiempo y los datos de entrada

Administracion de recursos

  • Azkaban tiene un estricto control de permisos, como las operaciones de lectura / escritura / ejecución del usuario en el flujo de trabajo
  • Oozie temporalmente no tiene un control estricto de permisos

Ejecución del flujo de trabajo

  • Azkaban tiene dos modos de operación, a saber, modo de servidor solo (el servidor ejecutor y el servidor web se implementan en el mismo nodo) y el modo de múltiples servidores (el servidor ejecutor y el servidor web se pueden implementar en diferentes nodos)
  • Oozie funciona como un servidor de transmisión de trabajo, que admite transmisión de múltiples usuarios y trabajos

 

Sección 2 Introducción a Azkaban

Azkaban es un programador de tareas de flujo de trabajo por lotes lanzado por LinkedIn (LinkedIn), que se utiliza para ejecutar un conjunto de tareas y procesos en un orden específico dentro de un flujo de trabajo. Azkaban utiliza archivos de configuración de trabajos para crear 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.

Azkaban define un formato de archivo KV (propiedades) para crear dependencias entre tareas y proporciona una interfaz de usuario web fácil de usar para mantener y rastrear su flujo de trabajo.

Tiene las siguientes características

  • Interfaz de usuario web
  • Luego cargue el flujo de trabajo
  • Fácil de establecer la relación entre tareas.
  • Programación del flujo de trabajo

Arquitectura

servidor mysql: almacena metadatos, como nombre del proyecto, descripción del proyecto, permisos del proyecto, estado de la tarea, reglas de SLA, etc.

AzkabanWebServer: proporciona servicios web externos, lo que permite a los usuarios administrar a través de la página web. Las responsabilidades incluyen la gestión de proyectos, la autorización de autoridades, la programación de tareas y el seguimiento de los ejecutores.

AzkabanExecutorServer: Responsable del envío y ejecución de flujos de trabajo específicos.

 

Sección 3 Instalación e implementación de Azkaban

3.1 Preparativos para la instalación de Azkaban

1 Compilar
Esta opción es usar la versión azkaban3.51.0 para recompilar, y una vez completada la compilación, obtendremos el paquete de instalación que necesitamos para la instalación

cd / opt / lagou / software /

wget https://github.com/azkaban/azkaban/archive/3.51.0.tar.gz

tar -zxvf 3.51.0.tar.gz -C ../servers/

cd /opt/lagou/servers/azkaban-3.51.0/

yum -y instalar git

yum -y instalar gcc-c ++

./gradlew build installDist -x prueba

Gradle es una herramienta de creación de proyectos automatizada basada en Apache Ant y Apache Maven. -x prueba Omite la prueba. (Tenga en cuenta que la descarga del jar en línea puede fallar y ralentizarse)

2 Cargue el archivo de instalación compilado

Cree un directorio en el nodo linux122

mkdir / opt / lagou / servers / azkaban

 

3.2 implementación en modo de servidor solo

1 Instalación en modo de servicio único

1 descomprimir

El servidor solo de azkaban usa un modo de nodo único para iniciar el servicio. Solo necesita un paquete de instalación de azkaban-soloserver-0.1.0-SNAPSHOT.tar.gz para comenzar, y toda la información de los datos se almacena en los datos predeterminados. de azkaban, H2,

tar -zxvf azkaban-solo-server-0.1.0-SNAPSHOT.tar.gz -C ../../servers/azkaban

2 Modifique el archivo de configuración

Modificar el archivo de configuración de la zona horaria

cd /opt/lagou/servers/azkaban/azkaban-solo-server-0.1.0-SNAPSHOT/conf

vim azkaban.properties

default.timezone.id = Asia / Shanghai

Modifique el archivo de configuración commonprivate.properties

cd /opt/lagou/servers/azkaban-solo-server-0.1.0-SNAPSHOT/plugins/jobtypes

vim commonprivate.properties

execute.as.user = false
memCheck.enabled = false

azkaban requiere 3G de memoria de forma predeterminada, y si la memoria restante es insuficiente, se informará una excepción.

3 Inicie solo-server

cd /opt/lagou/servers/azkaban-solo-server-0.1.0-SNAPSHOT

bin / start-solo.sh

4 Acceso a la página del navegador

Acceso a la página del navegador

http: // linux122: 8081 / index

Información Entrar

Nombre de usuario: azkaban
Contraseña: azkaban

 

2 Uso en modo de servicio único

Requisitos: use azkaban para programar nuestros scripts de shell y ejecutar comandos de shell de linux

Pasos específicos para
desarrollar un archivo de trabajo
Cree un archivo de texto normal foo.job, el contenido del archivo es el siguiente

tipo = comando
comando = echo 'hola mundo'

Código Postal

Sube el paquete comprimido a Azkaban

Crear proyecto

Especifique el nombre del proyecto y la información de descripción

Azkaban carga nuestro paquete comprimido

Ver el plan de flujo de trabajo y ejecutar

Página de resultados de la operación

Detener el programa

bin / shutdown-solo.sh

 

3.3 Implementación en modo de ejecutor múltiple

1 Instale el software necesario

Paquete de instalación del servicio web Azkaban
azkaban-web-server-0.1.0-SNAPSHOT.tar.gz

Paquete de instalación del servicio de ejecución de Azkaban
azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz

secuencia de comandos sql

Planificación de nodos

 

2 Preparación de la base de datos

linux123

Ingrese al cliente mysql y ejecute el siguiente comando

mysql -uroot -p

Ejecute el siguiente comando:

SET GLOBAL validate_password_length=5;

SET GLOBAL validate_password_policy=0;

CREATE USER 'azkaban'@'%' IDENTIFIED BY 'azkaban'; 

GRANT all privileges ON azkaban.* to 'azkaban'@'%' identified by 'azkaban' WITH GRANT OPTION;

CREATE DATABASE azkaban;

use azkaban;

[software root @ linux123] mkdir / opt / lagou / servers / azkaban

[software root @ linux122] # scp azkaban-db-0.1.0-SNAPSHOT.tar.gz linux123: / opt / lagou / servers / azkaban /

# Descomprime el script de la base de datos

tar -zxvf azkaban-db-0.1.0-SNAPSHOT.tar.gz -C / opt / lagou / servers / azkaban

 

#Inicialización de carga sql create table

mysql> fuente /opt/lagou/servers/azkaban/azkaban-db-0.1.0-SNAPSHOT/create-all-sql-0.1.0-SNAPSHOT.sql;

3 Configurar Azkaban-web-server

Ingrese el nodo linux122

Descomprima azkaban-web-server

[software root @ linux122] # tar -zxvf azkaban-web-server-0.1.0-SNAPSHOT.tar.gz -C / opt / lagou / servers / azkaban

Vaya al directorio raíz de azkaban-web-server

[software root @ linux122] # cd /opt/lagou/servers/azkaban/azkaban-web-server-0.1.0-SNAPSHOT

# ⽣ 成 ssl 证书 :
[root @ linux122 azkaban-web-server-0.1.0-SNAPSHOT] # keytool -keystore keystore -alias jetty -genkey -keyalg RSA

 

# Contraseña directamente azkaban otra tecla enter omitir

Nota: Después de ejecutar este comando, se le pedirá que ingrese la contraseña y la información correspondiente para el almacén de claves actual. Recuerde la contraseña que ingresó (todas las contraseñas se ingresan en azkaban)

Modificar el archivo de configuración de azkaban-web-server

cd /opt/lagou/servers/azkaban/azkaban-web-server-0.1.0-SNAPSHOT/conf
vim 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

# Azkaban Jetty server properties. 开启使⽤ssl 并且知道端⼝
jetty.use.ssl=true
jetty.port=8443
jetty.maxThreads=25

# KeyStore for SSL ssl相关配置 注意密码和证书路径
jetty.keystore=keystore
jetty.password=azkaban
jetty.keypassword=azkaban
jetty.truststore=keystore
jetty.trustpassword=azkaban

# Azkaban mysql settings by default. Users should configure their own username and password.
database.type=mysql
mysql.port=3306
mysql.host=linux123
mysql.database=azkaban
mysql.user=root
mysql.password=12345678
mysql.numconnections=100

#Multiple Executor 设置为false
azkaban.use.multiple.executors=true
#azkaban.executorselector.filters=StaticRemainingFlowSize,MinimumFreeMemory,CpuStatus
azkaban.executorselector.comparator.NumberOfAssignedFlowComparator=1
azkaban.executorselector.comparator.Memory=1
azkaban.executorselector.comparator.LastDispatched=1
azkaban.executorselector.comparator.CpuUsage=1

Agregar atributos

mkdir -p complementos / tipos de trabajo

plugins de cd / jobtypes /
vim commonprivate.properties

azkaban.native.lib = falso
execute.as.user = falso
memCheck.enabled = falso

4 Configurar Azkaban-exec-server

nodo linux123, cargue el paquete de instalación exec en / opt / lagou / software

tar -zxvf azkaban-exec-server-0.1.0-SNAPSHOT.tar.gz –C / opt / lagou / servers / azkaban /

Modificar el archivo de configuración de azkaban-exec-server

cd /opt/lagou/servers/azkaban/azkaban-exec-server-0.1.0-SNAPSHOT/conf
vim 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

# Where the Azkaban web server is located
azkaban.webserver.url=https://linux122:8443

# Azkaban mysql settings by default. Users should configure their own usernameand password.
database.type=mysql
mysql.port=3306
mysql.host=linux123
mysql.database=azkaban
mysql.user=root
mysql.password=12345678
mysql.numconnections=100

# Azkaban Executor settings
executor.maxThreads=50
executor.port=12321
executor.flow.threads=30

Distribuir exec-server al nodo linux121

cd / opt / lagou / servidores

scp -r azkaban linux121: $ PWD

 

5 Inicie el servicio

Inicie el servidor exec primero

Reiniciar el servidor web

# linux121, 123 iniciar exec-server
bin / start-exec.sh

# linux122 iniciar el servidor web
bin / start-web.sh

Activar servidor ejecutivo

Una vez iniciado el servidor web, el proceso falla y desaparece.Puede consultar el registro de inicio correspondiente en el directorio raíz del paquete de instalación.

Necesita activar manualmente el ejecutor

cd /opt/lagou/servers/azkaban/azkaban-exec-server-0.1.0-SNAPSHOT

curl -G "linux121: $ (<./ejecutor.port) / ejecutor? action = activar" && echo

curl -G "linux123: $ (<./ puerto del ejecutor) / ejecutor? action = activar" && echo

Cada reinicio debe ejecutar lo anterior

Dirección de visita:
https: // linux122: 8443

 

Sección 4 Uso de Azkaban

1 programación de comandos de shell

Crear archivo de descripción del trabajo
vi command.job

tipo = comando
comando = echo 'hola'

Empaquete los archivos de recursos del trabajo en archivos zip

zip command.job

Cree un proyecto y cargue el paquete de compresión de trabajos a través de la plataforma de administración web de azkaban

⾸ Crear proyecto primero

Sube el paquete zip

Empiece a realizar el trabajo

 

2 programación dependiente del trabajo

Cree múltiples descripciones de puestos con dependencias

El primer trabajo: foo.job

tipo = comando
comando = echo 'foo'

El segundo trabajo: bar.job depende de foo.job

tipo =
dependencias del comando = comando foo
= echo 'bar'

Escriba todos los archivos de recursos del trabajo en un paquete zip

Cree un proceso en el campo de administración web de azkaban y cargue el paquete zip
Inicie el flujo de trabajo

 

3 programación de tareas HDFS

Crear archivo de descripción del trabajo
fs.job

tipo = comando
comando = / opt / lagou / servers / hadoop-2.9.2 / bin / hadoop fs -mkdir / azkaban

Empaquete los archivos de recursos del trabajo en archivos zip

Cree un proyecto y cargue el paquete de compresión de trabajos a través de la plataforma de administración web de azkaban

Empiece a realizar el trabajo

 

4 Programación de tareas MAPREDUCE

La tarea mr aún se puede ejecutar usando el tipo de comando de trabajo

Cree el archivo de descripción del trabajo y el paquete jar del programa mr (en el ejemplo, use el jar de ejemplo proporcionado por hadoop directamente)

mrwc.job

tipo = comando
comando = / opt / lagou / servers / hadoop-2.9.2 / bin / hadoop jar hadoop-mapreduce-examples-2.9.2.jar wordcount / wordcount / input / wordcount / azout

Escriba todos los archivos de recursos del trabajo en un paquete zip

Cree un proceso y cargue el paquete zip en el campo de administración web de azkaban

Iniciar trabajo

En caso de memoria insuficiente de la máquina virtual:

1. Aumente la memoria de la máquina.
2. Utilice el comando clear system cache para liberar temporalmente algo de memoria.

[root @ linux123 mapreduce] # echo 1> / proc / sys / vm / drop_caches
[root @ linux123 mapreduce] # echo 2> / proc / sys / vm / drop_caches
[root @ linux123 mapreduce] # echo 3> / proc / sys / vm / drop_caches

 

5 programación de tareas de guión de HIVE

Crear archivo de descripción de trabajo y script de
Hive Script de Hive: test.sql

use default;

drop table aztest;

create table aztest(id int,name string) 
row format delimited fields terminatedby ',';

Archivo de descripción del puesto: hivef.job
hivef.job

tipo = comando
comando = / opt / lagou / servers / hive-2.3.7 / bin / hive -f 'test.sql'

Escriba todos los archivos de recursos del trabajo en un paquete zip para crear un proceso y cargue el paquete zip para iniciar el trabajo

 

6 Programación de tareas de tiempo

Además de la ejecución manual de las tareas del flujo de trabajo, azkaban también admite la configuración de la programación de tareas cronometradas. El método de apertura es el siguiente:

Seleccione el proyecto que se va a procesar y
seleccione la programación a la izquierda para configurar la información de programación de tiempos, y seleccione ejecutar a la derecha para ejecutar la tarea del flujo de trabajo inmediatamente.

Supongo que te gusta

Origin blog.csdn.net/chengh1993/article/details/112390515
Recomendado
Clasificación