Os nós EMR Shell no DataWorks executam scripts Shell personalizados para operações avançadas, como processamento de dados, chamada de componentes Hadoop e gerenciamento de arquivos.
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 utilize-a no Data Studio. Para mais informações, consulte Create a custom image e Use images in data development.Por exemplo, ao criar uma imagem personalizada, substitua pacotes JAR do Spark ou adicione dependências de
libraries,filesouJAR packagesespecíficos. Crie um cluster Alibaba Cloud EMR e registre-o no DataWorks. Para mais informações, consulte New Data Studio: Attach an EMR compute resource.
-
(Opcional, para usuários RAM) Adicione o usuário do Resource Access Management (RAM) destinado ao desenvolvimento de tarefas ao workspace e atribua a ele a função Development ou Workspace Administrator (esta função inclui permissões amplas; conceda-a com cautela). Para mais informações, consulte Add workspace members.
Se você estiver usando uma conta root, pule esta etapa.
Limitações
Os nós EMR Shell podem ser executados apenas em um serverless resource group (recomendado) ou em um grupo de recursos exclusivo para agendamento. O uso de imagem personalizada para 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. Para mais informações, consulte Configure EMR-HOOK for Hive.
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.
Para tarefas enviadas com
spark-submit, defina odeploy-modecomocluster. O modoclientnão é recomendado.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 EMR, o sistema não oferece suporte à leitura direta do status de recursos do cluster EMR. Portanto, envie previamente para o DataWorks quaisquer recursos necessários. Para mais informações, consulte Resource Management.
Os nós EMR Shell não oferecem suporte à execução de arquivos Python. Utilize um Shell node para essa finalidade.
Procedimento
-
No editor de nós EMR Shell, execute as operações a seguir.
Desenvolver código Shell
Escolha uma opção conforme sua necessidade:
Opção 1: Enviar e referenciar JAR do EMR
Envie recursos da sua máquina local para o Data Studio e faça referência a eles. Para um cluster DataLake, siga estas etapas para referenciar um recurso JAR do EMR. Caso o recurso seja muito grande para envio pela interface do DataWorks, armazene-o no HDFS e referencie-o no seu código.
-
Crie um recurso JAR do EMR.
Para mais informações, consulte Resource Management. Armazene o pacote JAR gerado em Prepare initial data and a JAR package 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 que deseja referenciar em Resource Management (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 aparece na página de edição de código do nó EMR Shell, indicando que o recurso foi referenciado com êxito. Execute o comando abaixo, substituindo o pacote de recursos, o nome do bucket e o caminho pelos seus valores 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 utilizando OSS REF. Durante a execução do nó EMR, o DataWorks carrega automaticamente os recursos do OSS para a máquina local.
ossref://{endpoint}/{bucket}/{object}Endpoint: O endpoint de acesso público para o OSS. Se este parâmetro for deixado vazio, o bucket do OSS deve estar na mesma região do cluster EMR.
bucket: Nome do bucket, que funciona como um contêiner para armazenar objetos no OSS. Cada bucket possui um nome único. Acesse o OSS console para visualizar todos os buckets da conta atual.
object: O objeto específico, como um nome de arquivo ou caminho, armazenado no bucket.
Exemplo
Configurar parâmetros de agendamento do EMR Shell
Defina variáveis no editor Shell usando o formato ${variable_name} e atribua valores na seção Scheduling Parameters, dentro de Scheduling Settings, no lado direito do editor de nós. Isso permite passar parâmetros dinamicamente durante execuções agendadas. Para mais informações, consulte Sources and expressions of scheduling parameters. Exemplo:
DD=`date`; echo "hello world, $DD" ## Can be used with scheduling parameters echo ${var};NotaAo utilizar um cluster DataLake, as seguintes ferramentas de linha de comando também têm suporte:
Comandos Shell: Comandos Shell 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.
NotaTambém é possível definir CUs for Scheduling conforme os recursos necessários para a execução da tarefa. A CU padrão é
0.25.Selecione uma Image adequada aos requisitos da sua tarefa.
Para acessar uma source de dados em rede pública ou em ambiente VPC, utilize um grupo de recursos de agendamento com conectividade à source de dados. Para mais informações, consulte Network connectivity solutions.
Na barra de ferramentas, clique em Run para executar a tarefa Shell.
-
-
Para executar o nó periodicamente, configure suas propriedades de agendamento. Para mais informações, consulte Configure scheduling properties for a node.
NotaCaso precise personalizar o ambiente de componentes, crie uma custom image baseada na imagem oficial
dataworks_emr_base_task_pode use the image in Data Development.Por exemplo, ao criar uma imagem personalizada, substitua pacotes JAR do Spark ou adicione dependências de
libraries,filesouJAR packagesespecíficos. Implante o nó. Para mais informações, consulte Deploy nodes and workflows.
Visualize o status de execução no Operation Center. Para mais informações, consulte Get started with Operation Center.
Perguntas frequentes
P: Um mapeamento de hosts foi configurado no grupo de recursos de agendamento legado, mas o nó EMR Shell ainda relata falha de resolução. Como resolver?
R: Reinicialize 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, em seguida, clique em Re-initialize na caixa de diálogo.
Documentação relacionada
Para executar scripts Python em um nó EMR Shell usando Python 2 ou Python 3, consulte Run Python scripts on Shell-type nodes.
Para usar o ossutil em um nó EMR Shell, consulte Use ossutil on Shell-type nodes.