Como converter o Apache Oozie para AWS Step Functions com a AWS Schema Conversion Tool - AWS Schema Conversion Tool

As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.

Como converter o Apache Oozie para AWS Step Functions com a AWS Schema Conversion Tool

Para converter fluxos de trabalho do Apache Oozie, certifique-se de usar a versão 1.0.671 ou superior da AWS SCT. Além disso, familiarize-se com a interface de linha de comandos (CLI) da AWS SCT. Para obter mais informações, consulte AWS SCT Referência da CLI.

Visão geral da conversão

Seu código fonte do Apache Oozie inclui nós de ação, nós de fluxo de controle e propriedades do trabalho. Os nós de ação definem as tarefas que você executa em seu fluxo de trabalho do Apache Oozie. Quando você usa o Apache Oozie para orquestrar seu cluster do Apache Hadoop, um nó de ação inclui uma tarefa do Hadoop. Os nós de controle de fluxo fornecem um mecanismo para controlar o caminho do fluxo de trabalho. Os nós do fluxo de controle incluem nós como start, end, decision, fork e join.

A AWS SCT converte seus nós de ação de origem e nós de fluxo de controle em AWS Step Functions. Em AWS Step Functions, você define seus fluxos de trabalho na Amazon States Language (ASL). A AWS SCT usa a ASL para definir sua máquina de estado, que é uma coleção de estados que pode realizar trabalho, determinar quais estados mudar depois, interromper com um erro e assim por diante. Em seguida, a AWS SCT carrega os arquivos JSON com as definições das máquinas de estado. Depois, a AWS SCT pode usar seu perfil (IAM) AWS Identity and Access Management para configurar suas máquinas de estado em AWS Step Functions. Para obter mais informações, consulte O que é o AWS Step Functions? no Guia do desenvolvedor do AWS Step Functions.

Além disso, a AWS SCT cria um pacote de extensão com perfis AWS Lambda que emulam os perfis de origem que o AWS Step Functions não suporta. Para obter mais informações, consulte Usando AWS SCT pacotes de extensão.

A AWS SCT migra suas propriedades de trabalho de origem para o AWS Systems Manager. Para armazenar nomes e valores de parâmetros, a AWS SCT usa o repositório de parâmetros, um recurso do AWS Systems Manager. Para obter mais informações, consulte O que é o AWS Systems Manager? no Guia do usuário do AWS Systems Manager.

Você pode usar a AWS SCT para atualizar automaticamente os valores e os nomes dos seus parâmetros. Devido às diferenças de arquitetura entre o Apache Oozie e AWS Step Functions, talvez seja necessário configurar seus parâmetros. A AWS SCT pode encontrar um nome ou valor de parâmetro especificado em seus arquivos de origem e substituí-los por novos valores. Para obter mais informações, consulte Etapa 3: configurar parâmetros.

A imagem a seguir mostra o diagrama de arquitetura da conversão do Apache Oozie para o AWS Step Functions.

O diagrama de arquitetura da conversão do Apache Oozie para o AWS Step Functions.

Para iniciar a conversão, crie e execute seu script de CLI da AWS SCT. Esse script inclui o conjunto completo de comandos para executar a conversão. Você pode baixar e editar um modelo do script de conversão do Apache Oozie. Para obter mais informações, consulte Obter cenários de CLI.

Verifique se o script inclui as seguintes etapas.

Etapa 1: conectar-se aos seus serviços de origem e destino

Para iniciar a conversão do seu cluster Apache Oozie, crie um novo projeto da AWS SCT. Em seguida, conecte-se aos seus serviços de origem e destino. Certifique-se de criar e provisionar seus recursos da AWS de destino antes de iniciar a migração. Para obter mais informações, consulte Pré-requisitos de uso do Apache Oozie como origem.

Nesta etapa, você usa os seguintes comandos CLI da AWS SCT.

  • CreateProject – para criar um novo projeto da AWS SCT.

  • AddSource – para adicionar seus arquivos Apache Oozie de origem em seu projeto da AWS SCT.

  • ConnectSource – para conectar-se ao Apache Oozie como origem.

  • AddTarget – para adicionar AWS Step Functions como alvo de migração em seu projeto.

  • ConnectTarget – Para conectar-se ao AWS Step Functions.

