|
Nesta postagem, mostramos como usar o fluxo de trabalho(workflow) do Cloud Dataproc, dentro do Google Cloud. |
É 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.
O que é
um Workflow?
O fluxo
de trabalho do Dataproc é um conjunto de Jobs que podem ter ou não uma dependência/sequência
entre si, de certa forma, é executada um grafo acÃclico dirigido (DAG).
O uso de Workflow é recomendado para processos complexos que tenham dependências entre os Jobs.
O que é
um Workflow Template?
O modelo
de fluxo de trabalho permite utilizar os fluxos de trabalho de forma reutilizável.
É
possÃvel criar ou selecionar um cluster para execução, permite criação de parâmetros.
Possui quatro tipos:
·
Cluster gerenciado:
Permite usar
um cluster gerenciado para execução dos Jobs.
Com essa
opção o Workflow vai criar esse cluster "efêmero" e após a conclusão
do processo, exclui-lo
·
Seletor do cluster:
Permite
selecionar um cluster que já exista e ao final do processo ele não será excluÃdo.
·
Parametrizado:
Permite o
uso parâmetros de execução, é recomendado caso o workflow execute várias vezes
com valores diferentes.
·
Inline:
Permite
criar o cluster através de arquivos YAML.
Passo a Passo
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:
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 Workflow template:
gcloud dataproc workflow-templates create meu_template --region $REGION
Observação:
· Na propriedade “create” definimos o valor do nosso template_id.
11. Neste passo vamos selecionar um cluster para execução do Workflow template:
gcloud dataproc workflow-templates set-cluster-selector
meu_template \
--cluster-labels goog-dataproc-cluster-name=meu-cluster \
--region $REGION
Observações
·
Na propriedade “set-cluster-selector” colocamos o template_id.
·
A propriedade “cluster-labels goog-dataproc-cluster-name” se
refere ao nome do cluster que usaremos.
· A propriedade “region” se refere a região em que nosso cluster está.
12. Neste passo vamos adicionar um job de Hive no nosso template, esse job irá criar uma tabela externa:
gcloud dataproc workflow-templates add-job hive \
--step-id cria_tabela \
--region $REGION \
--execute "CREATE EXTERNAL
TABLE tb_transactions (SubmissionDate DATE, TransactionAmount DOUBLE,
TransactionType STRING) STORED AS PARQUET LOCATION
'gs://$PROJECT-warehouse/datasets/transactions';" \
--workflow-template meu_template
Observações:
·
A propriedade “step-id” é o id do nosso job.
·
A propriedade “workflow-template” faz referência ao template_id do
nosso template.
·
A propriedade “execute” contêm o comando a ser executado, nesse
caso a instrução de create.
13. Neste passo vamos adicionar um job de Hive no nosso template, esse job irá ser executado após criar uma tabela externa:
gcloud dataproc workflow-templates add-job hive \
--step-id select_tabela \
--region $REGION \
--start-after cria_tabela \
--execute "select
* from tb_transactions;" \
--workflow-template
meu_template
·
A propriedade “start-after” é o id do job anterior, ou seja, esse
só pode iniciar após o termino do job.
14. Neste passo vamos adicionar um job de Hive no nosso template, esse job irá ser executado após criar e consultar uma tabela externa:
gcloud dataproc workflow-templates add-job hive \
--step-id dropa_tabela \
--region $REGION \
--start-after cria_tabela,select_tabela
\
--execute "drop
table tb_transactions;" \
--workflow-template meu_template
Observações:
·
Na propriedade “start-after” para adicionar mais de um job use
virgula como delimitador.
gcloud dataproc workflow-templates instantiate meu_template --region
$REGION
17. Nessa tela vai aparecer a ordem de execução dos Jobs com a dependência, se clicar no Id do Job o Log de execução aparecerá:
18. Ao rodar novamente o template, use o comando abaixo para listar as
operações em execução:
gcloud dataproc operations list --filter
"labels.goog-dataproc-operation-type=WORKFLOW AND
status.state=RUNNING" --region
$REGION
gcloud dataproc workflow-templates delete meu_template --region $REGION
·
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
·
Overview of Dataproc Workflow Templates
https://cloud.google.com/dataproc/docs/concepts/workflows/overview
·
Using workflows
https://cloud.google.com/dataproc/docs/concepts/workflows/using-workflows





