Comenzando con Oozie

Instalación o configuración

Requisitos previos

Este artículo demostró la instalación de oozie-4.3.0 en Hadoop 2.7.3

1.Java 1.7+ 2. Hadoop 2.x (aquí, 2.7.3) 3. Maven3+ 4. Caja Unix

Paso 1: Archivo de distribución

Obtenga el archivo oozie tar.gz de http://www-eu.apache.org/dist/oozie/4.3.0/ y extráigalo

cd $HOME
tar -xvf oozie-4.3.0.tar.gz

Paso 2: Construye a Oozie

cd $HOME/oozie-4.3.0/bin
./mkdistro.sh -DskipTests

Paso 3: Instalación del servidor

Copie los binarios creados en el directorio de inicio como ‘oozie’

cd $HOME
cp -R $HOME/oozie-4.3.0/distro/target/oozie-4.3.0-distro/oozie-4.3.0 .

Paso 3.1: libext Crear directorio libext dentro del directorio oozie

 cd $HOME/oozie
 mkdir libext

Nota: Biblioteca ExtJS (2.2+) (opcional, para habilitar la consola web de Oozie) Pero, la biblioteca ExtJS no se incluye con Oozie porque usa una licencia diferente :( Ahora debe colocar los frascos de Hadoop dentro del directorio libext, de lo contrario arrojará el siguiente error en el archivo oozie.log

ADVERTENCIA ActionStartXCommand: 523 - SERVIDOR [data01.teg.io] USUARIO [hadoop] GRUPO[-] TOKEN[] APLICACIÓN[map-reduce-wf] TRABAJO[0000000-161215143751620-oozie-hado-W] ACCIÓN[[email protected]] Error al iniciar acción [mr-nodo]. Tipo de error [TRANSIENT], Código de error [JA009], Mensaje [JA009: No se puede inicializar el Clúster. Por favor, compruebe su configuración para mapreduce.framework.name y las direcciones de servidor correspondientes.]

Entonces, pongamos debajo de los frascos dentro del directorio libext

cp $HADOOP_HOME/share/hadoop/common/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/common/lib/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/hdfs/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/hdfs/lib/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/mapreduce/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/mapreduce/lib/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/yarn/*.jar oozie/libext/
cp $HADOOP_HOME/share/hadoop/yarn/lib/*.jar oozie/libext/

Paso 3.2: Suplantar a Oozie Para evitar el error de suplantación en oozie, modifique core-site.xml como se muestra a continuación

<!-- OOZIE -->
  <property>
    <name>hadoop.proxyuser.[OOZIE_SERVER_USER].hosts</name>
    <value>[OOZIE_SERVER_HOSTNAME]</value>
  </property>
  <property>
    <name>hadoop.proxyuser.[OOZIE_SERVER_USER].groups</name>
    <value>[USER_GROUPS_THAT_ALLOW_IMPERSONATION]</value>
  </property>

Suponiendo que mi usuario oozie es huser y el host es localhost y el grupo es hadoop

<!-- OOZIE -->
  <property>
    <name>hadoop.proxyuser.huser.hosts</name>
    <value>localhost</value>
  </property>
  <property>
    <name>hadoop.proxyuser.huser.groups</name>
    <value>hadoop</value>
  </property>

Nota: puede usar * en todos los valores, en caso de confusión

Paso 3.3: Preparar la guerra

cd $HOME/oozie/bin
./oozie-setup.sh prepare-war

Esto creará el archivo oozie.war dentro del directorio oozie. Si esta guerra se utilizará más, es posible que se encuentre con este error:

ERROR ActionStartXCommand:517 - SERVIDOR[data01.teg.io] USUARIO[hadoop] GRUPO[-] TOKEN[] APLICACIÓN[map-reduce-wf] TRABAJO[0000000-161220104605103-oozie-hado-W] ACCIÓN[[email protected]] Error, java.lang.NoSuchFieldError: HADOOP_CLASSPATH

¿Por qué? porque la compilación oozie produjo archivos jar de Hadoop 2.6.0 incluso cuando se especificaba Hadoop 2.7.3 con la opción “-Dhadoop.version=2.7.3”.

Entonces, para evitar este error, copie el archivo oozie.war en un directorio diferente

mkdir $HOME/oozie_war_dir
cp $HOME/oozie/oozie.war $HOME/oozie_war_dir
cd $HOME/oozie_war_dir
jar -xvf oozie.war
rm -f oozie.war/WEB-INF/lib/hadoop-*.jar
rm -f oozie.war/WEB-INF/lib/hive-*.jar
rm oozie.war
jar -cvf oozie.war ./*
cp oozie.war $HOME/oozie/

Luego, regenere los binarios oozie.war para oozie con un comando prepare-war

cd $HOME/oozie/bin
./oozie-setup.sh prepare-war

Paso 3.4: Crear sharelib en HDFS

cd $HOME/oozie/bin
./oozie-setup.sh sharelib create -fs hdfs://localhost:9000

Ahora, esta configuración de sharelib puede darte el siguiente error:

org.apache.oozie.service.ServiceException: E0104: no se pudo completar inicializar servicio [org.apache.oozie.service.ShareLibService], No capaz de almacenar en caché sharelib. Un administrador necesita instalar sharelib con oozie-setup.sh y emita el comando CLI ‘oozie admin’ para actualizar el compartirlib

Para evitar esto, modifique oozie-site.xml como se muestra a continuación

cd $HOME/oozie
vi conf/oozie-site.xml

Agregar debajo de la propiedad

<property>
    <name>oozie.service.HadoopAccessorService.hadoop.configurations</name> 
    <value>*=/usr/local/hadoop/etc/hadoop/</value>
</property>

El valor debe ser su $HADOOP_HOME/etc/hadoop, donde están presentes todos los archivos de configuración de hadoop.

Paso 3.5: Crear Oozie DB

cd $HOME/oozie
./bin/ooziedb.sh create -sqlfile oozie.sql -run

Paso 3.6: Inicie Daemon

Para iniciar Oozie como demonio, use el siguiente comando:

./bin/oozied.sh start

Para detener

./bin/oozied.sh stop

verifique los registros en busca de errores, si los hay

cd $HOME/oozie/logs
tail -100f oozie.log

Utilice el siguiente comando para comprobar el estado de Oozie desde la línea de comandos:

$ ./bin/oozie admin -oozie http://localhost:11000/oozie -status
System mode: NORMAL

Paso 4: Instalación del cliente

$ cd
$ cp oozie/oozie-client-4.3.0.tar.gz .
$ tar -xvf oozie-client-4.3.0.tar.gz
$ mv oozie-client-3.3.2 oozie-client
$ cd bin

Agregue $HOME/oozie-client/bin a la variable PATH en el archivo .bashrc y reinicie su terminal o haga

source $HOME/.bashrc

Para obtener más detalles sobre la configuración, puede consultar esta URL https://oozie.apache.org/docs/4.3.0/DG_QuickStart.html

Ahora puede enviar trabajos de hadoop a oozie en su terminal.

Para ejecutar un ejemplo, puede seguir esta URL y configurar su primer ejemplo para ejecutar https://oozie.apache.org/docs/4.3.0/DG_Examples.html

Es posible que se encuentre con el siguiente error al ejecutar el ejemplo de reducción del mapa en la URL anterior

java.io.IOException: java.net.ConnectException: llamar desde localhost.localdomain/127.0.0.1 a 0.0.0.0:10020 falló en la conexión excepción: java.net.ConnectException: Conexión rechazada; Para más detalles ver: http://wiki.apache.org/hadoop/ConnectionRefused

Solución: Inicie mr-jobhistory-server.sh

cd $HADOOP_HOME/sbin
./mr-jobhistory-server.sh start historyserver

Otro punto a tener en cuenta sobre la modificación del archivo job.properties es:

nameNode=hdfs://localhost:9000
jobTracker=localhost:8032

en su caso, esto puede ser diferente, ya que estoy usando apache hadoop, puede estar usando cloudera/hdp/anything

To run spark job, I have tried running in local[*], yarn-client and
yarn-cluster as master, but succeeded in local[*] only