Para obter exemplos de uso desses comandos CLI da AWS SCT, consulte Como usar o Apache Oozie como origem.

Quando você executa os comandos ConnectSource ou ConnectTarget, a AWS SCT tenta estabelecer a conexão com seus serviços. Se a tentativa de conexão falhar, a AWS SCT interrompe a execução dos comandos do script da CLI e exibe uma mensagem de erro.

Etapa 2: configurar as regras de mapeamento

Depois de se conectar aos serviços de origem e de destino, configure as regras de mapeamento. Uma regra de mapeamento define a meta de migração para seus fluxos de trabalho e parâmetros de origem do Apache Oozie. Para obter mais informações sobre regras de mapeamento, consulte Criação de regras de mapeamento na AWS SCT.

Para definir objetos de origem e destino para conversão, use o comando AddServerMapping. Esse comando usa dois parâmetros: sourceTreePath e targetTreePath. Os valores desses parâmetros incluem um caminho explícito para seus objetos de origem e destino. Para que o Apache Oozie faça a conversão do AWS Step Functions, esses parâmetros devem começar com ETL.

O exemplo de código a seguir cria uma regra de mapeamento para os objetos OOZIE e AWS_STEP_FUNCTIONS. Você adicionou esses objetos ao seu projeto da AWS SCT usando os comandos AddSource e AddTarget na etapa anterior.

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

Para obter mais informações sobre o comando AddServerMapping, consulte Referência da CLI do AWS Schema Conversion Tool.

Etapa 3: configurar parâmetros

Se seus fluxos de trabalho de origem do Apache Oozie usarem parâmetros, talvez seja necessário alterar seus valores após a conversão para o AWS Step Functions. Além disso, pode ser necessário adicionar novos parâmetros para usar com o seu AWS Step Functions.

Para esta etapa, use os comandos AddParameterMapping e AddTargetParameter.

Para substituir os valores dos parâmetros em seus arquivos de origem, use o comando AddParameterMapping. A AWS SCT verifica seus arquivos de origem, encontra os parâmetros por nome ou valor e altera seus valores. Você pode executar um único comando para verificar todos os seus arquivos de origem. Você define o escopo dos arquivos a serem examinados usando um dos três primeiros parâmetros da lista a seguir. Esse comando usa até seis parâmetros.

  • filterName – o nome do filtro para seus objetos de origem. Você pode criar um filtro usando o comando CreateFilter.

  • treePath – o caminho explícito para os objetos de origem.

  • namePath – o caminho explícito para um objeto específico de origem.

  • sourceParameterName – o nome do seu parâmetro de origem.

  • sourceValue – o valor do seu parâmetro de origem.

  • targetValue – o nome do seu parâmetro de destino.

O exemplo de código a seguir substitui todos os parâmetros em que o valor é igual a c:\oozie\hive.py com o valor s3://bucket-oozie/hive.py.

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

O exemplo de código a seguir substitui todos os parâmetros em que o nome é igual a nameNode com o 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' /

O exemplo de código a seguir substitui todos os parâmetros em que o nome é igual a nameNode e o valor é igual a hdfs://ip-55.eu-west-1.compute.internal:8020 com o valor do 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 adicionar um novo parâmetro nos arquivos de destino, além de um parâmetro existente nos arquivos de origem, use o comando AddTargetParameter. Esse comando usa o mesmo conjunto de parâmetros do comando AddParameterMapping.

O exemplo de código a seguir adiciona o parâmetro de destino clusterId em vez do 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 obter mais informações sobre os comandos AddServerMapping, AddParameterMapping, AddTargetParameter e CreateFilter, consulte a Referência da CLI da AWS Schema Conversion Tool.

Etapa 4: criar um relatório de avaliação

Antes de iniciar a conversão, recomendamos criar um relatório de avaliação. Esse relatório resume todas as tarefas de migração e detalha os itens de ação que surgirão durante a migração. Para garantir que sua migração não falhe, visualize esse relatório e aborde os itens de ação antes da migração. Para obter mais informações, consulte Relatórios de avaliação de migração.

