Tutorial de Oozie: aprenda a programar sus trabajos de Hadoop



Tutorial de Apache Oozie: Oozie es un sistema de programación de flujo de trabajo para administrar trabajos de Hadoop. Es un sistema escalable, confiable y extensible.

Antes de comenzar este tutorial de Apache Oozie, comprendamos dónde se usa el sistema de programación. En escenarios de tiempo real, un trabajo depende de otros trabajos, como la salida de una tarea de MapReduce puede pasarse al trabajo de Hive para su posterior procesamiento. El siguiente escenario puede ser, programar un conjunto de tareas en función del tiempo, como diario, semanal, mensual o según la disponibilidad de datos. Apache Oozie le brinda el poder de manejar fácilmente este tipo de escenarios. Por eso Apache Oozie es una parte importante de .

En este blog tutorial de Apache Oozie, cubriremos:





  • Introducción a Apache Oozie
  • Flujo de trabajo de Oozie
  • Coordinadora de Oozie
  • Paquete Oozie
  • Trabajo de flujo de trabajo de conteo de palabras
  • Trabajo de coordinador de conteo de palabras basado en tiempo

Comenzaremos este tutorial de Oozie presentando Apache Oozie. Luego, avanzando, comprenderemos los tipos de trabajos que se pueden crear y ejecutar con Apache Oozie.

Tutorial de Apache Oozie: Introducción a Apache Oozie

Apache Oozie - Oozie Tutorial - EdurekaApache Oozie es un sistema de programación para administrar y ejecutar trabajos de Hadoop en un entorno distribuido. Podemos crear una canalización deseada combinando un tipo diferente de tareas. Puede ser su tarea Hive, Pig, Sqoop o MapReduce. Con Apache Oozie también puede programar sus trabajos. Dentro de una secuencia de la tarea, también se pueden programar dos o más trabajos para que se ejecuten en paralelo. Es un sistema escalable, confiable y extensible.



Oozie es una aplicación web Java de código abierto, que es responsable de activar las acciones del flujo de trabajo. A su vez, utiliza el motor de ejecución de Hadoop para ejecutar las tareas.

Apache Oozie detecta la finalización de tareas mediante devolución de llamada y sondeo. Cuando Oozie inicia una tarea, proporciona una URL HTTP de devolución de llamada única a la tarea y notifica a esa URL cuando se completa la tarea. Si la tarea no puede invocar la URL de devolución de llamada, Oozie puede sondear la tarea para su finalización.

Hay tres tipos de trabajos en Apache Oozie:



  • Trabajos de flujo de trabajo de Oozie & menos Estos son gráficos acíclicos dirigidos (DAG) que especifican una secuencia de acciones que se ejecutarán.
  • Empleos en Oozie Coordinator & menos Estos consisten en trabajos de flujo de trabajo activados por tiempo y disponibilidad de datos.
  • Paquetes de Oozie & menos Estos pueden denominarse un paquete de varios coordinadores y trabajos de flujo de trabajo.

Ahora, comprendamos todos estos trabajos uno por uno.

Tutorial de Apache Oozie: flujo de trabajo de Oozie

El flujo de trabajo es una secuencia de acciones organizadas en un gráfico acíclico directo (DAG). Las acciones dependen unas de otras, ya que la siguiente acción solo se puede ejecutar después de la salida de la acción actual. Una acción de flujo de trabajo puede ser una acción Pig, una acción Hive, una acción MapReduce, una acción Shell, una acción Java, etc. Puede haber árboles de decisión para decidir cómo y en qué condición debe ejecutarse un trabajo.

Podemos crear diferentes tipos de acciones en función del trabajo y cada tipo de acción puede tener su propio tipo de etiquetas.El flujo de trabajo y los scripts o archivos jar deben colocarse en la ruta HDFS antes de ejecutar el flujo de trabajo.

Mando: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -run

Para verificar el estado del trabajo, puede ir a la consola web de Oozie, es decir, http: // nombre_host: 11000 . Al hacer clic en el trabajo, verá el estado del trabajo.

En escenarios, donde queremos ejecutar varios trabajos en paralelo, podemos usar Tenedor . Siempre que usamos fork, tenemos que usar Join como un nodo final a fork. Para cada bifurcación debería haber una unión. Join asume que todos los nodos que se ejecutan en paralelo son hijos de una única bifurcación. Por ejemplo, podemos crear dos tablas al mismo tiempo en paralelo.

