Conversión de Apache Oozie a AWS Step Functions con AWS Schema Conversion Tool - AWS Schema Conversion Tool

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

Conversión de Apache Oozie a AWS Step Functions con AWS Schema Conversion Tool

Para convertir los flujos de trabajo de Apache Oozie, utilice la versión 1.0.671 o posterior de AWS SCT. Además, familiarícese con la interfaz de la línea de comandos (CLI) de AWS SCT. Para obtener más información, consulte AWS SCT Referencia CLI.

Descripción general de la conversión

El código fuente de Apache Oozie incluye nodos de acción, nodos de flujo de control y propiedades de trabajo. Los nodos de acción definen los trabajos que se ejecutan en el flujo de trabajo de Apache Oozie. Cuando utiliza Apache Oozie para organizar el clúster de Apache Hadoop, un nodo de acción incluye un trabajo de Hadoop. Los nodos de flujo de control proporcionan un mecanismo para controlar la ruta del flujo de trabajo. Los nodos de flujo de control incluyen nodos tales como start, end, decision, fork y join.

AWS SCT convierte los nodos de acción de origen y los nodos de flujo de control a AWS Step Functions. En AWS Step Functions, define los flujos de trabajo en Amazon States Language (ASL). AWS SCT usa ASL para definir la máquina de estado, que es un conjunto de estados que realizan tareas, determinan a qué estados se debe pasar a continuación, detener cuando se produce un error, etcétera. A continuación, AWS SCT carga los archivos JSON con las definiciones de las máquinas de estado. Luego, AWS SCT puede usar el rol AWS Identity and Access Management (de IAM) para configurar las máquinas de estado en AWS Step Functions. Para obtener más información, consulte ¿Qué es AWS Step Functions? en la Guía para desarrolladores de AWS Step Functions.

Además, AWS SCT crea un paquete de extensiones con funciones de AWS Lambda que emulan las funciones de origen que AWS Step Functions no admite. Para obtener más información, consulte Uso de paquetes AWS SCT de extensión.

AWS SCT migra las propiedades del trabajo de origen a AWS Systems Manager. Para almacenar los nombres y valores de los parámetros, AWS SCT utiliza Parameter Store, una capacidad de AWS Systems Manager. Para obtener más información, consulte ¿Qué es AWS Systems Manager? en la Guía del usuario de AWS Systems Manager.

Puede utilizar AWS SCT para actualizar automáticamente los valores y los nombres de los parámetros. Debido a las diferencias de arquitectura entre Apache Oozie y AWS Step Functions, es posible que tenga que configurar los parámetros. AWS SCTpuede encontrar un nombre o valor de parámetro específico en los archivos de origen y sustituirlos por valores nuevos. Para obtener más información, consulte Paso 3: Configurar los parámetros.

En la siguiente imagen se muestra el diagrama de la arquitectura de conversión de Apache Oozie a AWS Step Functions.

El diagrama de la arquitectura de conversión de Apache Oozie a AWS Step Functions.

Para iniciar la conversión, cree y ejecute el script de la CLI de AWS SCT. Este script incluye el conjunto completo de comandos para ejecutar la conversión. Puede descargar y editar una plantilla del script de conversión de Apache Oozie. Para obtener más información, consulte Obtención de escenarios de la CLI.

Asegúrese de que el script incluya los pasos siguientes.

Paso 1: Conectar con los servicios de origen y destino

Para iniciar la conversión de su clúster de Apache Oozie, cree un proyecto de AWS SCT nuevo. A continuación, conecte con los servicios de origen y destino. Cree y aprovisione los recursos de AWS de destino antes de iniciar la migración. Para obtener más información, consulte Requisitos previos para utilizar Apache Oozie como origen.

En este paso, utilice los siguientes comandos de la CLI de AWS SCT.

  • CreateProject: para crear un proyecto de AWS SCT nuevo.

  • AddSource: para agregar los archivos de Apache Oozie de origen al proyecto de AWS SCT.

  • ConnectSource: para conectar con Apache Oozie como origen.

  • AddTarget: para agregar AWS Step Functions como destino de migración al proyecto.

  • ConnectTarget: para conectar con AWS Step Functions.

Para obtener ejemplos de uso de estos comandos de la CLI de AWS SCT, consulte Usar Apache Oozie como origen.

Cuando ejecuta los comandos ConnectSource o ConnectTarget, AWS SCT intenta establecer la conexión con sus servicios. Si el intento de conexión falla, AWS SCT deja de ejecutar los comandos del script de la CLI y muestra un mensaje de error.