Para esta etapa, use o comando CreateReport. Esse comando usa dois parâmetros. O primeiro parâmetro descreve os objetos de origem para os quais a AWS SCT cria um relatório de avaliação. Para fazer isso, utilize um dos seguintes parâmetros: filterName, treePath ou namePath. Esse parâmetro é obrigatório. Além disso, você pode adicionar um parâmetro booleano opcional forceLoad. Se você definir esse parâmetro como true, AWS SCT carregará automaticamente todos os objetos secundários do objeto de origem que você especificar no comando CreateReport.

O exemplo de código a seguir cria um relatório de avaliação para o nó Applications dos seus arquivos Oozie de origem.

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

Você pode então salvar uma cópia do relatório de avaliação como um arquivo PDF ou arquivos de valores separados por vírgula (CSV). Para isso, use o comando SaveReportPDF ou SaveReportCSV.

O comando SaveReportPDF salva uma cópia do seu relatório de avaliação como um arquivo PDF. Esse comando usa quatro parâmetros. O parâmetro file é obrigatório, outros parâmetros são opcionais.

  • file – o caminho para o arquivo PDF e seu nome.

  • filter – o nome do filtro que você criou antes para definir o escopo dos objetos de origem a serem migrados.

  • treePath – o caminho explícito para os objetos do banco de dados de origem para os quais você salva uma cópia do relatório de avaliação.

  • namePath – o caminho que inclui somente os nomes dos objetos de destino para os quais você salva uma cópia do relatório de avaliação.

O comando SaveReportCSV salva seu relatório de avaliação em arquivos CSV. Esse comando usa quatro parâmetros. O parâmetro directory é obrigatório, outros parâmetros são opcionais.

  • directory – o caminho para a pasta em que a AWS SCT salva os arquivos CSV.

  • filter – o nome do filtro que você criou antes para definir o escopo dos objetos de origem a serem migrados.

  • treePath – o caminho explícito para os objetos do banco de dados de origem para os quais você salva uma cópia do relatório de avaliação.

  • namePath – o caminho que inclui somente os nomes dos objetos de destino para os quais você salva uma cópia do relatório de avaliação.

O exemplo de código a seguir salva uma cópia do seu relatório de avaliação no arquivo c:\sct\ar.pdf.

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

O exemplo de código a seguir salva uma cópia do seu relatório de avaliação como arquivos CSV na pasta c:\sct.

SaveReportCSV -file:'c:\sct' /

Para obter mais informações sobre os comandos CreateReport, SaveReportPDF e SaveReportCSV, consulte a Referência da CLI da AWS Schema Conversion Tool.

Etapa 5: converter seus fluxos de trabalho do Apache Oozie para AWS Step Functions com AWS SCT

Depois de configurar seu projeto da AWS SCT, converta seu código fonte e aplique-o à Nuvem AWS.

Para esta etapa, use os comandos Convert, SaveOnS3, ConfigureStateMachine e ApplyToTarget.

O comando Migrate migra seus objetos de origem para o cluster de destino. Esse comando usa quatro parâmetros. Certifique-se de especificar o parâmetro filter ou treePath. Outros parâmetros são opcionais.

  • filter – o nome do filtro que você criou antes para definir o escopo dos objetos de origem a serem migrados.

  • namePath – o caminho explícito para um objeto específico de origem.

  • treePath – o caminho explícito para os objetos do banco de dados de origem para os quais você salva uma cópia do relatório de avaliação.

  • forceLoad – quando definido como true, a AWS SCTcarrega automaticamente as árvores de metadados do banco de dados durante a migração. O valor padrão é false.

O exemplo de código a seguir converte arquivos da pasta Applications em seus arquivos Oozie de origem.

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

O SaveOnS3 carrega as definições de estado das máquinas para o seu bucket do Amazon S3. Esse comando usa o parâmetro treePath. Para executar esse comando, use a pasta de destino com definições de máquinas de estado como o valor desse parâmetro.

