Todos os produtos
Search
Central de documentação

DataWorks:Nó EMR Shell

Última atualização: Jun 27, 2026

Crie nós EMR Shell no DataWorks para executar scripts Shell personalizados em operações avançadas, como processamento de dados, chamada de componentes Hadoop e gerenciamento de arquivos. Este tópico explica como configurar e usar nós EMR Shell para editar e executar tarefas Shell.

Pré-requisitos

  • Antes de iniciar o desenvolvimento do nó, caso necessite de um ambiente de componente personalizado, crie uma imagem personalizada com base na imagem oficial dataworks_emr_base_task_pod e use-a no Data Studio. Para mais informações, consulte Criar uma imagem personalizada e Usar imagens no desenvolvimento de dados.

    Por exemplo, ao criar uma imagem personalizada, você pode substituir pacotes JAR do Spark ou adicionar dependências de libraries, files ou JAR packages específicos.

  • Crie um cluster Alibaba Cloud EMR e registre-o no DataWorks. Para mais detalhes, consulte Novo Data Studio: Anexar um recurso de computação EMR.

  • (Opcional, para usuários RAM) Adicione o usuário do Resource Access Management (RAM) responsável pelo desenvolvimento da tarefa ao workspace e atribua a ele a função Development ou Workspace Administrator (esta função possui permissões amplas e deve ser concedida com cautela). Para saber mais, consulte Adicionar membros ao workspace.

    Se estiver usando uma conta root, ignore esta etapa.

Limitações

  • Os nós EMR Shell são executados apenas em um grupo de recursos serverless (recomendado) ou em um grupo de recursos exclusivo para agendamento. O uso de imagem personalizada no desenvolvimento de dados exige um grupo de recursos serverless.

  • Para gerenciar metadados de um cluster DataLake ou de um cluster personalizado no DataWorks, configure primeiro o EMR-HOOK no cluster. Consulte Configurar EMR-HOOK para Hive para obter instruções.

    Nota

    Sem a configuração do EMR-HOOK no cluster, não é possível visualizar metadados em tempo real, gerar logs de auditoria, exibir linhagem de dados ou executar tarefas de governança relacionadas ao EMR no DataWorks.

  • Em tarefas enviadas com spark-submit, defina o deploy-mode como cluster. Evite o modo client.

  • Os nós EMR Shell são executados nos grupos de recursos de agendamento do DataWorks, e não nos clusters EMR. Embora alguns comandos de componentes EMR sejam suportados, não é possível ler diretamente o status de recursos do cluster EMR. Portanto, envie previamente os recursos necessários para o DataWorks. Consulte Gerenciamento de Recursos para mais informações.

  • Nós EMR Shell não suportam a execução de arquivos Python. Use um nó Shell para essa finalidade.

