Antes de começar
- É preciso ter criado um cluster zonal ou regional padrão (não do Autopilot) do Google Kubernetes Engine (GKE) que tenha a Identidade da carga de trabalho ativada no cluster.
Criar um cluster virtual do Dataproc no GKE
Um cluster virtual do Dataproc no GKE é criado como a plataforma de implantação de componentes do Dataproc. É um recurso virtual e, ao contrário de um cluster do Dataproc no Compute Engine, não inclui VMs mestre e de trabalho do Dataproc.
O Dataproc no GKE cria pools de nós em um cluster do GKE quando você cria um cluster virtual do Dataproc no GKE.
Os jobs do Dataproc no GKE são executados como pods nesses pools de nós. Os pools de nós e a programação de pods neles são gerenciados pelo GKE.
Crie vários clusters virtuais. É possível criar e executar vários clusters virtuais em um cluster do GKE para melhorar a utilização de recursos compartilhando pools de nós entre os clusters virtuais.
- Cada cluster virtual:
- propriedades separadas, como a versão do mecanismo Spark e a identidade da carga de trabalho,
- é isolado em um namespace do GKE separado no cluster do GKE,
- Cada cluster virtual:
Console
No console do Google Cloud, acesse a página Clusters do Dataproc.
Clique em Criar cluster.
Na caixa de diálogo Criar cluster do Dataproc, clique em Criar na linha Cluster no GKE.
No painel Configurar cluster:
- No campo Nome do cluster, insira o nome do cluster.
- Na lista Região, selecione uma região para o cluster virtual do Dataproc no GKE. Essa região precisa ser a mesma em que o cluster do GKE atual está localizado, que você vai selecionar no próximo item.
- No campo Cluster do Kubernetes, clique em Procurar para selecionar a região em que o cluster do GKE atual está localizado.
- Opcional: no campo Bucket de preparo do Cloud Storage, clique em Procurar para selecionar um bucket atual do Cloud Storage. O Dataproc no GKE vai organizar os artefatos no bucket. Ignore esse campo para que o Dataproc no GKE crie um bucket de preparo.
No painel à esquerda, clique em Configurar pools de nós e, no painel Pools de nós, clique em Adicionar um pool.
- Para reutilizar um pool de nós atual do Dataproc no GKE:
- Clique em Reutilizar pool de nós atual.
- Insira o nome do pool de nós atual e selecione o Papel correspondente. Pelo menos um pool de nós precisa ter o papel DEFAULT.
- Clique em Concluído.
- Para criar um novo pool de nós do Dataproc no GKE:
- Clique em Criar um novo pool de nós.
- Insira os seguintes valores do pool de nós:
- Nome do pool de nós
- Papel: pelo menos um pool de nós precisa ter o papel DEFAULT.
- Local: especifique uma zona na região do cluster do Dataproc no GKE.
- Tipo de máquina do pool de nós
- Plataforma de CPU
- Preempção
- Mín.: contagem mínima de nós.
- Máx.: contagem máxima de nós. A contagem máxima de nós precisa ser maior que 0.
- Clique em Adicionar um pool para incluir mais pools de nós. Todos os pools de nós precisam ter o local. É possível adicionar um total de quatro pools de nós.
- Para reutilizar um pool de nós atual do Dataproc no GKE:
(Opcional) Se você configurou um servidor de histórico permanente do Dataproc (PHS, na sigla em inglês) para ver o histórico de jobs do Spark em clusters ativos e excluídos do Dataproc no GKE, clique em Personalizar cluster. Em seguida, no campo Cluster do servidor do histórico, procure e escolha o cluster do PHS. O cluster do PHS precisa estar localizado na mesma região que o cluster virtual do Dataproc no GKE.
Clique em Criar para criar o cluster do Dataproc. O Dataproc no cluster do GKE aparece em uma lista na página Clusters. O status dele será Provisionando até que o cluster esteja pronto para uso. Depois, o status mudará para Em execução.
gcloud
Defina as variáveis de ambiente e execute o comando gcloud dataproc clusters gke create
localmente ou no Cloud Shell para criar um cluster do Dataproc no GKE.
Defina as variáveis de ambiente:
DP_CLUSTER=Dataproc on GKE cluster-name \ REGION=region \ GKE_CLUSTER=GKE cluster-name \ BUCKET=Cloud Storage bucket-name \ DP_POOLNAME=node pool-name PHS_CLUSTER=Dataproc PHS server name
Observações:DP_CLUSTER
: define o nome do cluster virtual do Dataproc, que precisa começar com uma letra minúscula, seguida de até 54 letras minúsculas, números ou hifens. Ele e não pode terminar com um hífen.REGION
: o region precisa ser o mesmo da região em que o cluster do GKE está localizado.GKE_CLUSTER
: o nome do cluster atual do GKE.BUCKET
: (opcional) é possível especificar o nome de um bucket do Cloud Storage, que o Dataproc usará para organizar artefatos. Se você não especificar um bucket, o Dataproc no GKE criará um bucket de preparo.DP_POOLNAME
: o nome de um pool de nós que será criado no cluster do GKE.PHS_CLUSTER
: (opcional) Servidor PHS do Dataproc a ser usado para visualizar o histórico de jobs do Spark em clusters ativos e excluídos do Dataproc no GKE. O cluster do PHS precisa estar localizado na mesma região que o cluster virtual do Dataproc no GKE.
Execute o comando:
gcloud dataproc clusters gke create ${DP_CLUSTER} \ --region=${REGION} \ --gke-cluster=${GKE_CLUSTER} \ --spark-engine-version=latest \ --staging-bucket=${BUCKET} \ --pools="name=${DP_POOLNAME},roles=default" \ --setup-workload-identity \ --history-server-cluster=${PHS_CLUSTER}
Observações:--spark-engine-version
: a versão da imagem do Spark usada no cluster do Dataproc. É possível usar um identificador, como3
,3.1
oulatest
, ou especificar a versão subsecundária completa, como3.1-dataproc-5
.--staging-bucket
: exclua essa sinalização para que o Dataproc no GKE crie um bucket de preparo.--pools
: essa sinalização é usada para especificar um pool de nós novo ou atual que o Dataproc criará ou usará para executar a carga de trabalho. Liste as configurações do pool de nós do Dataproc no GKE separadas por vírgulas, por exemplo:--pools=name=dp-default,roles=default,machineType=e2-standard-4,min=0,max=10
É preciso especificar o pool de nósname
erole
. Outras configurações do pool de nós são opcionais. É possível usar várias sinalizações--pools
para especificar vários pools de nós. Pelo menos um pool de nós precisa ter o papeldefault
. Todos os pools de nós precisam estar no mesmo local.--setup-workload-identity
: essa sinalização ativa as vinculações da Identidade da carga de trabalho. Essas vinculações permitem que as contas de serviço do Kubernetes (KSAs, na sigla em inglês) atue como a conta de serviço da VM do Dataproc (identidade do plano de dados) padrão do cluster virtual.
REST
Conclua uma
virtualClusterConfig
como parte de uma solicitação
cluster.create
da API Dataproc.
Antes de usar os dados da solicitação, faça as substituições a seguir:
- PROJECT: ID do projeto do Google Cloud
- REGION: região do cluster virtual do Dataproc (mesma região do cluster do GKE atual)
- DP_CLUSTER: nome do cluster do Dataproc
- GKE_CLUSTER: nome do cluster do GKE
- NODE_POOL: nome do pool de nós
- PHS_CLUSTER: nome do cluster do servidor de histórico permanente (PHS, na sigla em inglês)
- BUCKET: (opcional) nome do bucket de preparo. Deixe em branco para que o Dataproc no GKE crie um bucket de preparo.
Método HTTP e URL:
POST https://dataproc.googleapis.com/v1/projects/project-id/regions/region/clusters
Corpo JSON da solicitação:
{ "clusterName":"DP_CLUSTER", "projectId":"PROJECT", "virtualClusterConfig":{ "auxiliaryServicesConfig":{ "sparkHistoryServerConfig":{ "dataprocCluster":"projects/PROJECT/regions/REGION/clusters/PHS_CLUSTER" } }, "kubernetesClusterConfig":{ "gkeClusterConfig":{ "gkeClusterTarget":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER", "nodePoolTarget":[ { "nodePool":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER/nodePools/NODE_POOL", "roles":[ "DEFAULT" ] } ] }, "kubernetesSoftwareConfig":{ "componentVersion":{ "SPARK":"latest" } } }, "stagingBucket":"BUCKET" } }
Para enviar a solicitação, expanda uma destas opções:
Você receberá uma resposta JSON semelhante a esta:
{ "projectId":"PROJECT", "clusterName":"DP_CLUSTER", "status":{ "state":"RUNNING", "stateStartTime":"2022-04-01T19:16:39.865716Z" }, "clusterUuid":"98060b77-...", "statusHistory":[ { "state":"CREATING", "stateStartTime":"2022-04-01T19:14:27.340544Z" } ], "labels":{ "goog-dataproc-cluster-name":"DP_CLUSTER", "goog-dataproc-cluster-uuid":"98060b77-...", "goog-dataproc-location":"REGION", "goog-dataproc-environment":"prod" }, "virtualClusterConfig":{ "stagingBucket":"BUCKET", "kubernetesClusterConfig":{ "kubernetesNamespace":"dp-cluster", "gkeClusterConfig":{ "gkeClusterTarget":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER", "nodePoolTarget":[ { "nodePool":"projects/PROJECT/locations/REGION/clusters/GKE_CLUSTER/nodePools/NODE_POOL", "roles":[ "DEFAULT" ] } ] }, "kubernetesSoftwareConfig":{ "componentVersion":{ "SPARK":"3.1-..." }, "properties":{ "dpgke:dpgke.unstable.outputOnly.endpoints.sparkHistoryServer":"https://...", "spark:spark.eventLog.dir":"gs://BUCKET/.../spark-job-history", "spark:spark.eventLog.enabled":"true" } } }, "auxiliaryServicesConfig":{ "sparkHistoryServerConfig":{ "dataprocCluster":"projects/PROJECT/regions/REGION/clusters/PHS_CLUSTER" } } }
Enviar um job do Spark
Depois que o cluster virtual do Dataproc no GKE estiver em execução,
envie um job do Spark
usando o Console do Google Cloud, a
CLI gcloud ou a
API Dataproc
jobs.submit
(usando solicitações HTTP diretas ou as
bibliotecas de cliente do Cloud).
Exemplo de job do Spark na gcloud CLI:
gcloud dataproc jobs submit spark \ --region=${REGION} \ --cluster=${DP_CLUSTER} \ --class=org.apache.spark.examples.SparkPi \ --jars=local:///usr/lib/spark/examples/jars/spark-examples.jar \ -- 1000
Exemplo de job do PySpark para a CLI gcloud:
gcloud dataproc jobs submit pyspark \ --region=${REGION} \ --cluster=${DP_CLUSTER} \ local:///usr/lib/spark/examples/src/main/python/pi.py \ -- 10
Exemplo de job do SparkR na CLI gcloud:
gcloud dataproc jobs submit spark-r \ --region=${REGION} \ --cluster=${DP_CLUSTER} \ local:///usr/lib/spark/examples/src/main/r/dataframe.R
Limpar
Exclua os recursos a seguir usados neste guia de início rápido que você não quer continuar usando.
Exclua os pools de nós usados pelo cluster do Dataproc no GKE.