Tabla de contenido
Sistema de programación de flujo de trabajo Azkaban
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
1 programación de comandos de shell
2 programación dependiente del trabajo
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
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.