O seguinte carrega a pasta State machine definitions do seu objeto de destino AWS_STEP_FUNCTIONS no bucket do Amazon S3. A AWS SCT usa o bucket do Amazon S3 que você armazenou no perfil de serviço da AWS na etapa Pré-requisitos.

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

O comando ConfigureStateMachine configura as máquinas de estado. Esse comando usa até seis parâmetros. Certifique-se de definir o escopo de destino usando um dos três primeiros parâmetros da lista a seguir.

  • filterName – o nome do filtro para seus objetos de destino. Você pode criar um filtro usando o comando CreateFilter.

  • treePath – o caminho explícito para os objetos de destino.

  • namePath – o caminho explícito para um objeto específico de destino.

  • iamRole – o nome do recurso da Amazon (ARN) do perfil do IAM que fornece acesso às suas máquinas de etapa. Esse parâmetro é obrigatório.

O exemplo de código a seguir configura as máquinas de estado definidas em AWS_STEP_FUNCTIONS usando o perfil do IAM role_name.

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

O comando ApplyToTarget aplica seu código convertido ao servidor de destino. Para executar esse comando, use um dos seguintes parâmetros: filterName,treePath, ou namePath para definir os objetos de destino a serem aplicados.

O exemplo de código a seguir aplica a máquina de estado app_wp ao AWS Step Functions.

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

Para garantir que seu código convertido produza os mesmos resultados que seu código fonte, você pode usar o pacote de extensão AWS SCT. Este é um conjunto de perfis AWS Lambda que emulam seus perfis do Apache Oozie que o AWS Step Functions não suporta. Para instalar esse pacote de extensão, você pode usar o comando CreateLambdaExtPack.

Esse comando usa até cinco parâmetros. Certifique-se de usar o Oozie2SF para extPackId. Nesse caso, a AWS SCT cria um pacote de extensão para as funções de origem do Apache Oozie.

  • extPackId – o identificador exclusivo para um conjunto de funções do Lambda. Esse parâmetro é obrigatório.

  • tempDirectory – o caminho onde a AWS SCT pode armazenar arquivos temporários. Esse parâmetro é obrigatório.

  • awsProfile – o nome do seu perfil da AWS.

  • lambdaExecRoles – a lista de nomes do recurso da Amazon (ARN) dos perfis de execução a serem usados para funções do Lambda.

  • createInvokeRoleFlag – o sinalizador booleano que indica se uma função de execução deve ser criada para AWS Step Functions.

Para instalar e usar o pacote de extensão, verifique se você fornece as permissões necessárias. Para obter mais informações, consulte Permissões para usar funções AWS Lambda no pacote de extensões.

Para obter mais informações sobre os comandos Convert, SaveOnS3, ConfigureStateMachine, ApplyToTarget e CreateLambdaExtPack, consulte a Referência da CLI da AWS Schema Conversion Tool.

Como executar seu script de CLI

Depois de terminar de editar seu script de CLI da AWS SCT, salve-o como um arquivo com a extensão .scts. Agora, você pode executar seu script a partir da pasta app do caminho de instalação da AWS SCT. Para fazer isso, use o comando a seguir.

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

No exemplo anterior, substitua script_path pelo caminho do seu arquivo por um script de CLI. Para obter mais informações sobre a execução de scripts de CLI na AWS SCT, consulte Modo de script.

Nós do Apache Oozie que a AWS SCT pode converter para AWS Step Functions

Você pode usar AWS SCT para converter os nós de ação do Apache Oozie e controlar os nós de fluxo para AWS Step Functions.

Os nós de ação suportados são os seguintes:

  • Ação Hive

  • Ação Hive2

  • Ação Spark

  • Ação de streaming do MapReduce

  • Ação Java

  • Ação DistCP

  • Ação Pig

  • Ação Sqoop

  • Ação FS

  • Ação Shell

Os nós de fluxo de controle suportados incluem o seguinte:

  • Ação de iniciar

  • Ação de encerrar

  • Ação de eliminar

  • Ação de decisão

  • Ação de garfo

  • Ação de junção