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_pode 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,filesouJAR packagesespecí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.
NotaSem 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 odeploy-modecomocluster. Evite o modoclient.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
-
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.
-
Crie um recurso JAR do EMR.
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.Selecione um Storage Path, Data Sources e Resource Group.
Clique em Save.
Para Storage Path, selecione HDFS.
-
Referencie o recurso JAR do EMR.
Abra o nó EMR Shell criado e acesse a página do editor de código.
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.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/outputsNotaNã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
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};NotaClusters DataLake também oferecem suporte às seguintes ferramentas de linha de comando.
Comandos Shell: Comandos localizados em
/usr/bine/bin, como ls e echo.Componentes YARN:
hadoop,hdfseyarn.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
-
Na seção Run Configuration, configure o Compute Resource e o Resource Group.
NotaDefina 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.
Na barra de ferramentas, clique em Run para executar a tarefa Shell.
-
-
Configure as propriedades de agendamento para executar a tarefa do nó periodicamente. Consulte Configurar propriedades de agendamento para um nó para orientações detalhadas.
NotaCaso precise personalizar o ambiente de componentes, crie uma imagem personalizada baseada na imagem oficial
dataworks_emr_base_task_pode 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,filesouJAR packagesespecíficos. Após configurar o nó, faça o deploy. Consulte Fazer deploy de nós e workflows para mais detalhes.
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
Para executar scripts Python em um nó EMR Shell usando comandos Python 2 ou Python 3, consulte Executar scripts Python em nós do tipo Shell.
Para usar a ferramenta ossutil em um nó EMR Shell, consulte Usar ossutil em nós do tipo Shell.