Este tópico explica como fazer logon no console do E-MapReduce (EMR) com sua conta Alibaba Cloud, criar um cluster EMR on ACK e executar um job.
Observações
Você é responsável por gerenciar e configurar o ambiente de execução do seu código.
-
Nos exemplos deste tópico, o arquivo JAR vem empacotado diretamente na imagem. Caso utilize seu próprio arquivo JAR, envie-o para o Object Storage Service (OSS). Para obter mais informações, consulte Simple upload.
Substitua
local:///opt/spark/examples/spark-examples.jarno comando pelo caminho do OSS referente ao seu arquivo JAR. O formato do caminho éoss://<yourBucketName>/<path>.jar.
Pré-requisitos
Antes de criar um cluster EMR on ACK, execute as etapas a seguir no console do Container Service for Kubernetes (ACK):
Crie um cluster Kubernetes. Para obter mais informações, consulte Create an ACK dedicated cluster (new instances no longer available) ou Create an ACK managed cluster.
Anexe as políticas AliyunOSSFullAccess e AliyunDLFFullAccess. Para obter mais informações, consulte Grant OSS and DLF policies.
Para armazenar arquivos JAR no Object Storage Service (OSS), ative primeiro o OSS. Para obter mais informações, consulte Activate OSS.
Etapa 1: Conceder permissões de função
Antes de usar o EMR on ACK, conceda a função padrão do sistema AliyunEMROnACKDefaultRole à sua conta Alibaba Cloud no console do EMR on ACK. Para obter mais informações, consulte Grant role permissions to an Alibaba Cloud account.
Etapa 2: Criar um cluster
Crie um cluster Spark no Kubernetes. Para obter mais informações sobre a criação de clusters, consulte Create a cluster.
Faça logon no console do EMR on ACK.
Na página EMR on ACK, clique em Create Cluster.
-
Na página E-MapReduce on ACK, configure os parâmetros do cluster.
Parâmetro
Exemplo
Descrição
Region
China (Hangzhou)
Região de implantação do cluster. Não é possível alterar a região após a criação.
Cluster Type
Spark
Motor distribuído de processamento de big data de uso geral que oferece recursos como ETL, processamento em lote offline e modelagem de dados.
ImportanteAo associar um cluster Spark recém-criado a um cluster Shuffle Service, a versão principal do product deve corresponder à do cluster Shuffle Service. Por exemplo, um cluster Spark EMR-5.x-ack só pode se associar a um cluster Shuffle Service EMR-5.x-ack.
Product Version
EMR-5.6.0-ack
Versão de software mais recente usada por padrão.
Component Version
SPARK (3.2.1)
Componentes e respectivas versões disponíveis para o tipo de cluster selecionado.
ACK cluster
Emr-ack
Selecione um cluster ACK existente ou crie um novo no console do ACK.
ImportanteUm cluster ACK não pode se associar a vários clusters EMR on ACK do mesmo tipo.
Clique em Configure Dedicated Nodes para configurar nós dedicados ao EMR. Essa ação adiciona taints e rótulos específicos do EMR a um pool de nós ou a nós específicos.
NotaRecomendamos configurar nós dedicados por meio de um pool de nós. Caso não exista nenhum, crie um. Para obter mais informações, consulte Create a node pool e Node pools.
OSS bucket
oss-spark-test
Selecione um bucket existente ou crie um no console do Object Storage Service (OSS).
Cluster Name
Emr-Spark
Nome do cluster. Deve ter entre 1 e 64 caracteres e pode conter caracteres chineses, letras, dígitos, hifens (-) e sublinhados (_).
-
Clique em create.
A criação do cluster termina quando o status muda para Running.
Etapa 3: Enviar um job
Esta seção demonstra como enviar um job Spark usando uma Custom Resource Definition (CRD). Para saber mais sobre o Spark, consulte a documentação de código source Quick Start e selecione a linguagem e a versão adequadas.
Para obter mais informações sobre o envio de jobs, consulte os seguintes tópicos:
Conecte-se a um cluster do Alibaba Cloud Container Service for Kubernetes (ACK) usando kubectl. Para obter mais informações, consulte Connect to an ACK cluster using kubectl.
-
Crie um arquivo de job chamado spark-pi.yaml. O código a seguir mostra o conteúdo do arquivo:
apiVersion: "sparkoperator.k8s.io/v1beta2" kind: SparkApplication metadata: name: spark-pi-simple spec: type: Scala sparkVersion: 3.2.1 mainClass: org.apache.spark.examples.SparkPi mainApplicationFile: "local:///opt/spark/examples/spark-examples.jar" arguments: - "1000" driver: cores: 1 coreLimit: 1000m memory: 4g executor: cores: 1 coreLimit: 1000m memory: 8g memoryOverhead: 1g instances: 1Para obter informações sobre os campos no código, consulte spark-on-k8s-operator.
NotaÉ possível especificar um nome de arquivo personalizado. Neste exemplo, usa-se spark-pi.yaml.
Este exemplo utiliza o Spark 3.2.1 para o EMR V5.6.0. Se você usar outra versão do Spark, configure o parâmetro sparkVersion conforme suas necessidades de negócio.
-
Execute o comando a seguir para enviar um job:
kubectl apply -f spark-pi.yaml --namespace <Namespace in which the cluster resides>Substitua
<Namespace in which the cluster resides>pelo namespace adequado às suas necessidades de negócio. Para visualizar o namespace, faça logon no console do EMR e acesse a aba Cluster Details.O sistema retorna as seguintes informações:
sparkapplication.sparkoperator.k8s.io/spark-pi-simple createdNotaspark-pi-simpleé o nome do job Spark enviado. Opcional. Visualize as informações sobre o job Spark enviado na aba Job Details.
(Opcional) Etapa 4: Liberar o cluster
Se o cluster não for mais necessário, libere-o para reduzir custos.
Na página EMR on ACK, localize o cluster e clique em Release na coluna Actions.
Na caixa de diálogo Release Cluster, clique em OK.
Documentos relacionados
Consulte um resumo dos seus clusters: View cluster information.
Verifique os jobs do seu cluster: View the job list.