Instalación y despliegue de Oozie (con la versión CDH hadoop)

Uno: Introducción a
oozie : Oozie es una aplicación web Java que se ejecuta en un contenedor de servlets Java, a saber, Tomcat, y utiliza una base de datos para almacenar lo siguiente:
1. Definición del flujo de trabajo.
2. La instancia de flujo de trabajo que se está ejecutando actualmente, incluidos el estado y las variables de la instancia.
3. Oozie está integrado con otras partes del ecosistema de Hadoop y admite varios tipos de trabajos de Hadoop (map-reduce, Hive, Sqoop, etc.) y trabajos específicos del sistema (como programas Java y scripts de shell).

El flujo de trabajo de Oozie es un conjunto de acciones (por ejemplo, Hadoop Map / Reduce job) colocadas en el DAG (Gráfico acíclico directo) dependiente del control, que especifica el orden en el que se ejecutan las acciones. Usaremos hPDL (un lenguaje de definición de procesos XML) para describir este diagrama.

Dos: módulos funcionales y nodos de Oozie
1. Módulo

  1. El flujo de trabajo
    ejecuta los nodos del proceso secuencialmente, admite la bifurcación (bifurca varios nodos), une (combina varios nodos en uno)
  2. El coordinador
    activa el flujo de trabajo con regularidad
  3. Bundle Job
    une a varios coordinadores

2. Nodos comunes:

  1. Los nodos de flujo de control
    se definen generalmente al principio o al final del flujo de trabajo, como inicio, finalización, finalización, etc. Y proporcione el mecanismo de ruta de ejecución del flujo de trabajo, como decisión, bifurcación, unión, etc.
1. 流程控制节点(action)  
2. <start />——定义workflow的开始  
3. <end />——定义workflow的结束  
4. <decision />——实现switch功能<switch><case /><default /></switch>标签连用  
5. <sub-workflow>——调用子workflow  
6. <kill />——程序出错后跳转到这个节点执行相关操作  
7. <fork />——并发执行workflow  
8. <join />——并发执行结束(与fork一起使用) 
  1. Los
    nodos de acción son nodos responsables de realizar acciones específicas, como copiar archivos, ejecutar un script de shell, etc.
Dado que Oozie necesita tener una buena compatibilidad con otros marcos, para la conveniencia del seguimiento, estamos aquí para implementar una versión CDH de hadoop en el caso de la versión original de Apache de hadoop.

Tres: Implementación simple de la versión CDH de hadoop:
(Nota: el contenido de esta sección está construido bajo el hadoop nativo de Apache que construí la última vez, porque instalé todo lo similar a jdk en la última compilación, https: / /blog.csdn .net / weixin_44080445 / article / details / 106009359 , y luego transferido a este blog sobre la versión de Apache de hadoop en el blog anterior)

1. Cree un nuevo directorio cdh en / opt / module arriba de hadoop102

2. Extraiga la versión CDH de hadoop en / opt / software en / opt / module / cdh
[root @ hadoop102 software] # tar -zxvf hadoop-2.5.0-cdh5.3.6.tar.gz -C / opt / module / cdh /
Luego descomprimimos Oozie en / opt / module en este paso
[root @ hadoop102 software] # tar -zxvf oozie-4.0.0-cdh5.3.6.tar.gz -C / opt / module /

3. Configure hadoop-env.sh, mapred-env.sh, yarn-env.sh, core-site.xml en el directorio /opt/module/cdh/hadoop-2.5.0-cdh5.3.6/etc/hadoop hdfs -site.xml, mapred-site.xml.template, yarn-site.xml, esclaviza estos 8 archivos.

Primero echo $ JAVA_HOME para encontrar su propia ruta de instalación de jdk
[root @ hadoop102 hadoop] # echo $ JAVA_HOME
/opt/module/jdk1.8.0_144

1) La configuración de hadoop-env.sh, complete la ruta jdk real y reemplácela

Inserte la descripción de la imagen aquí

2) Configure mapred-env.sh, elimine el comentario al principio y luego complete la ruta jdk real

Inserte la descripción de la imagen aquí

3) Configure yarn-env.sh, elimine el comentario al principio y luego complete la ruta jdk real
Inserte la descripción de la imagen aquí

4)
Complete el siguiente contenido en core-site.xml.Tenga en cuenta que el nombre de host de Oozie Server y los grupos de usuarios que Oozie puede usar como proxy están configurados como usuarios raíz. Si es un usuario xxx, modifíquelo en consecuencia.