Si queremos ejecutar una acción en función del resultado de la decisión, podemos agregar etiquetas de decisión. Por ejemplo, si ya tenemos la tabla de colmena, no necesitaremos volver a crearla. En esa situación, podemos agregar una etiqueta de decisión para no ejecutar los pasos de creación de la tabla si la tabla ya existe. Los nodos de decisión tienen una etiqueta de interruptor similar a la caja del interruptor.

El valor de job-tracker, name-node, script y param se puede pasar directamente. Pero esto se vuelve difícil de manejar. Aquí es donde un archivo de configuración (es decir, un archivo .property) resulta útil.

Tutorial de Apache Oozie: Coordinador de Oozie

Puede programar flujos de trabajo complejos, así como flujos de trabajo que se programan regularmente con Coordinator. Oozie Coordinators activa los trabajos de los flujos de trabajo según el tiempo, los datos o los predicados de eventos. Los flujos de trabajo dentro del coordinador de trabajos comienzan cuando se cumple la condición dada.

Las definiciones requeridas para los trabajos de coordinador son:

  • comienzo & menos la fecha y hora de inicio del trabajo.
  • fin & menos la fecha y hora de finalización del trabajo.
  • zona horaria & menos la zona horaria de la aplicación del coordinador.
  • frecuencia & menos La frecuencia, en minutos, para ejecutar los trabajos.

Algunas propiedades más están disponibles para la información de control:

  • se acabó el tiempo & menos El tiempo máximo, en minutos, durante el cual una acción esperará para satisfacer las condiciones adicionales, antes de ser descartada. 0 indica que si no se satisfacen todos los eventos de entrada en el momento de la materialización de la acción, la acción debe expirar inmediatamente. -1 indica que no hay tiempo de espera, la acción esperará eternamente. El valor predeterminado es -1.
  • concurrencia & menos El número máximo de acciones para un trabajo que se puede ejecutar en paralelo. El valor predeterminado es 1.
  • ejecución - Especifica el orden de ejecución si varias instancias del trabajo del coordinador han satisfecho sus criterios de ejecución. Puede ser:
    • FIFO (predeterminado)
    • LIFO
    • LAST_ONLY

Mando: trabajo de oozie –oozie http: // localhost: 11000 / oozie -config -run

Si una propiedad de configuración utilizada en la definición no se proporciona con la configuración del trabajo al enviar el trabajo del coordinador, el envío del trabajo fallará.

Tutorial de Apache Oozie: Paquete Oozie

Sistema de paquete Ooziele permite definir y ejecutar un conjunto de aplicaciones de coordinador, a menudo llamado canalización de datos. En un paquete de Oozie, no hay dependencia explícita entre las aplicaciones del coordinador. Sin embargo, puede utilizar la dependencia de datos de las aplicaciones del coordinador para crear una canalización de aplicaciones de datos implícita.Puede iniciar / detener / suspender / reanudar / volver a ejecutar el paquete. Proporciona un mejor y más fácil control operativo.

Hora de inicio & menos La hora en la que un paquete debe comenzar y enviar solicitudes de coordinador.

Avanzando en este tutorial de Apache Oozie, entenderemos cómo crear un trabajo de flujo de trabajo.

Tutorial de Apache Oozie: Trabajo de flujo de trabajo de recuento de palabras

En este ejemplo, vamos a ejecutar un trabajo de conteo de palabras usando Apache Oozie. Aquí no discutiremos sobre cómo escribir un programa de conteo de palabras MapReduce. Entonces, antes de seguir este tutorial de Apache Oozie, debe descargar este tarro de recuento de palabras archivo. Ahora, cree un directorio WordCountTest donde colocaremos todos los archivos. Cree un directorio lib donde colocaremos el tarro de recuento de palabras como se muestra en las imágenes a continuación.

Ahora, sigamos adelante y creemos job.properties & workflow.xml archivos, donde especificaremos el trabajo y los parámetros asociados a él.

convertir objeto en matriz php

job.properties

Primero, estamos creando un job.properties archivo, donde estamos definiendo la ruta de NameNode & ResourceManager. La ruta de NameNode es necesaria para resolver la ruta del directorio de flujo de trabajo y la ruta de jobTracker ayudará a enviar el trabajo a YARN. Necesitamos proporcionar el camino de la workflow.xml archivo, que debe almacenarse en HDFS.

workflow.xml