Paso 2: Configurar las reglas de asignación

Después de conectarse a los servicios de origen y destino, configure las reglas de asignación. Una regla de asignación define el destino de migración para los flujos de trabajo y parámetros de Apache Oozie de origen. Para obtener más información acerca de las reglas de asignación, consulte Creación de reglas de asignación en AWS SCT.

Para definir los objetos de origen y destino para la conversión, utilice el comando AddServerMapping. Este comando utiliza dos parámetros: sourceTreePath y targetTreePath. Los valores de estos parámetros incluyen una ruta explícita a los objetos de origen y destino. Para la conversión de Apache Oozie a AWS Step Functions, estos parámetros deben empezar por ETL.

El siguiente ejemplo de código crea una regla de asignación para los objetos OOZIE y AWS_STEP_FUNCTIONS. En el paso anterior, agregó estos objetos al proyecto de AWS SCTmediante los comandos AddSource y AddTarget.

AddServerMapping -sourceTreePath: 'ETL.APACHE_OOZIE' -targetTreePath: 'ETL.AWS_STEP_FUNCTIONS' /

Para obtener más información sobre el comando AddServerMapping, consulte la Referencia de la CLI de AWS Schema Conversion Tool.

Paso 3: Configurar los parámetros

Si los flujos de trabajo de Apache Oozie de origen utilizan parámetros, es posible que tenga que cambiar sus valores después de la conversión a AWS Step Functions. Además, es posible que tenga que agregar parámetros nuevos para usar con su AWS Step Functions.

En este paso, utilice los comandos AddParameterMapping y AddTargetParameter.

Para reemplazar los valores de los parámetros en los archivos de origen, utilice el comando AddParameterMapping. AWS SCT analiza los archivos de origen, busca los parámetros por nombre o valor y cambia los valores. Puede ejecutar un solo comando para analizar todos los archivos de origen. Para definir el alcance de los archivos que se van a analizar, utilice uno de los tres primeros parámetros de la siguiente lista. Este comando utiliza hasta seis parámetros.

  • filterName: el nombre del filtro de los objetos de origen. Puede crear un filtro mediante el comando CreateFilter.

  • treePath: la ruta explícita a los objetos de origen.

  • namePath: la ruta explícita a un objeto de origen concreto.

  • sourceParameterName: el nombre del parámetro de origen.

  • sourceValue: el valor del parámetro de origen.

  • targetValue: el valor del parámetro de destino.

El siguiente ejemplo de código reemplaza todos los parámetros en los que el valor es igual a c:\oozie\hive.py por el valor s3://bucket-oozie/hive.py.

AddParameterMapping -treePath: 'ETL.OOZIE.Applications' -sourceValue: 'c:\oozie\hive.py' -targetValue: 's3://bucket-oozie/hive.py' /

El siguiente ejemplo de código reemplaza todos los parámetros en los que el nombre es igual a nameNode por el valor hdfs://ip-111-222-33-44.eu-west-1.compute.internal:8020.

AddParameterMapping -treePath: 'ETL.OOZIE_SOURCE.Applications' -sourceParameter: 'nameNode' -targetValue: 'hdfs://ip-111-222-33-44.eu-west-1.compute.internal:8020' /

El siguiente ejemplo de código reemplaza todos los parámetros en los que el nombre es igual a nameNode y el valor es igual a hdfs://ip-55.eu-west-1.compute.internal:8020 por el valor del parámetro targetValue.

AddParameterMapping -treePath: 'ETL.OOZIE_SOURCE.Applications' -sourceParameter: 'nameNode' -sourceValue: 'hdfs://ip-55-66-77-88.eu-west-1.compute.internal:8020' -targetValue: 'hdfs://ip-111-222-33-44.eu-west-1.compute.internal:8020' /

Para agregar un parámetro nuevo a los archivos de destino además de un parámetro existente en los archivos de origen, utilice el comando AddTargetParameter. Este comando usa el mismo conjunto de parámetros que el comando AddParameterMapping.

El siguiente ejemplo de código agrega el parámetro de destino clusterId en lugar del parámetro nameNode.

AddTargetParameter -treePath: 'ETL.OOZIE_SOURCE.Applications' -sourceParameter: 'nameNode' -sourceValue: 'hdfs://ip-55-66-77-88.eu-west-1.compute.internal:8020' -targetParameter: 'clusterId' -targetValue: '1234567890abcdef0' /

