O Dataflow é um Google Cloud serviço que oferece um processamento unificado de dados de streaming e em lote em grande escala. Use o Dataflow para criar pipelines de dados que leiam a partir de uma ou mais origens, transformem os dados e escrevam os dados num destino.
Seguem-se alguns exemplos de utilização típicos do Dataflow:
- Movimento de dados: carregar dados ou replicar dados entre subsistemas.
- Fluxos de trabalho ETL (extração, transformação e carregamento) que carregam dados para um armazém de dados, como o BigQuery.
- Alimentar painéis de controlo de BI.
- Aplicar ML em tempo real a dados de streaming.
- Processar dados de sensores ou dados de registo à escala.
O Dataflow usa o mesmo modelo de programação para estatísticas em lote e por streaming. Os pipelines de streaming podem atingir uma latência muito baixa. Pode carregar, processar e analisar volumes flutuantes de dados em tempo real. Por predefinição, o Dataflow garante o tratamento exatamente uma vez de cada registo. Para pipelines de streaming que podem tolerar duplicados, muitas vezes, pode reduzir o custo e melhorar a latência ativando o modo, pelo menos, uma vez.
Vantagens do Dataflow
Esta secção descreve algumas das vantagens da utilização do Dataflow.
Gerido
O Dataflow é um serviço totalmente gerido. Isto significa que a Google gere todos os recursos necessários para executar o Dataflow. Quando executa uma tarefa do Dataflow, o serviço Dataflow atribui um conjunto de VMs de trabalho para executar o pipeline. Não precisa de aprovisionar nem gerir estas VMs. Quando a tarefa é concluída ou cancelada, o Dataflow elimina automaticamente as VMs. A faturação é feita com base nos recursos de computação usados pela tarefa. Para mais informações sobre os custos, consulte o artigo Preços do Dataflow.
Escalável
O Dataflow foi concebido para suportar pipelines de streaming e em lote em grande escala. Os dados são processados em paralelo, pelo que o trabalho é distribuído por várias VMs.
O Dataflow pode ser dimensionado automaticamente através do aprovisionamento de VMs de trabalho adicionais ou do encerramento de algumas VMs de trabalho se forem necessárias menos. 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 de forma mais eficiente.
Portátil
O Dataflow é criado com base no projeto de código aberto Apache Beam. O Apache Beam permite-lhe escrever pipelines usando um SDK específico do idioma. O Apache Beam suporta SDKs Java, Python e Go, bem como pipelines em vários idiomas.
O Dataflow executa pipelines do Apache Beam. Se decidir mais tarde executar o pipeline numa plataforma diferente, como o Apache Flink ou o Apache Spark, pode fazê-lo sem reescrever o código do pipeline.
Flexível
Pode usar o Dataflow para pipelines relativamente simples, como a movimentação de dados. No entanto, também é adequado para aplicações mais avançadas, como a análise de streaming em tempo real. Uma solução criada no Dataflow pode crescer com as suas necessidades à medida que passa do processamento em lote para o streaming ou encontra exemplos de utilização mais avançados.
O Dataflow suporta várias formas diferentes de criar e executar pipelines, consoante as suas necessidades:
Escrever código com os SDKs do Apache Beam.
Implemente um modelo do Dataflow. Os modelos permitem-lhe executar pipelines predefinidos. Por exemplo, um programador pode criar um modelo e, em seguida, um cientista de dados pode implementá-lo a pedido.
A Google também disponibiliza uma biblioteca de modelos para cenários comuns. Pode implementar estes modelos sem conhecer nenhum dos conceitos de programação do Apache Beam.
Use blocos de notas do JupyterLab para desenvolver e executar pipelines de forma iterativa.
Observável
Pode monitorizar o estado das tarefas do Dataflow através da interface de monitorização do Dataflow na Google Cloud consola. A interface de monitorização inclui uma representação gráfica do seu pipeline, que mostra o progresso e os detalhes de execução de cada fase do pipeline. A interface de monitorização facilita a deteção de problemas, como gargalos ou latência elevada. Também pode criar perfis dos seus trabalhos do Dataflow para monitorizar a utilização da CPU e a atribuição de memória.
Como funciona
O Dataflow usa um modelo de pipeline de dados, em que os dados se movem através de uma série de fases. As fases podem incluir a leitura de dados de uma origem, a transformação e a agregação dos dados, e a escrita dos resultados num destino.
Os pipelines podem variar, desde muito simples a um processamento mais complexo. Por exemplo, um pipeline pode fazer o seguinte:
- Mover os dados tal como estão para um destino.
- Transformar os dados para serem mais utilizáveis pelo sistema de destino.
- Agregue, processe e enriqueça os dados para análise.
- Junte dados a outros dados.
Um pipeline definido no Apache Beam não especifica como o pipeline é executado. A execução do pipeline é a tarefa de um executor. O objetivo de um executor é executar um pipeline do Apache Beam numa plataforma específica. O Apache Beam suporta vários executores, incluindo um executor do Dataflow.
Para usar o Dataflow com os seus pipelines do Apache Beam, especifique o executor do Dataflow. O executor carrega o seu código executável e dependências para um contentor do Cloud Storage e cria uma tarefa do Dataflow. Em seguida, o Dataflow atribui um conjunto de VMs para executar o pipeline.
O diagrama seguinte mostra uma solução de ETL e BI típica que usa o Dataflow e outros Google Cloud serviços:
Este diagrama mostra as seguintes fases:
- O Pub/Sub carrega dados de um sistema externo.
- O Dataflow lê os dados do Pub/Sub e escreve-os no BigQuery. Durante esta fase, o Dataflow pode transformar ou agregar os dados.
- O BigQuery funciona como um armazém de dados, permitindo que os analistas de dados executem consultas ad hoc nos dados.
- O Looker oferece estatísticas de BI em tempo real a partir dos dados armazenados no BigQuery.
Para cenários básicos de movimento de dados, pode executar um modelo fornecido pela Google. Alguns modelos suportam funções definidas pelo utilizador (FDUs) escritas em JavaScript. As FUDs permitem-lhe adicionar lógica de processamento personalizada a um modelo. Para pipelines mais complexos, comece com o SDK Apache Beam.
O que se segue?
- Para mais informações sobre o Apache Beam, consulte o artigo Modelo de programação para o Apache Beam.
- Crie o seu primeiro pipeline seguindo o início rápido do criador de tarefas ou o início rápido do modelo do Dataflow.
- Saiba como usar o Apache Beam para criar pipelines.