Cloud Storage como um data lake

Neste artigo, discutimos como um data lake no Google Cloud. Com um data lake, as organizações têm a flexibilidade de coletar todos os aspectos de operações empresariais na forma de dados. Ao longo do tempo, esses dados se acumulam em petabytes ou mesmo exabytes, mas com a separação de armazenamento e computação, nunca foi tão econômico armazenar todos esses dados.

Depois de coletar e armazenar os dados, é possível aplicar várias técnicas de processamento para extrair insights deles. O armazenamento de dados tem sido a abordagem padrão para fazer análises de negócios. No entanto, essa abordagem exige esquemas razoavelmente rígidos para tipos de dados bem compreendidos, como pedidos, informações sobre pedidos e inventário. As análises criadas unicamente sobre armazenamento de dados tradicional dificultam o tratamento dos dados que não estejam em conformidade com um esquema bem definido, porque esses dados geralmente são descartados e perdidos para sempre.

Migrar da abordagem de armazenamento de dados para "armazenamento integral" de um data lake é útil somente se for possível continuar extraindo insights dos dados. Os cientistas, engenheiros e analistas de dados geralmente querem usar as ferramentas analíticas de sua preferência para processar e analisar dados no data lake. Além disso, o data lake precisa ser compatível com a ingestão de grandes quantidades de dados de várias fontes.

Com essas considerações em mente, veja como é possível criar um data lake no Google Cloud. O diagrama a seguir inclui os principais estágios em uma solução de data lake.

Os principais cenários em uma solução de data lake

Neste artigo, exploramos os cenários com mais detalhes e discutimos como o Google Cloud pode ajudar.

Armazenamento: Cloud Storage como o data lake

O Cloud Storage é adequado para servir como repositório central de armazenamento por vários motivos.

Desempenho e durabilidade: com o Cloud Storage, é possível começar com alguns arquivos pequenos e aumentar o tamanho do data lake até alcançar os exabytes. O Cloud Storage é compatível com a ingestão de altos volumes de novos dados e com o consumo de altos volumes de dados armazenados em combinação com outros serviços, como o Pub/Sub. Embora o desempenho seja um elemento crítico de um data lake, a durabilidade é ainda mais importante. O Cloud Storage foi projetado para uma durabilidade anual de 99,999999999%.

Consistência forte: uma característica fundamental que diferencia o Cloud Storage de muitos outros armazenamentos de objetos é o suporte a consistência forte em cenários como operações de leitura após gravação, listagem de buckets e objetos, e concessão de acesso a recursos. Sem essa consistência, é preciso implementar soluções complexas e demoradas para encontrar uma maneira de determinar a disponibilidade dos dados para processamento.

Eficiência de custos: o Cloud Storage oferece várias classes de armazenamento a diversos preços para atender a diferentes padrões de acesso e necessidades de disponibilidade, além de oferecer a flexibilidade de equilibrar o custo e a frequência do acesso aos dados. É possível acessar dados dessas várias classes de armazenamento usando uma API consistente sem sacrificar o desempenho. Por exemplo, é possível arquivar dados usados com pouca frequência no Cloud Storage Nearline, Cloud Storage Coldline ou Cloud Storage Archive utilizando uma política de ciclo de vida. Assim, eles podem ser acessados posteriormente com latência de subsegundos. Isso pode ser feito, por exemplo, para reunir dados de treinamento para machine learning.

Processamento flexível: o Cloud Storage fornece integração nativa com vários serviços avançados do Google Cloud, como BigQuery, Dataproc (Ecossistema do Hadoop), Dataflow para análise sem servidor, API Video Intelligence, Cloud Vision e AI Platform, oferecendo a flexibilidade de escolher a ferramenta certa para analisar seus dados.

Repositório central: com um local central para armazenamento e acesso de dados entre equipes e departamentos, o Cloud Storage ajuda a evitar silos de dados que precisem permanecer sincronizados.

Segurança: como os data lakes são projetados para armazenar todos os tipos de dados, as empresas esperam contar com recursos de controle de acesso fortes para garantir que os dados não caiam em mãos erradas. O Cloud Storage tem vários mecanismos para implementar controles de acesso refinados sobre seus ativos de dados.

Ingestão de dados

Uma arquitetura de data lake precisa ser compatível com ingestões de volumes variáveis de dados de diferentes fontes, como sensores de Internet das Coisas (IoT na sigla em inglês), atividade de stream de cliques em sites, dados de processamento de transações on-line (OLTP na sigla em inglês) e dados locais, entre outros. Nesta seção, você aprenderá como o Google Cloud é compatível com uma ampla variedade de casos de uso de processamento.

Pub/Sub e Dataflow: é possível ingerir e armazenar dados em tempo real diretamente no Cloud Storage, escalonando em resposta ao volume de dados.

Serviço de transferência de armazenamento: a movimentação de grandes quantidades de dados costuma ser mais complexa que a emissão de um único comando. Você tem de lidar com desafios como o agendamento de transferências periódicas de dados, a sincronização de arquivos entre a fonte e o coletor ou a movimentação seletiva de arquivos com base em filtros. O Serviço de transferência do Cloud Storage inclui um mecanismo robusto para realizar essas tarefas.

gsutil: para transferências únicas ou iniciadas manualmente, use a gsutil, que é uma ferramenta de linha de comando de código aberto disponível para Windows, Linux e Mac. Ela é compatível com transferências de várias linhas de execução, transferências processadas, uploads compostos paralelos, novas tentativas e capacidade de reinicialização.