Para obtener más información sobre los comandos AddServerMapping, AddParameterMapping, AddTargetParameter y CreateFilter, consulte la Referencia de la CLI de AWS Schema Conversion Tool.

Paso 4: Crear un informe de evaluación

Antes de iniciar la conversión, le recomendamos que cree un informe de evaluación. Este informe resume todas las tareas de migración y detalla las acciones que surgirán durante la migración. Para asegurarse de que la migración no falle, consulte este informe y aborde las medidas que se deben tomar antes de la migración. Para obtener más información, consulte Informes de evaluación de migración.

En este paso, utilice el comando CreateReport. Este comando emplea dos parámetros. El primer parámetro describe los objetos de origen para los que AWS SCT crea un informe de evaluación. Para ello, utilice uno de los siguientes parámetros: filterName, treePath o namePath. Este parámetro es obligatorio. También puede agregar un parámetro booleano opcional forceLoad. Si establece este parámetro en true, AWS SCT carga automáticamente todos los objetos secundarios del objeto de origen que especifique en el comando CreateReport.

El siguiente ejemplo de código crea un informe de evaluación para el nodo Applications de los archivos Oozie de origen.

CreateReport -treePath: 'ETL.APACHE_OOZIE.Applications' /

Puede guardar una copia del informe de evaluación en formato PDF o como un archivo de valores separados por comas (CSV). Para ello, utilice el comando SaveReportPDF o SaveReportCSV.

El comando SaveReportPDF guarda una copia del informe de evaluación en un archivo PDF. Este comando utiliza cuatro parámetros. El parámetro file es obligatorio, mientras que otros parámetros son opcionales.

  • file: la ruta al archivo PDF y su nombre.

  • filter: el nombre del filtro que creó anteriormente para definir el alcance de los objetos de origen que desee migrar.

  • treePath: la ruta explícita a los objetos de la base de datos de origen para los que guarda una copia del informe de evaluación.

  • namePath: la ruta que incluye solo los nombres de los objetos de destino para los que guarda una copia del informe de evaluación.

El comando SaveReportCSV guarda el informe de evaluación en archivos CSV. Este comando utiliza cuatro parámetros. El parámetro directory es obligatorio, mientras que otros parámetros son opcionales.

  • directory: la ruta a la carpeta en la que AWS SCT guarda los archivos CSV.

  • filter: el nombre del filtro que creó anteriormente para definir el alcance de los objetos de origen que desee migrar.

  • treePath: la ruta explícita a los objetos de la base de datos de origen para los que guarda una copia del informe de evaluación.

  • namePath: la ruta que incluye solo los nombres de los objetos de destino para los que guarda una copia del informe de evaluación.

El siguiente ejemplo de código guarda una copia del informe de evaluación en el archivo c:\sct\ar.pdf.

SaveReportPDF -file:'c:\sct\ar.pdf' /

El siguiente ejemplo de código guarda una copia del informe de evaluación en archivos CVS en la carpeta c:\sct.

SaveReportCSV -file:'c:\sct' /

Para obtener más información sobre los comandos CreateReport, SaveReportPDF y SaveReportCSV, consulte la Referencia de la CLI de AWS Schema Conversion Tool.

Paso 5: Convertir los flujos de trabajo de Apache Oozie a AWS Step Functions con AWS SCT

Después de configurar su proyecto de AWS SCT, convierta el código fuente y aplíquelo a la Nube de AWS.

En este paso, utilice los comandos Convert, SaveOnS3, ConfigureStateMachine y ApplyToTarget.

El comando Migrate migra los objetos de origen al clúster de destino. Este comando utiliza cuatro parámetros. Especifique el parámetro filter o treePath. El resto de los parámetros son opcionales.

  • filter: el nombre del filtro que creó anteriormente para definir el alcance de los objetos de origen que desee migrar.

  • namePath: la ruta explícita a un objeto de origen concreto.

  • treePath: la ruta explícita a los objetos de la base de datos de origen para los que guarda una copia del informe de evaluación.

  • forceLoad: cuando se establece en true, AWS SCT carga automáticamente los árboles de metadatos de la base de datos durante la migración. El valor predeterminado es false.

El siguiente ejemplo de código convierte los archivos de la carpeta Applications a archivos Oozie de origen.

Convert -treePath: 'ETL.APACHE_OOZIE.Applications' /

SaveOnS3 carga las definiciones de las máquinas de estado en el bucket de Amazon S3. Este comando utiliza el parámetro treePath. Para ejecutar este comando, utilice la carpeta de destino con las definiciones de las máquinas de estado como valor de este parámetro.