A continuación, necesitamos crear el workflow.xml archivo, donde definiremos todas nuestras acciones y las ejecutaremos. Primero, necesitamos especificar el nombre de la aplicación de flujo de trabajo, es decir, WorkflowRunnerTest . Entonces, estamos especificando el nodo de inicio . El nodo de inicio ( en la empezar a etiqueta ) es el punto de entrada para un trabajo de flujo de trabajo. Apunta hacia el primer nodo de flujo de trabajo desde donde debería comenzar el trabajo. Como puede ver en la imagen de abajo, el siguiente nodo es intersección0 desde donde comenzará el trabajo.

A continuación, estamos especificando la tarea a realizar, en el nodo de acción. Estamos ejecutando una tarea de MapReduce WordCount aquí. Necesitamos especificar las configuraciones requeridas para ejecutar esta tarea MapReduce. Estamos definiendo el rastreador de trabajos y la dirección de NameNode.

El siguiente es el elemento preparado, que se utiliza exclusivamente para la limpieza del directorio, antes de ejecutar la acción. Aquí estamos realizando una operación de eliminación en HDFS para eliminar el out1 carpeta si ya está creada. Preparar etiqueta se utiliza para crear o eliminar una carpeta antes de ejecutar el trabajo. Luego, estamos especificando las propiedades de MapReduce como el nombre de la cola de trabajos, la clase de mapeador, la clase de reductor, la clase de clave de salida y la clase de valor de salida.

La última configuración de tareas de MapReduce es el directorio de entrada y salida en HDFS. El directorio de entrada es datos directorio, que se almacena en la ruta raíz de NameNode . Por último, especificaremos el elemento kill si el trabajo falla.

Ahora tenemos que mover el WordCountTest carpeta en HDFS, como hemos especificado en oozie.wf.application.path propiedad en job.properties archivo. Entonces, estamos copiando el WordCountTest carpeta en el directorio raíz de Hadoop.

Mando: hadoop fs -put WordCountTest /

cuándo usar esto. en java

Para verificar, puede ir a la interfaz de usuario web de NameNode y verificar si la carpeta se ha cargado en el directorio raíz de HDFS o no.

Ahora, estamos listos para avanzar y ejecutar el trabajo del flujo de trabajo.

Mando: oozie job –oozie http: // localhost: 11000 / oozie -config job.properties -run

Una vez que hayamos ejecutado nuestro trabajo, obtendremos la identificación del trabajo (es decir, 0000009-171219160449620-oozie-edur-W ) como se muestra en la imagen de arriba. Puede ir y verificar el trabajo que ha enviado en la interfaz de usuario web de Oozie, es decir, localhost: 11000 . Puede ver en la imagen de abajo, el trabajo que hemos enviado se enumera a continuación.

Si observa en la imagen de arriba, verá el ID del trabajo, el nombre del trabajo, el estado del trabajo, el usuario que envió el trabajo, la hora de creación, el inicio y la última modificación. Puede hacer clic en el trabajo para obtener más detalles como:

  • Información del trabajo

  • Definición de trabajo

  • Configuración del trabajo

Como el estado del trabajo es exitoso, debemos ir al directorio raíz de HDFS y verificar si el directorio de salida se ha creado o no.

Como puede ver que el oozieout El directorio se ha creado en HDFS, por lo que ahora veamos el archivo de salida que se ha creado.

Como hemos visto cómo crear un trabajo de flujo de trabajo de Oozie, ahora avanzaremos en este blog Tutorial de Apache Oozie y entenderemos cómo crear un trabajo de coordinador.

Tutorial de Apache Oozie: Trabajo de coordinador de conteo de palabras basado en el tiempo

En este ejemplo, crearemos un trabajo de coordinador de recuento de palabras basado en el tiempo que se ejecutará después de un intervalo de tiempo específico. Puede crear y programar un trabajo con Apache Oozie que debe ejecutarse diaria o periódicamente.

Avancemos rápidamente en este tutorial de Apache Oozie y creemos un trabajo de coordinador. Aquí crearemos tres archivos, es decir. coordinator.properties , coordinator.xml & workflow.xml archivo. Nuevamente aquí colocaremos la w ordcount tarro dentro del lib directorio como se muestra en la siguiente imagen.

Ahora veamos estos archivos individualmente. Primero, comenzaremos con el archivo coordinator.properties.