<!-- 指定HDFS中NameNode的地址 -->
<property>
<name>fs.defaultFS</name>
    <value>hdfs://hadoop102:8020</value>
</property>

<!-- 指定Hadoop运行时产生文件的存储目录 -->
<property>
	<name>hadoop.tmp.dir</name>
	<value>/opt/module/cdh/hadoop-2.5.0-cdh5.3.6/data/tmp</value>
</property>

<!-- Oozie Server的Hostname -->
<property>
	<name>hadoop.proxyuser.root.hosts</name>
	<value>*</value>
</property>

<!-- 允许被Oozie代理的用户组 -->
<property>
	<name>hadoop.proxyuser.root.groups</name>
 	<value>*</value>
</property>


5) hdfs-site.xml, agregue el siguiente contenido.

<!-- 指定HDFS副本的数量 -->
<property>
	<name>dfs.replication</name>
	<value>3</value>
</property>


<!-- 指定Hadoop辅助名称节点主机配置 -->
<property>
      <name>dfs.namenode.secondary.http-address</name>
      <value>hadoop104:50090</value>
</property>

6) mapred-site.xml.template, lo que debe tenerse en cuenta aquí es modificar el nombre del archivo primero, es decir, mv mapred-site.xml.template mapred-site.xml y luego agregar el siguiente contenido al expediente.

<!-- 指定MR运行在YARN上 -->
<property>
		<name>mapreduce.framework.name</name>
		<value>yarn</value>
</property>


<!-- 历史服务器端地址 -->
<property>
<name>mapreduce.jobhistory.address</name>
<value>hadoop102:10020</value>
</property>

<!-- 历史服务器web端地址 -->
<property>
    <name>mapreduce.jobhistory.webapp.address</name>
    <value>hadoop102:19888</value>
</property>

7) yarn-site.xml

<!-- Reducer获取数据的方式 -->
<property>
 		<name>yarn.nodemanager.aux-services</name>
 		<value>mapreduce_shuffle</value>
</property>

<!-- 指定YARN的ResourceManager的地址 -->
<property>
<name>yarn.resourcemanager.hostname</name>
<value>hadoop103</value>
</property>

<!-- 日志聚集功能使能 -->
<property>
<name>yarn.log-aggregation-enable</name>
<value>true</value>
</property>

<!-- 日志保留时间设置7天 -->
<property>
<name>yarn.log-aggregation.retain-seconds</name>
<value>604800</value>
</property>

8) esclavos, tenga en cuenta que debe escribir de acuerdo con su propio nombre de host del clúster, mis tres nombres de host son hadoop102, hadoop103 y hadoop104

Inserte la descripción de la imagen aquí

4. Copie la información de configuración en las dos máquinas de hadoop103 y hadoop104. Tenga en cuenta que este paso debe copiarse en / opt / module / cdh

[root @ hadoop102 cdh] # scp -r / opt / module / cdh root @ hadoop103: / opt / module /
[root @ hadoop102 cdh] # scp -r / opt / module / cdh root @ hadoop104: / opt / module /

5. Después de copiar, vamos al directorio hadoop-2.5.0-cdh5.3.6 de hadoop102 para formatear el nodo de nombre

[root @ hadoop102 hadoop-2.5.0-cdh5.3.6] # bin / hdfs namenode -format

Puede ver que el hadoop en la versión cdh correspondiente se ha formateado correctamente

Inserte la descripción de la imagen aquí

6. Inicie la versión cdh de hadoop
[root @ hadoop102 hadoop-2.5.0-cdh5.3.6] # sbin / start-dfs.sh

Luego vaya a hadoop103 para iniciar yarn
[root @ hadoop103 hadoop-2.5.0-cdh5.3.6] # sbin / start-yarn.sh

Luego continúe iniciando el servidor de historial en hadoop102

[root @ hadoop102 hadoop-2.5.0-cdh5.3.6] # sbin / mr-jobhistory-daemon.sh iniciar historyserver

En este momento, podemos verificar los procesos de las tres máquinas
[root @ hadoop102 myscripts] # ​​./showjps.sh
=================== root @ hadoop102 === ====================
7904 JobHistoryServer
7953 Jps
7418 NameNode
7501 DataNode
7741 NodeManager
=============== ===== = root @ hadoop103 =======================
7410 NodeManager
7749 Jps
7224 DataNode
7323 ResourceManager
========== ===== ====== root @ hadoop104 ======================
7281 SecondaryNameNode
7206 DataNode
7355 NodeManager
7499 Jps
[root @ hadoop102 myscripts] #