Transfer Appliance: dependendo da largura de banda da rede, se quiser migrar grandes volumes de dados para a nuvem com fins de análise, a migração off-line usando o Transfer Appliance pode ser uma opção mais rápida.

Veja uma visão geral detalhada das opções de ingestão e os principais critérios de tomada de decisão envolvidos na escolha de uma opção de ingestão.

Processamento e análises

Depois de ter ingerido e armazenado os dados, o próximo passo é disponibilizá-los para análise. Em alguns casos, é possível armazenar dados em um esquema bem compreendido imediatamente após a ingestão, o que simplifica a consulta no local. Por exemplo, se você armazenar dados de entrada no formato Avro no Cloud Storage, será possível fazer o seguinte:

  • usar o Hive no Dataproc para emitir consultas SQL nos dados;
  • Realize consultas diretamente nos dados do BigQuery.
  • Carregue os dados no BigQuery e, em seguida, realize a consulta.

No entanto, nem sempre é possível modelar dados em um esquema conhecido depois de ingeridos e armazenados. Na verdade, o principal motivo para trabalhar com data lakes em vez de armazenamento de dados é que a consulta de todos os dados esteja disponível posteriormente para ajudar nos seus insights. Dependendo da natureza dos dados brutos e dos tipos de análise envolvidos, o fluxo de trabalho pode variar de simples a complexo. O diagrama a seguir fornece uma visão geral.

Visão geral do fluxo de trabalho do data lake

Extração e exploração de dados

Como uma grande parte dos dados armazenados no data lake não está pronta para consumo imediato, talvez seja necessário primeiro extrair o valor latente desses dados. O Jupyter Notebook é uma ferramenta recomendada para explorar dados brutos e, para isso, o Google Cloud oferece o Datalab, um serviço Jupyter Notebook totalmente gerenciado.

O Datalab vem pré-instalado com uma ampla variedade das bibliotecas de ciência de dados mais usadas, como o TensorFlow e o NumPy. Além de usar o Datalab, você tem acesso ao ecossistema Hadoop tradicional de ferramentas no Dataproc e análises totalmente sem servidor com o Dataflow. Para uma análise poderosa, baseada em SQL, os dados brutos podem ser transformados com o Dataprep da Trifacta e carregados no BigQuery.

Quando você entender o potencial de análise de um subconjunto de dados brutos no lake, poderá disponibilizar esse subconjunto para um público mais amplo.

Desenvolver e implantar fluxos de trabalho

Disponibilizar um subconjunto de dados para um público mais amplo significa criar data marts direcionados, como mostrado no diagrama anterior. Para manter esses data marts atualizados, use os pipelines de dados orquestrados que transformam os dados brutos em dados que os processos de downstream e os usuários podem consumir. Esses pipelines variam conforme a natureza dos dados e os tipos de análise usados. Veja alguns fluxos de trabalho analíticos comuns e como é possível implementá-los no Google Cloud.

Transformação de dados brutos e carregamento no BigQuery

No fluxo de trabalho simples e muito comum ilustrado no diagrama a seguir, é utilizado um processo de extração, transformação e carregamento de dados (ETL) para ingestão de dados em um armazenamento de dados do BigQuery. Em seguida, consulte os dados usando SQL. O Dataprep, uma ferramenta visual para limpeza e preparação de dados, é adequado para jobs simples de ETL, enquanto o Dataflow com Apache Beam oferece mais flexibilidade para jobs ETL mais envolvidos.

Fluxo de trabalho para carregar dados no BigQuery

Análise em lote

Para usar o ecossistema Hadoop de produtos para análise em lote, armazene os dados transformados em um local separado do Cloud Storage. Em seguida, use o Dataproc para executar consultas nesses dados usando o Spark, o Spark SQL, o SQL no Hive e ferramentas semelhantes. Apache Avro, Apache Parquet e Apache ORC são formatos muito usados para esses dados refinados. O diagrama a seguir resume esse fluxo de trabalho.

Usando produtos Hadoop para análise em lote

Análise em tempo real

Para um canal simples e baseado em SQL, o processamento de stream no BigQuery oferece a capacidade de consultar dados à medida que são ingeridos. A utilização do Pub/Sub e do Dataflow com o Beam proporciona recursos de processamento de fluxo mais complexos para que os usuários possam, por exemplo, realizar agregações, gestão de janelas e filtros antes de armazenar dados BigQuery. Para análises de séries temporais, é possível armazenar dados ingeridos no Cloud Bigtable para facilitar análises rápidas. No diagrama a seguir, veja esse fluxo de trabalho.

Como armazenar dados no Cloud Bigtable para análise em tempo real

Machine learning

O machine learning pode se beneficiar imensamente da grande quantidade de dados em um data lake. Depois que você identificar os dados úteis de treinamento, os passos de preparação de dados associados e a arquitetura de rede do machine learning, poderá orquestrar esses passos, conforme mostrado no diagrama a seguir. O AI Platform facilita o aperfeiçoamento de modelos e, em seguida, usa-os para realizar predições em lote e on-line.

Como orquestrar dados para machine learning

Nem todos os casos de uso de machine learning exigem o projeto e o treinamento de modelos personalizados. O Google Cloud inclui modelos pré-tratados para fala, visão, inteligência de vídeo e processamento de linguagem natural. Nesses casos, você passa as entradas apropriadas, como áudio, imagens ou vídeo, para o respectivo serviço do Google Cloud. Em seguida, metadados valiosos são extraídos e armazenados em um serviço como o BigQuery para consultas e análises complementares. Veja esse fluxo no diagrama a seguir.

Como usar modelos de machine learning pré-treinados

A seguir