Aquí, estamos especificando la frecuencia con la que se ejecutará el flujo de trabajo. La frecuencia siempre se expresa en minutos. En nuestro caso, este trabajo de coordinador se ejecutará una vez cada hora entre el tiempo especificado. La frecuencia se utiliza para capturar los intervalos periódicos en los que se producen los conjuntos de datos y se programa la ejecución de las aplicaciones del coordinador.

Para definir la frecuencia en minutos, horas, días y meses, utilice el siguiente formato:

$ {coord: minutos (int n)} norte $ {coord: minutos (45)} -> 45
$ {coord: horas (int n)} n * 60 $ {coord: horas (3)} -> 180
$ {coord: días (int n)} variable $ {coord: days (2)} -> minutos en 2 días completos desde la fecha actual
$ {coord: meses (int n)} variable $ {coord: months (1)} -> minutos en un mes completo desde la fecha actual

A continuación, definimos la hora de inicio y finalización del trabajo como se muestra en la imagen de arriba. hora de inicio es la fecha y hora de inicio del trabajo y hora de finalización es la fecha y hora de finalización del trabajo.

A continuación, especificamos la URL de NameNode y ResourceManager, que se utilizará para hacer referencia al archivo workflow.xml en HDFS y enviar trabajos a YARN respectivamente. Por fin, estamos especificando la ruta workflow.xml, que almacenaremos en HDFS. También especificaremos la ruta de la aplicación donde se almacenarán todos los archivos y el directorio lib.

El segundo archivo es coordinator.xml donde usaremos todas las propiedades que hemos especificado en el coordinator.properties archivo. Ahora, primero, especificaremos las propiedades de la aplicación del coordinador, es decir, nombre, frecuencia y zona horaria. A continuación, especificaremos los flujos de trabajo uno por uno. Aquí, solo tenemos un flujo de trabajo. Entonces, dentro del elemento de acción crearemos un elemento de flujo de trabajo, donde especificaremos la ruta de la aplicación.

A continuación, avanzando tenemos que crear workflow.xml archivo donde especificaremos la tarea. Es similar al workflow.xml archivo, que hemos creado en el trabajo de flujo de trabajo.

Ahora de nuevo, moveremos este WordCountTest_TimedBased directorio a HDFS.

Mando : hadoop fs -put WordCountTest_TimeBased /

número de fibonacci c ++

Ahora, estamos listos para seguir adelante y ejecutar este trabajo de coordinador en este Tutorial de Oozie. Sigamos adelante y ejecútelo.

Mando : trabajo de oozie –oozie http: // localhost: 11000 / oozie -config coordinator.properties -run

Anote esta identificación de trabajo de coordinador (es decir, 0000010-171219160449620-oozie-edur-C). Le ayudará a localizar su trabajo en la interfaz de usuario web de Oozie.

Puede ver el trabajo enumerado en la pestaña Trabajos del coordinador en la interfaz de usuario web de Oozie. De manera similar al trabajo de flujo de trabajo, tenemos el nombre, estado, usuario, frecuencia, hora de inicio y finalización del trabajo. Cuando haga clic en un trabajo en particular, verá los detalles del trabajo, como se muestra en las imágenes a continuación.

  • Información de trabajo del coordinador

  • Definición de puesto de coordinador

  • Configuración del trabajo del coordinador

Ahora, como hemos visto en las diferentes pestañas. Regresaremos al directorio raíz de HDFS donde se creará la carpeta de salida. Como puede ver en la imagen de abajo, oozieTimeBasedout Se ha creado el directorio, como especificamos en workflow.xml archivo.

Ahora, echemos un vistazo al archivo de salida que se ha creado.

Espero que haya encontrado informativo este blog del tutorial de Apache Oozie. Si está interesado en obtener más información, puede consultar este que le informa sobre Big Data y cómo Hadoop está resolviendo desafíos relacionados con Big Data.

Ahora que ha entendido Apache Oozie, consulte el por Edureka, una empresa de aprendizaje en línea de confianza con una red de más de 250.000 alumnos satisfechos repartidos por todo el mundo. El curso de formación de certificación de Edureka Big Data Hadoop ayuda a los alumnos a convertirse en expertos en HDFS, Yarn, MapReduce, Pig, Hive, HBase, Oozie, Flume y Sqoop utilizando casos de uso en tiempo real en el dominio de Retail, Social Media, Aviación, Turismo, Finanzas.

Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios y nos pondremos en contacto con usted.