Finalmente, revisemos el lado web para verificar la información correspondiente. Puede ver que la versión CDH de hadoop es azul, mientras que el lado web de la versión Apache de hadoop es cian. Aquí debemos enfocarnos en 8020, si no aparece El 8020 que configuramos anteriormente indica que hay un problema con la configuración.
Lo anterior es la versión CDH del proceso de instalación de hadoop.

Inserte la descripción de la imagen aquí

Cuatro: Instalación e implementación de Oozie Después de instalar
la versión CDH anterior de hadoop, podemos instalar Oozie directamente en este momento

1. Descomprime el paquete tar de Oozie. Este paso ya ha sido descomprimido en el proceso de descompresión anterior, por lo que no se describirá. Luego vamos al módulo descomprimido / opt / e ingresamos al directorio de Oozie para comenzar a descomprimir oozie-hadooplibs-4.0 .0- El paquete tar cdh5.3.6.tar.gz, porque el paquete descomprimido tiene el mismo nombre que el directorio actual oozie-4.0.0-cdh5.3.6, así que lo extraeremos al directorio superior

[root @ hadoop102 oozie-4.0.0-cdh5.3.6] #

tar -zxvf oozie-hadooplibs-4.0.0-cdh5.3.6.tar.gz -C     ../

Inserte la descripción de la imagen aquí

Después de descomprimir, encontrará un directorio hadooplibs adicional

Inserte la descripción de la imagen aquí

2. Cree un directorio de libext en el directorio de Oozie ( tenga en cuenta que el nombre del directorio no se puede cambiar, debe llamarse libext, porque el sitio web oficial enfatiza esto )

Inserte la descripción de la imagen aquí

3. Copie el paquete jar dependiente

1) De la información en el sitio web oficial, podemos ver que nos permite copiar todos los archivos jar en hadooplibs a libext, ingresar hadooplibs, y lo que queremos copiar es hadooplib-2.5.0-cdh5.3.6.oozie- 4.0.0- cdh5.3.6

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí
执行 [root @ hadoop102 oozie-4.0.0-cdh5.3.6] # cp hadooplibs / hadooplib-2.5.0-cdh5.3.6.oozie-4.0.0-cdh5.3.6 / * ./libext/

(Después de la ejecución, finalmente vaya a ll para ver si hay archivos correspondientes en el directorio libext)

2). Copie ext-2.2.zip en / opt / software a libext (tenga en cuenta que no es necesario descomprimir ext-2.2.zip y copiarlo directamente).

[root @ hadoop102 oozie-4.0.0-cdh5.3.6] # cp /opt/software/ext-2.2.zip ./libext/

3). Copie el controlador mysql en libext, porque los metadatos de oozie también se almacenan en mysql, aquí puede ajustarlo de acuerdo con la ubicación de su propio paquete de controladores mysql

[root @ hadoop102 oozie-4.0.0-cdh5.3.6] # cp /opt/software/mysql-libs/mysql-connector-java-5.1.27/mysql-connector-java-5.1.27-bin.jar ./ libext /

4. Modifique el archivo de configuración de oozie El archivo de configuración
aquí para modificar es el archivo oozie-site.xml en oozie-4.0.0-cdh5.3.6 / conf, debido a que el contenido de este archivo es muy grande, no es fácil para nosotros para reclutar de un vistazo el contenido correspondiente, por lo que usamos el comando set nu en vi.
Después de ingresar el archivo, presione la tecla Esc, y luego presione: Después de agregar set nu al final de :, presione Enter para ver el número de línea

1) El controlador de jdbc, alrededor de la línea 140, cambia el valor a com.mysql.jdbc.Driver, porque por defecto es la base de datos derby

Inserte la descripción de la imagen aquí

2) Modifique el valor de la línea 150 a jdbc: mysql: // hadoop102: 3306 / oozie. Este paso configura la dirección de la base de datos requerida por oozie. Tenga en cuenta que nuestro nombre de host es hadoop102. En este paso, cámbielo de acuerdo con su propio host nombre. un poco

Inserte la descripción de la imagen aquí

3) El valor de la línea 158 se cambia a root, porque mi mysql es el usuario root

Inserte la descripción de la imagen aquí

