Visão geral do Dataflow

O Dataflow é um serviço do Google Cloud que fornece processamento unificado de dados de stream e em lote em escala. Use o Dataflow para criar pipelines de dados que leiam uma ou mais fontes, transformem os dados e gravem os dados em um destino.

Os casos de uso comuns do Dataflow são os seguintes:

  • Movimento de dados: ingestão ou replicação de dados em subsistemas
  • ETL (extract-transform-load) fluxos de trabalho que ingerem dados em um armazenamento de dados como o BigQuery.
  • Potencialização de painéis de BI.
  • Aplicação de ML em tempo real aos dados de streaming.
  • Processamento de dados do sensor ou registro de dados em escala.

O Dataflow usa o mesmo modelo de programação para análise em lote e de stream. Os pipelines de streaming podem atingir uma latência muito baixa. É possível ingerir, processar e analisar volumes flutuantes de dados em tempo real. Por padrão, o Dataflow garante o processamento exato de cada registro. Para pipelines de streaming que toleram cópias, geralmente é possível reduzir o custo e melhorar a latência ativando o modo pelo menos uma vez.

Vantagens do Dataflow

Esta seção descreve algumas das vantagens de usar o Dataflow.

Gerenciado

O Dataflow é um serviço totalmente gerenciado. Isso significa que o Google gerencia todos os recursos necessários para executar o Dataflow. Quando você executa um job do Dataflow, o serviço aloca um pool de VMs de worker para executar o pipeline. Não é preciso provisionar ou gerenciar essas VMs. Quando o job é concluído ou cancelado, o Dataflow exclui as VMs automaticamente. Você será cobrado pelos recursos de computação que seu job usa. Para mais informações sobre custos, consulte Preços do Dataflow.

Escalonável

O Dataflow foi projetado para aceitar pipelines em lote e de streaming em grande escala. Os dados são processados em paralelo para que o trabalho seja distribuído em várias VMs.

O Dataflow pode ser escalonado automaticamente provisionando VMs extras de worker ou encerrando algumas delas se forem necessárias. Ele também otimiza o trabalho com base nas características do pipeline. Por exemplo, o Dataflow pode reequilibrar dinamicamente o trabalho entre as VMs para que o trabalho paralelo seja concluído com mais eficiência.

Portátil

O Dataflow é baseado no projeto de código aberto Apache Beam. O Apache Beam permite escrever pipelines usando um SDK específico da linguagem. No momento, o Apache Beam é compatível com SDKs do Java, Python e Go, além de pipelines em várias linguagens.

Dataflow executa pipelines do Apache Beam. Se, posteriormente, você decidir executar o pipeline em uma plataforma diferente, como Apache Flink ou Apache Spark, será possível fazer isso sem reescrever o código do pipeline.

Flexível

Você pode usar o Dataflow para pipelines relativamente simples, como mover dados. No entanto, ele também é adequado para aplicativos mais avançados, como análise de streaming em tempo real. Uma solução criada no Dataflow pode crescer de acordo com suas necessidades conforme você migra do lote para o streaming ou encontra casos de uso mais avançados.

O Dataflow é compatível com várias maneiras diferentes de criar e executar pipelines, dependendo das suas necessidades:

  • Escreva o código usando os SDKs do Apache Beam.

  • Implantar um modelo do Dataflow. Com os modelos, é possível executar pipelines predefinidos. Por exemplo, um desenvolvedor pode criar um modelo e, em seguida, um cientista de dados pode implantá-lo sob demanda.

    O Google também fornece uma biblioteca de modelos para cenários comuns. É possível implantar esses modelos sem conhecer os conceitos de programação do Apache Beam.

  • Use os notebooks do JupyterLab para desenvolver e executar pipelines de maneira iterativa.

Observável

É possível monitorar o status dos jobs do Dataflow por meio da interface de monitoramento do Dataflow no Console do Google Cloud. A interface de monitoramento inclui uma representação gráfica do pipeline, mostrando o progresso e os detalhes de execução de cada estágio do pipeline. A interface de monitoramento facilita a detecção de problemas como gargalos ou alta latência. Também é possível criar um perfil dos jobs do Dataflow para monitorar o uso de CPU e a alocação de memória.

Como funciona

O Dataflow usa um modelo de pipeline de dados, em que os dados se movem por uma série de estágios. As fases podem incluir a leitura de dados de uma fonte, a transformação e a agregação dos dados e a gravação dos resultados em um destino.

Os canais podem variar de processamento muito simples a mais complexo. Por exemplo, um pipeline pode fazer o seguinte:

  • Mover os dados como estão para um destino.
  • Transformar dados para serem mais utilizáveis pelo sistema de destino.
  • Agregue, processe e aprimore os dados para análise.
  • Combine dados com outros.

Um pipeline definido no Apache Beam não especifica como o pipeline é executado. A execução do pipeline é o trabalho de um executor. A finalidade de um executor é executar um pipeline do Apache Beam em uma plataforma específica. O Apache Beam é compatível com vários executores, incluindo um executor do Dataflow.

Para usar o Dataflow com pipelines do Apache Beam, especifique o executor do Dataflow. O executor faz upload do código executável e das dependências para um bucket do Cloud Storage e cria um job do Dataflow. O Dataflow aloca um pool de VMs para executar o pipeline.

O diagrama a seguir mostra uma solução típica de ETL e BI usando o Dataflow e outros serviços do Google Cloud:

Diagrama de uma solução de ETL e BI que usa o Dataflow

Este diagrama mostra os seguintes estágios:

  1. O Pub/Sub ingere dados de um sistema externo.
  2. O Dataflow lê os dados do Pub/Sub e os grava no BigQuery. Durante esse estágio, o Dataflow pode transformar ou agregar os dados.
  3. O BigQuery atua como um data warehouse, permitindo que analistas de dados executem consultas ad hoc nos dados.
  4. O Looker fornece insights de BI em tempo real com base nos dados armazenados no BigQuery.

Para situações básicas de movimentação de dados, basta executar um modelo fornecido pelo Google. Alguns modelos são compatíveis com funções definidas pelo usuário (UDFs) escritas em JavaScript. UDFs permitem adicionar lógica de processamento personalizada a um modelo. Para pipelines mais complexos, comece com o SDK do Apache Beam.

A seguir