1. Visão geral
Com o Cloud Dataproc, um serviço Spark e Hadoop gerenciado, você pode usar ferramentas de dados de código aberto para processamento em lote, consultas, streaming e machine learning. A automação do Cloud Dataproc facilita a criação e o gerenciamento de clusters. Ela também gera economia porque permite desativar os clusters que não estão em uso. Com menos tempo e dinheiro gastos com administração, você pode se concentrar nos jobs e dados.
Este tutorial é uma adaptação de https://cloud.google.com/dataproc/overview
O que você vai aprender
- Como criar um cluster gerenciado do Cloud Dataproc, com o Apache Spark pré-instalado
- Como enviar um job do Spark
- Como redimensionar um cluster
- Como se conectar via SSH ao nó mestre de um cluster do Dataproc
- Como usar a gcloud para examinar clusters, jobs e regras de firewall
- Como encerrar o cluster
O que é necessário
Como você vai usar este tutorial?
Como você classificaria sua experiência com o uso dos serviços do Google Cloud Platform?
2. Configuração e requisitos
Configuração de ambiente autoguiada
- Faça login no Console do Cloud e crie um novo projeto ou reutilize um existente. Crie uma se você ainda não tiver uma conta do Gmail ou do G Suite.
Lembre-se do código do projeto, um nome exclusivo em todos os projetos do Google Cloud. O nome acima já foi escolhido e não servirá para você. Faremos referência a ele mais adiante neste codelab como PROJECT_ID
.
- Em seguida, será necessário ativar o faturamento no Console do Cloud para usar os recursos do Google Cloud.
A execução deste codelab não será muito cara, se for o caso. Siga todas as instruções na seção "Limpeza", que orienta você sobre como encerrar recursos para não incorrer em cobranças além deste tutorial. Novos usuários do Google Cloud estão qualificados para o programa de US$ 300 de avaliação sem custos.
3. Ative as APIs Cloud Dataproc e Google Compute Engine
Clique no ícone de menu no canto superior esquerdo da tela.
Selecione "API Manager" no menu suspenso.
Clique em Ativar APIs e serviços.
Pesquise "Compute Engine" na caixa de pesquisa. Clique em "API Google Compute Engine". na lista de resultados que aparece.
Na página do Google Compute Engine, clique em Ativar.
Depois de ativado, clique na seta apontando para a esquerda para voltar.
Agora procure "API Google Cloud Dataproc". e também o ativar.
4. Iniciar o Cloud Shell
O Cloud Shell é uma máquina virtual com base em Debian que contém todas as ferramentas de desenvolvimento necessárias. Ela oferece um diretório principal persistente de 5 GB, além de ser executada no Google Cloud. Isso aprimora o desempenho e a autenticação da rede. Isso significa que tudo que você precisa para este codelab é um navegador (sim, funciona em um Chromebook).
- Para ativar o Cloud Shell no Console do Cloud, basta clicar em Ativar o Cloud Shell . Leva apenas alguns instantes para provisionar e se conectar ao ambiente.
Depois de se conectar ao Cloud Shell, você já estará autenticado e o projeto estará configurado com seu PROJECT_ID
.
gcloud auth list
Resposta ao comando
Credentialed accounts: - <myaccount>@<mydomain>.com (active)
gcloud config list project
Resposta ao comando
[core] project = <PROJECT_ID>
Se, por algum motivo, o projeto não estiver definido, basta emitir o seguinte comando:
gcloud config set project <PROJECT_ID>
Quer encontrar seu PROJECT_ID
? Veja qual ID você usou nas etapas de configuração ou procure-o no painel do Console do Cloud:
O Cloud Shell também define algumas variáveis de ambiente por padrão, o que pode ser útil ao executar comandos futuros.
echo $GOOGLE_CLOUD_PROJECT
Resposta ao comando
<PROJECT_ID>
- Defina a zona padrão e a configuração do projeto:
gcloud config set compute/zone us-central1-f
É possível escolher uma variedade de zonas diferentes. Para mais informações, consulte Regiões e zonas.
5. Crie um cluster do Cloud Dataproc
Depois do lançamento do Cloud Shell, use a linha de comando para invocar o comando gcloud do SDK Cloud ou outras ferramentas disponíveis na instância da máquina virtual.
Escolha um nome de cluster para usar neste laboratório:
$ CLUSTERNAME=${USER}-dplab
Vamos começar criando um novo cluster:
$ gcloud dataproc clusters create ${CLUSTERNAME} \
--region=us-central1 \
--scopes=cloud-platform \
--tags codelab \
--zone=us-central1-c
As configurações padrão do cluster, que incluem dois nós de trabalho, devem ser suficientes para este tutorial. O comando acima inclui a opção --zone
para especificar a zona geográfica em que o cluster será criado e duas opções avançadas, --scopes
e --tags
, que são explicadas a seguir quando você usa os recursos ativados por elas. Consulte o comando gcloud dataproc clusters create
do SDK Cloud para informações sobre como usar sinalizações de linha de comando para personalizar configurações de cluster.
6. Envie um job do Spark para o cluster
É possível enviar um job por meio de uma solicitação jobs.submit
da API Cloud Dataproc, usando a ferramenta de linha de comando gcloud
ou pelo Console do Google Cloud Platform. Você também pode se conectar a uma instância de máquina no cluster usando SSH e depois executar um job a partir dessa instância.
Envie um job usando a ferramenta gcloud
na linha de comando do Cloud Shell:
$ gcloud dataproc jobs submit spark --cluster ${CLUSTERNAME} \
--class org.apache.spark.examples.SparkPi \
--jars file:///usr/lib/spark/examples/jars/spark-examples.jar -- 1000
Durante a execução do job, a saída vai aparecer na janela do Cloud Shell.
Interrompa a saída inserindo Ctrl+C. Isso interromperá o comando gcloud
, mas o job ainda estará em execução no cluster do Dataproc.
7. Listar jobs e reconectar
Imprimir uma lista de tarefas:
$ gcloud dataproc jobs list --cluster ${CLUSTERNAME}
O job enviado mais recentemente fica no topo da lista. Copie o ID do job e cole no lugar de "jobId
" no comando abaixo. O comando vai se reconectar ao job especificado e exibir a saída dele:
$ gcloud dataproc jobs wait jobId
Quando o job terminar, a saída incluirá uma aproximação do valor de Pi.
8. Redimensionar cluster
Para executar cálculos maiores, adicione mais nós ao cluster para acelerá-lo. O Dataproc permite adicionar e remover nós do cluster a qualquer momento.
Examine a configuração do cluster:
$ gcloud dataproc clusters describe ${CLUSTERNAME}
Aumente o cluster adicionando alguns nós preemptivos:
$ gcloud dataproc clusters update ${CLUSTERNAME} --num-secondary-workers=2
Examine o cluster novamente:
$ gcloud dataproc clusters describe ${CLUSTERNAME}
Além do workerConfig
da descrição original do cluster, agora há também um secondaryWorkerConfig
que inclui dois instanceNames
para os workers preemptivos. O Dataproc mostra o status do cluster como "Pronto" enquanto os novos nós estão sendo inicializados.
Como você começou com dois nós e agora tem quatro, os jobs do Spark serão executados duas vezes mais rápido.
9. SSH no cluster
Conecte-se via SSH ao nó mestre, cujo nome da instância é sempre o nome do cluster com -m
anexado:
$ gcloud compute ssh ${CLUSTERNAME}-m --zone=us-central1-c
Na primeira vez que você executar um comando SSH no Cloud Shell, ele vai gerar chaves SSH para sua conta. Você pode escolher uma senha longa ou usar uma em branco por enquanto e mudar mais tarde com ssh-keygen
, se quiser.
Na instância, verifique o nome do host:
$ hostname
Como você especificou --scopes=cloud-platform
quando criou o cluster, é possível executar comandos gcloud
nele. Liste os clusters no seu projeto:
$ gcloud dataproc clusters list
Saia da conexão SSH quando terminar:
$ logout
10. Examinar tags
Ao criar o cluster, você incluiu uma opção --tags
para adicionar uma tag a cada nó no cluster. As tags são usadas para anexar regras de firewall a cada nó. Você não criou regras de firewall correspondentes neste codelab, mas ainda é possível examinar as tags em um nó e as regras de firewall na rede.
Imprima a descrição do nó mestre:
$ gcloud compute instances describe ${CLUSTERNAME}-m --zone us-central1-c
Procure tags:
no final da saída e veja se ele inclui codelab
.
Imprima as regras de firewall:
$ gcloud compute firewall-rules list
Observe as colunas SRC_TAGS
e TARGET_TAGS
. Ao anexar uma tag a uma regra de firewall, é possível especificar que ela seja usada em todos os nós que a têm.
11. Encerrar o cluster
Para encerrar um cluster, envie uma solicitação clusters.delete
da API Cloud Dataproc, na linha de comando usando o executável gcloud dataproc clusters delete
ou no Console do Google Cloud Platform.
Vamos encerrar o cluster usando a linha de comando do Cloud Shell:
$ gcloud dataproc clusters delete ${CLUSTERNAME} --region us-central1
12. Parabéns!
Você aprendeu a criar um cluster do Dataproc, enviar um job do Spark, redimensionar um cluster, usar SSH para fazer login no nó mestre, usar a gcloud para examinar clusters, jobs e regras de firewall e encerrar seu cluster usando a gcloud.
Saiba mais
- Documentação do Dataproc: https://cloud.google.com/dataproc/overview
- Codelab Primeiros passos com o Dataproc usando o console
Licença
Este trabalho está sob a licença Atribuição 3.0 Genérica da Creative Commons e a licença Apache 2.0.