Os nós EMR Shell no DataWorks executam scripts Shell personalizados para processamento de dados, chamada de componentes Hadoop e gerenciamento de arquivos. Configure, desenvolva e execute tarefas Shell em nós EMR Shell seguindo este procedimento.
Pré-requisitos
-
Para personalizar o ambiente do componente antes do desenvolvimento do nó, crie uma custom image com base na imagem oficial
dataworks_emr_base_task_pode use the image in DataStudio.Por exemplo, substitua um pacote JAR do Spark ou dependa de
libraries,filesouJAR packagesespecíficos ao criar uma imagem personalizada. Um cluster EMR registrado no DataWorks. Para mais informações, consulte DataStudio (old version): Bind an EMR compute resource.
(Opcional, para usuários RAM) O usuário RAM responsável pelo desenvolvimento da tarefa deve ser membro do workspace e ter a função Development ou Workspace Administrator. A função Workspace Administrator possui permissões amplas; conceda-a com cautela. Para mais informações, consulte Add members to a workspace and assign roles to them.
Um grupo de recursos serverless adquirido e configurado, incluindo a vinculação do grupo de recursos a um workspace e a configuração de rede. Para mais informações, consulte Use a serverless resource group.
-
Um workflow criado no DataStudio.
No DataStudio, todo o desenvolvimento de nós é organizado em workflows. Crie um workflow antes de criar um nó. Para mais informações, consulte Create a workflow.
-
Se executar um script Python em um grupo de recursos do DataWorks e seu código exigir pacotes de terceiros, prepare o ambiente de pacotes no grupo de recursos. O método varia conforme o tipo de grupo de recursos:
Grupo de recursos serverless (recomendado): instale pacotes de terceiros por meio do gerenciamento de imagens. Para mais informações, consulte Custom images.
Grupo de recursos exclusivo para agendamento: instale pacotes de terceiros usando o O&M Assistant. Para mais informações, consulte O&M Assistant.
Limitações
Execute esse tipo de tarefa apenas em um serverless resource group (recomendado) ou em um grupo de recursos exclusivo para agendamento. Se precisar usar uma imagem no desenvolvimento de dados, utilize um grupo de recursos serverless.
Para gerenciar metadados de um cluster DataLake ou personalizado no DataWorks, configure o EMR-HOOK no cluster. Sem o EMR-HOOK, o DataWorks não exibe metadados em tempo real, não gera logs de auditoria, não mostra linhagem de dados e não realiza tarefas de governança relacionadas ao EMR. Para mais informações sobre como configurar o EMR-HOOK, consulte Configure EMR-HOOK for Hive.
Para tarefas enviadas com spark-submit, use
cluster modeno parâmetro deploy-mode em vez declient mode.Os nós EMR Shell são executados em grupos de recursos de agendamento do DataWorks, e não nos clusters EMR. Embora seja possível usar alguns comandos de componentes do EMR, não leia informações de recursos diretamente do EMR. Para referenciar um recurso, faça primeiro o upload dele para o DataWorks. Para mais informações, consulte Upload EMR resources.
Nós EMR Shell não suportam a execução de arquivos Python. Utilize um Shell node como alternativa.
Etapa 1: Criar um nó EMR Shell
-
Faça login no console do DataWorks. Na região desejada, clique em no painel de navegação à esquerda. Selecione um workspace na lista suspensa e clique em Go to Data Development.
-
Crie um nó EMR Shell.
-
Clique com o botão direito no workflow desejado e escolha .
NotaAlternativamente, passe o mouse sobre Create e escolha .
-
Na caixa de diálogo Create Node, insira um Name e selecione uma Engine Instance, um Node Type e um Path. Clique em OK para acessar o editor de nós EMR Shell.
NotaO nome do nó pode conter letras maiúsculas, minúsculas, caracteres chineses, dígitos, sublinhados (_) e pontos (.).
-
Etapa 2: Desenvolver uma tarefa EMR Shell
Na página do editor de nós EMR Shell, clique duas vezes no nó criado e escolha uma das opções abaixo conforme seu cenário:
(Recomendado) Faça upload de recursos do computador local para o DataStudio e referencie-os no código. Para mais informações, consulte Option 1: Upload a resource and then reference the EMR JAR resource.
Referencie recursos do OSS usando o recurso OSS REF. Para mais informações, consulte Option 2: Directly reference an OSS resource.
Opção 1: Fazer upload e referenciar recursos JAR do EMR
Faça upload de um recurso do computador local para o DataStudio e referencie-o. Se utilizar um cluster DataLake, siga estas etapas para referenciar um recurso JAR do EMR. Caso um nó EMR Shell dependa de um recurso grande que não possa ser carregado pela página do DataWorks, armazene o recurso no HDFS e referencie-o no código.
-
Crie um recurso JAR do EMR.
Para mais informações, consulte Create and use EMR resources. Neste exemplo, o pacote JAR gerado em Prepare initial data and a JAR package está armazenado no diretório emr/jars. Na primeira vez que usar esse recurso, clique em Authorize e depois em Click Upload para carregar o recurso JAR.
-
Referencie o recurso JAR do EMR.
Abra o nó EMR Shell criado e acesse o editor de código.
Sob o nó , localize o Insert Resource Path desejado (por exemplo,
onaliyun_mr_wordcount-1.0-SNAPSHOT.jar), clique com o botão direito e selecione Insert Resource Path.-
A referência ao recurso adiciona uma instrução no formato
##@resource_reference{""}ao editor de código do nó EMR Shell, indicando que o recurso foi referenciado. Em seguida, execute os comandos abaixo. O pacote de recursos, o nome do bucket e o caminho nos comandos seguintes servem apenas para demonstração. 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/outputsNotaNão adicione comentários ao código de um nó EMR Shell.
Opção 2: Referenciar recursos do OSS
Configurar parâmetros de agendamento
Defina variáveis no código usando o formato ${variable_name}. Atribua valores a essas variáveis na seção Scheduling > Scheduling Parameter no painel à direita para passar parâmetros dinâmicos em tempo de execução. Para mais informações, consulte Supported formats for scheduling parameters. O código abaixo fornece um exemplo:
DD=`date`;
echo "hello world, $DD"
## You can use this with scheduling parameters.
echo ${var};
Se usar um cluster DataLake, as seguintes ferramentas de linha de comando também serão suportadas.
Comandos Shell: comandos Shell nos diretórios
/usr/bine/bin, como ls e echo.Componentes Yarn: hadoop, hdfs e yarn.
Componente Spark: spark-submit.
Componentes Sqoop: sqoop-export, sqoop-import e sqoop-import-all-tables.
Para usar componentes Sqoop com o ApsaraDB RDS, adicione o endereço IP do grupo de recursos à lista de permissões do ApsaraDB RDS.
Executar uma tarefa EMR Shell
-
Na barra de ferramentas, clique no ícone
. Na caixa de diálogo Parameter, selecione o grupo de recursos de agendamento criado e clique em Running.NotaPara acessar recursos de computação pela internet ou por uma VPC, use um grupo de recursos de agendamento aprovado no teste de conectividade para o recurso de computação. Para mais informações, consulte Network connectivity solutions.
Para alterar o grupo de recursos em execuções subsequentes da tarefa, clique no ícone Run with Parameters
e selecione outro grupo de recursos de agendamento.
Clique no ícone
para salvar o script Shell.-
(Opcional) Realize testes de fumaça (smoke testing).
Para realizar testes de fumaça no ambiente de desenvolvimento, execute-os antes ou depois de enviar o nó. Para mais informações, consulte Perform smoke testing.
Etapa 3: Configurar propriedades de agendamento
Para execução periódica da tarefa no nó, clique em Properties no painel de navegação à direita, na aba de configuração do nó, e defina as propriedades de agendamento da tarefa conforme seus requisitos de negócio. Para mais informações, consulte Overview.
Configure as propriedades Rerun attribute e Parent Nodes do nó antes de enviá-lo.
-
Para personalizar o ambiente do componente, crie uma custom image com base na imagem oficial
dataworks_emr_base_task_pode use it in DataStudio.Por exemplo, substitua pacotes JAR do Spark ou inclua
libraries,filesouJAR packagesespecíficos ao criar uma imagem personalizada.
Etapa 4: Implantar a tarefa
Após configurar uma tarefa em um nó, envie-a e implante-a. Em seguida, o sistema executa a tarefa regularmente com base nas configurações de agendamento.
Clique no ícone
na barra de ferramentas superior para salvar a tarefa.-
Clique no ícone
na barra de ferramentas superior para enviar a tarefa.Na caixa de diálogo Submit, configure o parâmetro Change description. Em seguida, decida se deseja revisar o código da tarefa após o envio, conforme seus requisitos de negócio.
NotaConfigure os parâmetros Rerun e Parent Nodes na aba Properties antes de enviar a tarefa.
Use o recurso de revisão de código para garantir a qualidade do código das tarefas e evitar erros de execução causados por código inválido. Se ativar a revisão de código, o código enviado só poderá ser implantado após aprovação na revisão. Para mais informações, consulte Code review.
Se utilizar um workspace no modo padrão, implante a tarefa no ambiente de produção após enviá-la. Para implantar uma tarefa em um nó, clique em Deploy no canto superior direito da aba de configuração do nó. Para mais informações, consulte Deploy a node.
Mais operações
Depois de enviar e implantar a tarefa, ela será executada periodicamente conforme as configurações de agendamento. Clique em Operation Center no canto superior direito da aba de configuração do nó correspondente para acessar o Operation Center e visualizar o status de agendamento da tarefa. Para mais informações, consulte Manage scheduled tasks.
Tópicos relacionados
Para saber como usar comandos Python 2 ou Python 3 para executar um script Python em um nó EMR Shell, consulte Run a Python script in a Shell-type node.
Para saber como usar a ferramenta OSSUtils em um nó EMR Shell, consulte Use ossutil to access OSS in a Shell-type node.