Procedimento

  1. No editor de nós EMR Shell, execute as operações abaixo.

    Desenvolver código Shell

    Escolha uma das opções a seguir conforme sua necessidade:

    Opção 1: Enviar e referenciar JAR do EMR

    Envie recursos da sua máquina local para o Data Studio e referencie-os. Caso utilize um cluster DataLake, siga estes passos para referenciar um recurso JAR do EMR. Se o recurso do qual o nó EMR Shell depende for muito grande para envio pela interface do DataWorks, armazene-o no HDFS e referencie-o diretamente no código.

    1. Crie um recurso JAR do EMR.

      1. Consulte Gerenciamento de Recursos para mais detalhes. Armazene o pacote JAR gerado em Preparar dados iniciais e um pacote JAR no diretório de recursos JAR emr/jars. Clique em Click Upload.

      2. Selecione um Storage Path, Data Sources e Resource Group.

      3. Clique em Save.

      Para Storage Path, selecione HDFS.

    2. Referencie o recurso JAR do EMR.

      1. Abra o nó EMR Shell criado e acesse a página do editor de código.

      2. No painel de navegação à esquerda, localize o recurso desejado em Gerenciamento de Recursos (por exemplo, onaliyun_mr_wordcount-1.0-SNAPSHOT.jar). Clique com o botão direito no recurso e selecione Insert Resource Path.

      3. Após selecionar a referência, uma mensagem de sucesso será exibida na página de edição de código do nó EMR Shell, indicando que o recurso de código foi referenciado corretamente. Em seguida, execute o comando abaixo. Os valores de pacote de recursos, nome do Bucket e caminho neste comando são apenas exemplos; substitua-os pelas suas informações reais.

      ##@resource_reference{"onaliyun_mr_wordcount-1.0-SNAPSHOT.jar"}
      onaliyun_mr_wordcount-1.0-SNAPSHOT.jar cn.apache.hadoop.onaliyun.examples.EmrWordCount oss://onaliyun-bucket-2/emr/datas/wordcount02/inputs oss://onaliyun-bucket-2/emr/datas/wordcount02/outputs
      Nota

      Não há suporte para comentários durante a edição de código em um nó EMR Shell.

    Opção 2: Referenciar diretamente recurso do OSS

    Referencie recursos do OSS diretamente por meio do OSS REF. Durante a execução do nó EMR, o DataWorks carrega automaticamente os recursos do OSS definidos no código para a máquina local.

    ossref://{endpoint}/{bucket}/{object}
    • Endpoint: Endpoint de acesso público ao OSS. Se este parâmetro permanecer vazio, o bucket do OSS deverá estar na mesma região do cluster EMR.

    • bucket: Nome do bucket, que funciona como contêiner de objetos no OSS. Cada bucket possui um nome exclusivo. Acesse o console do OSS para visualizar todos os buckets da conta atual.

    • object: Objeto específico armazenado no bucket, como um nome de arquivo ou caminho.

    Exemplo

    1. Envie um arquivo de exemplo para um bucket do OSS. Neste exemplo, usamos o arquivo emr_shell_test.sh com o seguinte conteúdo:

      #!/bin/sh
      echo "Hello, DataWorks!"
    2. Referencie o recurso do OSS diretamente no nó EMR Shell.

      sh ossref://oss-cn-shanghai.aliyuncs.com/test-oss-of-dataworks/emr_shell_test.sh
      Nota

      Neste comando, oss-cn-shanghai.aliyuncs.com representa o endpoint, test-oss-of-dataworks é o nome do bucket e emr_shell_test.sh corresponde ao nome do arquivo object.

      O comando gera a seguinte saída a partir do arquivo emr_shell_test.sh:

      ...
      >>> [2024-10-24 15:46:01][INFO   ][CommandExecutor       ]: Process ready to execute. command: sh ./emr_shell_test.sh
      >>> [2024-10-24 15:46:01][INFO   ][CommandExecutor       ]: Command state update to RUNNING
      >>> [2024-10-24 15:46:01][INFO   ][CommandExecutor       ]: Process start to execute...
      Process Output>>> Hello, DataWorks!
      ...

    Configurar parâmetros de agendamento do EMR Shell

    Ao desenvolver o código da tarefa no editor Shell, defina variáveis no formato ${variable_name}. Em seguida, atribua um valor à variável na seção Scheduling Parameters, dentro de Scheduling Settings, no lado direito do editor de nós. Isso permite a passagem dinâmica de parâmetros durante execuções agendadas. Para detalhes sobre parâmetros de agendamento, consulte Fontes e expressões de parâmetros de agendamento. O código abaixo ilustra um exemplo:

    DD=`date`;
    echo "hello world, $DD"
    ## Can be used with scheduling parameters
    echo ${var};
    Nota

    Clusters DataLake também oferecem suporte às seguintes ferramentas de linha de comando.

    • Comandos Shell: Comandos localizados em /usr/bin e /bin, como ls e echo.

    • Componentes YARN: hadoop, hdfs e yarn.

    • Componentes Spark: spark-submit.

    • Componentes Sqoop: sqoop-export, sqoop-import, sqoop-import-all-tables, entre outros.

    Para acessar uma instância RDS com esses componentes, adicione o endereço IP do grupo de recursos à lista de permissões do RDS.

    Executar a tarefa Shell

    1. Na seção Run Configuration, configure o Compute Resource e o Resource Group.

      Nota
      • Defina as CUs for Scheduling conforme os recursos necessários para a execução da tarefa. O valor padrão de CU é 0.25.

      • Selecione uma Image adequada aos requisitos da sua tarefa.

      • O acesso a fontes de dados em rede pública ou ambiente VPC requer um grupo de recursos de agendamento com conectividade à fonte. Consulte Soluções de conectividade de rede para mais informações.

    2. Na barra de ferramentas, clique em Run para executar a tarefa Shell.

  2. Configure as propriedades de agendamento para executar a tarefa do nó periodicamente. Consulte Configurar propriedades de agendamento para um nó para orientações detalhadas.

    Nota

    Caso precise personalizar o ambiente de componentes, crie uma imagem personalizada baseada na imagem oficial dataworks_emr_base_task_pod e use a imagem no Desenvolvimento de Dados.

    Durante a criação da imagem personalizada, você pode substituir pacotes JAR do Spark ou incluir dependências de libraries, files ou JAR packages específicos.

  3. Após configurar o nó, faça o deploy. Consulte Fazer deploy de nós e workflows para mais detalhes.

  4. Depois do deploy da tarefa, visualize o status de execução no Operation Center. Para saber mais, consulte Introdução ao Operation Center.

Perguntas frequentes

P: Um mapeamento de hosts foi configurado no grupo de recursos de agendamento legado, mas o nó EMR Shell ainda reporta falha de resolução. Como resolver?

R: Reinitialize o cluster EMR usando o grupo de recursos configurado para que o script EMR Shell reconheça o novo mapeamento de hosts. Acesse a página da lista de recursos de computação, clique em Initialize Resources e, na caixa de diálogo, clique em Re-initialize para garantir o sucesso da inicialização.

Documentação relacionada