4) Complete la contraseña de mysql en la línea 166. Tenga en cuenta que hay un espacio en este valor. ¡Este espacio debe ser eliminado primero, de lo contrario se producirá un error!

Inserte la descripción de la imagen aquí

5) La línea 233 le dice a Oozie que se refiera al archivo de configuración de Hadoop, porque puede haber más de un conjunto de clústeres de hadoop en su Linux, y debe informar a oozie a qué conjunto de clústeres conectarse. Aquí dejo que oozie se conecte a nuestra versión CDH de hadoop.

Inserte la descripción de la imagen aquí

Otra cosa a tener en cuenta aquí es que hay un * = en el valor de la línea 233. No elimine esto , y luego complete la ruta de su versión CDH del archivo de configuración hadoop, como se muestra en la figura siguiente.

Inserte la descripción de la imagen aquí

Después de configurar el contenido anterior, presionamos la tecla Esc y luego presionamos: Ingrese set nonu y presione Enter after: para eliminar el número. En este momento, puede guardar el archivo y salir.

Cinco: inicializar oozie

1. Crea la base de datos Oozie en Mysql, mysql -uroot -p123456 entra en mysql, crea la base de
datos Oozie crea la base de datos Oozie;

2. Inicie la versión CDH de hadoop Se ha explicado el sexto punto de los tres anteriores: Versión CDH de la implementación simple de hadoop. No hay más descripción aquí.

3. Cargue el archivo yarn.tar.gz en el directorio de Oozie a HDFS. Tenga en cuenta que el archivo yarn.tar.gz se descomprimirá por sí mismo. Solo necesitamos ejecutar el comando, y oozie cargará y descomprimirá automáticamente el paquete tar .

[root @ hadoop102 oozie-4.0.0-cdh5.3.6] # bin / oozie-setup.sh sharelib create -fs hdfs: // hadoop102: 8020 -locallib oozie-sharelib-4.0.0-cdh5.3.6-yarn.tar .gz

Después de la ejecución, vayamos a la ruta / user / root / share / lib / lib_20200801123328 en HDFS para echar un vistazo

Inserte la descripción de la imagen aquí

Inserte la descripción de la imagen aquí

Aquí puede ver que el directorio lib_20200801123328 lleva el nombre de la hora, y hay muchos archivos en él, y el contenido que contiene no debe eliminarse en el futuro, de lo contrario, se informará un error al trabajar en el proyecto. También tenga en cuenta que el El comando anterior no se puede Ejecutar dos veces, porque se necesita un tiempo diferente para ejecutarse cada vez, y pasa a tener el nombre de la hora para formar un paquete de guerra.

4. Cree el archivo oozie.sql.
Antes de crear el archivo, podemos echar un vistazo a la base de datos de oozie en hadoop102. No hay nada en ella.

Inserte la descripción de la imagen aquí

Ejecute el siguiente contenido
[root @ hadoop102 oozie-4.0.0-cdh5.3.6] # bin / ooziedb.sh create -sqlfile oozie.sql -run

Puede ver que hay muchas tablas en la base de datos de oozie en este momento, porque quiere almacenar muchos datos en ella.

Inserte la descripción de la imagen aquí

5. Empaque el proyecto, genere el paquete de guerra, el siguiente contenido aparecerá después del final

Inserte la descripción de la imagen aquí

Seis: inicio y parada de oozie

Con respecto al inicio y la detención de oozie, no es necesario que revisemos los cinco anteriores: el contenido de inicialización de oozie cada vez que se realiza la operación . La inicialización anterior es solo la primera vez que necesita realizar la instalación de oozie.

Inicio:
[root @ hadoop102 oozie-4.0.0-cdh5.3.6] # bin / oozied.sh start

停止 :
[root @ hadoop102 oozie-4.0.0-cdh5.3.6] # bin / oozied.sh detener

Después del inicio, puede ver que hay un proceso Bootstrap adicional, este es el proceso de oozie

Inserte la descripción de la imagen aquí

Luego nos dirigimos al lado web para visitar oozie, aparece una interfaz indicando que la instalación ha sido exitosa.

Inserte la descripción de la imagen aquí

Posibles problemas aquí: Si la pantalla de la página no se muestra completamente, puede ser similar a lo siguiente. Puede deberse a un problema del navegador. Se recomienda cambiar al navegador Firefox o Google.

Inserte la descripción de la imagen aquí

Supongo que te gusta

Origin blog.csdn.net/weixin_44080445/article/details/107722690
Recomendado
Clasificación