El siguiente ejemplo carga la carpeta State machine definitions del objeto de destino de AWS_STEP_FUNCTIONS en el bucket de Amazon S3. AWS SCT utiliza el bucket de Amazon S3 que guardó en el perfil de servicio de AWS en el paso Requisitos previos.

SaveOnS3 -treePath: 'ETL.AWS_STEP_FUNCTIONS.State machine definitions' /

El comando ConfigureStateMachine configura las máquinas de estado. Este comando utiliza hasta seis parámetros. Para definir el alcance de los archivos que se van a analizar, utilice uno de los tres primeros parámetros de la siguiente lista.

  • filterName: el nombre del filtro de los objetos de destino. Puede crear un filtro mediante el comando CreateFilter.

  • treePath: la ruta explícita a los objetos de destino.

  • namePath: la ruta explícita a un objeto de destino concreto.

  • iamRole: el nombre de recurso de Amazon (ARN) del rol de IAM que proporciona acceso a las máquinas de estado. Este parámetro es obligatorio.

El siguiente ejemplo de código configura las máquinas de estado definidas en AWS_STEP_FUNCTIONS utilizando el rol de IAM role_name.

ConfigureStateMachine -treePath: 'ETL.AWS_STEP_FUNCTIONS.State machine definitions' -role: 'arn:aws:iam::555555555555:role/role_name' /

El comando ApplyToTarget aplica el código convertido al servidor de destino. Para ejecutar este comando, utilice uno de los siguientes parámetros: filterName, treePath o namePath para definir los objetos de destino que se van a aplicar.

El siguiente ejemplo de código aplica la máquina de estado app_wp a AWS Step Functions.

ApplyToTarget -treePath: 'ETL.AWS_STEP_FUNCTIONS.State machines.app_wp' /

Utilice un paquete de extensión de AWS SCT para asegurarse de que el código convertido produce los mismos resultados que el código de origen. Se trata de un conjunto de funciones de AWS Lambda que emulan las funciones de Apache Oozie que AWS Step Functions no admite. Para instalar este paquete de extensión, puede usar el comando CreateLambdaExtPack.

Este comando utiliza hasta cinco parámetros. Utilice Oozie2SF para extPackId. En este caso, AWS SCT crea un paquete de extensión para las funciones de Apache Oozie de origen.

  • extPackId: el identificador único de un conjunto de funciones de Lambda. Este parámetro es obligatorio.

  • tempDirectory: la ruta donde en la que AWS SCT puede almacenar los archivos temporales. Este parámetro es obligatorio.

  • awsProfile: el nombre de su perfil de AWS.

  • lambdaExecRoles: la lista de nombres de recursos de Amazon (ARN) de los roles de ejecución que se van a utilizar para las funciones de Lambda.

  • createInvokeRoleFlag: el indicador booleano que indica si se debe crear un rol de ejecución para. AWS Step Functions

Para instalar y usar el paquete de extensión, proporcione los permisos necesarios. Para obtener más información, consulte Permisos para usar funciones de AWS Lambda en el paquete de extensión.

Para obtener más información sobre los comandos Convert, SaveOnS3, ConfigureStateMachine, ApplyToTarget y CreateLambdaExtPack, consulte la Referencia de la CLI de AWS Schema Conversion Tool.

Ejecución del script de la CLI

Cuando termine de editar el script de la CLI de AWS SCT, guárdelo como un archivo con la extensión .scts. Ahora, puede ejecutar el script desde la carpeta app de la ruta de instalación de AWS SCT. Para ello, utilice el siguiente comando.

RunSCTBatch.cmd --pathtoscts "C:\script_path\oozie.scts"

En el ejemplo anterior, sustituya script_path por la ruta del archivo con el script de la CLI. Para obtener más información sobre la ejecución de scripts de CLI en AWS SCT, consulte Modo script.

Nodos de Apache Oozie que AWS SCT puede convertir a AWS Step Functions

Puede usar AWS SCT para convertir nodos de acción y de flujo de control de Apache Oozie a AWS Step Functions.

Entre los nodos de acción compatibles se incluyen:

  • Acción de Hive

  • Acción de Hive2

  • Acción de Spark

  • Acción de MapReduce Streaming

  • Acción de Java

  • Acción de DistCP

  • Acción de Piga

  • Acción de Sqoop

  • Acción de FS

  • Acción de Shell

Entre los nodos de control de flujo compatibles se incluyen:

  • Acción Start

  • Acción End

  • Acción Kit

  • Acción Decision

  • Acción Fork

  • Acción Join