Como criar um Job no Cloud Dataproc

Nesta postagem, mostramos como usar criar um job do Cloud Dataproc, por linha de comando e no console do Google Cloud.


O que é Cloud Dataproc?

É a plataforma de big data totalmente gerenciado, para processar grandes quantidades de dados com rapidez, de forma econômica e em grande escala. Usando ferramentas de código aberto como o Apache Spark, o Apache Hive, o Apache Hadoop e o Apache Pig combinadas à escalabilidade dinâmica do Compute Engine e ao armazenamento escalável do Cloud Storage, o Dataproc oferece às equipes analíticas os mecanismos e a elasticidade para executar análises na escala de petabytes por uma fração do custo dos clusters locais tradicional, além  de ser facilmente incorporado a outros serviços do Google Cloud Platform (GCP).​

O que é um Job?

Dentro do Dataproc, o Job seria um código que é executado dentro de um cluster, atualmente são aceitos diversos tipos, entre eles os principais são:

·       Hadoop;
·       Spark;
·       SparkR;
·       PySpark;
·       Hive;
·       SparkSql;
·       Pig;
·    Presto.

 

Passo a Passo - Linha de comando

 

1. O primeiro passo a fazer é o login em sua conta do GCP, para este tutorial você vai precisar de uma conta que possua um projeto.

2. Vá até a barra superior e clique no ícone do Cloud Shell, igual a imagem abaixo.

3. Agora temos que preparar as variáveis de ambiente que usaremos nos outros passos:

 a)      Para definir a variável de região usaremos o código abaixo:

 export REGION=us-central1

 b)     Para definir a variável de Zona usaremos o código abaixo:

 export ZONE=us-central1-a

 4.  Nesse passo vamos definir o projeto a ser usado dentro do cloud shell, no campo [PROJECT_ID], insira o id do seu projeto:

 gcloud config set project [PROJECT_ID]

 5. Nesse passo vamos definir a Zona a ser usada dentro do cloud shell com base na variável que definimos antes:

 gcloud config set compute/zone $ZONE 

6. Nesse passo vamos definir a Região a ser usada dentro do cloud shell com base na variável que definimos antes:

gcloud config set compute/region $REGION

 7. Após isso vamos definir a variável PROJECT com o id do projeto:

 export PROJECT=$(gcloud info --format='value(config.project)')

8. Com o código abaixo a api do dataproc será habilitada, caso já esteja pode desconsiderar:

 gcloud services enable dataproc.googleapis.com sqladmin.googleapis.com

9. Caso não exista, crie um cluster do dataproc com o comando abaixo:

 gcloud dataproc clusters create meu-cluster \

    --image-version 1.3 \

            --region $REGION \

 --subnet default \

 --master-machine-type n1-standard-1 \

 --master-boot-disk-size 500 \

 --num-workers 2 \

 --worker-machine-type n1-standard-1 \

 --worker-boot-disk-size 500 \

 --project $PROJECT

 Observações:

        A propriedade “subnet” faz referência a sub-rede que usaremos no cluster.

 A propriedade “master-machine-type” permite selecionar o tipo de máquina a ser usado pelo master.

A propriedade “worker-machine-type” permite selecionar o tipo de máquina a ser usado pelos workes.

A propriedade “project” especifica em qual projeto será criado o cluster.

 10. Neste passo vamos gerar um job que vai criar uma tabela no hive:

 gcloud dataproc jobs submit hive \

    --cluster meu-cluster \

    --region $REGION \

    --execute "CREATE TABLE teste

      (dt_teste DATE, id DOUBLE, nm_teste STRING)

      STORED AS PARQUET"

 Observações:

·        A propriedade “submit” faz referência ao tipo de job que vamos executar, pode-se substituir o valor “hive” por “spark” ou “spark-sql” por exemplo.

 ·        A propriedade “cluster” faz referência ao cluster que executaremos o job.

 ·        A propriedade “region” faz referência a região em que o cluster está.

 ·        A propriedade “execute” contêm o comando a ser executado, nesse caso a instrução de create.

 O retorno será semelhante a imagem abaixo:


 Passo a Passo – Console

 1. O primeiro passo a fazer é o login em sua conta do GCP, para este tutorial você vai precisar de uma conta que possua um projeto.

2. Vá até a barra superior e clique no ícone do Menu, igual a imagem abaixo.


3. Na lista que vai aparecer, selecione “Dataproc”:


 4.  Caso não existe nenhum cluster criado, clique em “CRIAR CLUSTER”:

 

5. Digite um nome para seu cluster, selecione a região, zona, modo de cluster, quantidade de nós:

 

 6. Após definir clique em criar:


7. Quando o cluster for criado selecione “Jobs”: 


 

8. Selecione “Enviar Job”: 


 9. Preencha as informações do seu job e clique em “Enviar” no fim da página: 



As propriedades são:

  •         ID do job – identificador do job dentro do dataproc.
·        Região Seleciona a região em que o nosso cluster está criado. É necessário selecionar a região correta para que a opção “Cluster” seja desbloqueada.
·        Cluster – O nome do Cluster que será executado o Job.
·        Tipo de jobDefine qual será o tipo de job a ser executado, exemplo: Hive, Spark ou Pig.
·        Tipo de origem de consultaPossui duas opções:
1.      “Arquivo de consulta” - Um arquivo externo que contém o código que será executado.
2.      “Texto de consulta” – Aparecerá um campo abaixo para colocar o código direto no Job, semelhante ao campo “execute” da linha de comando.
·        Continuar em caso de falhaCaso outro Job tenha uma dependência deste, permite selecionar se deve ou não continuar a malha de execução.
·        Arquivos jar Arquivos necessários para a execução. 

Neste exemplo podemos executar o comando “SHOW DATABASES” do Hive: 


10. Clique no Id do seu job:

 

11. Na tela abaixo podemos ver o Log da execução ou obter o código para executar na linha de comando:


Referências

·        Using Apache Hive on Cloud Dataproc

https://cloud.google.com/solutions/using-apache-hive-on-cloud-dataproc

·        Dataproc documentation

https://cloud.google.com/dataproc/docs

·        Submit a job

https://cloud.google.com/dataproc/docs/guides/submit-job