Uma arquitetura de big data é projetada para lidar com a ingestão, processamento e análise de dados que são muito grandes ou complexos para sistemas de banco de dados tradicionais.
As soluções de Big Data normalmente envolvem um ou mais dos seguintes tipos de carga de trabalho:
- Processamento em lote de fontes de big data em repouso.
- Processamento em tempo real de big data em movimento.
- Exploração interativa de big data.
- Análise preditiva e aprendizagem automática.
A maioria das arquiteturas de big data inclui alguns ou todos os seguintes componentes:
Fontes de dados: Todas as soluções de big data começam com uma ou mais fontes de dados. Os exemplos incluem:
- Armazenamentos de dados de aplicativos, como bancos de dados relacionais.
- Arquivos estáticos produzidos por aplicativos, como arquivos de log do servidor Web.
- Fontes de dados em tempo real, como dispositivos IoT.
de armazenamento de dados: Os dados para operações de processamento em lote são normalmente armazenados em um armazenamento de arquivos distribuído que pode armazenar grandes volumes de arquivos grandes em vários formatos. Esse tipo de armazenamento é frequentemente chamado de data lake. As opções para implementar esse armazenamento incluem o Repositório Azure Data Lake ou contêineres de blob no Armazenamento do Azure.
de processamento em lote: Como os conjuntos de dados são muito grandes, muitas vezes uma solução de big data deve processar arquivos de dados usando trabalhos em lote de longa duração para filtrar, agregar e preparar os dados para análise. Normalmente, esses trabalhos envolvem a leitura de arquivos de origem, o processamento deles e a gravação da saída em novos arquivos. As opções incluem o uso de fluxos de dados, pipelines de dados no Microsoft Fabric.
Ingestão de mensagens em tempo real: Se a solução incluir fontes em tempo real, a arquitetura deve incluir uma maneira de capturar e armazenar mensagens em tempo real para processamento de fluxo. Isso pode ser um armazenamento de dados simples, onde as mensagens recebidas são deixadas em uma pasta para processamento. No entanto, muitas soluções precisam de um armazenamento de ingestão de mensagens para atuar como um buffer para mensagens e oferecer suporte ao processamento em expansão, entrega confiável e outras semânticas de enfileiramento de mensagens. As opções incluem Hubs de Eventos do Azure, Hubs IoT do Azure e Kafka.
de processamento de fluxo : Depois de capturar mensagens em tempo real, a solução deve processá-las filtrando, agregando e preparando os dados para análise. Os dados de fluxo processados são gravados em um coletor de saída. O Azure Stream Analytics fornece um serviço de processamento de fluxo gerenciado com base na execução perpétua de consultas SQL que operam em fluxos ilimitados. Outra opção é usar o Real-time Intelligence no Microsoft Fabric, que permite executar consultas KQL à medida que os dados estão sendo ingeridos.
Armazenamento de dados analíticos: Muitas soluções de big data preparam os dados para análise e, em seguida, servem os dados processados em um formato estruturado que pode ser consultado usando ferramentas analíticas. O armazenamento de dados analíticos usado para atender a essas consultas pode ser um data warehouse relacional no estilo Kimball, como visto na maioria das soluções tradicionais de business intelligence (BI) ou um lakehouse com arquitetura medalhão (Bronze, Prata e Ouro). O Azure Synapse Analytics fornece um serviço gerenciado para armazenamento de dados em grande escala baseado em nuvem. Como alternativa, o Microsoft Fabric fornece ambas as opções - warehouse e lakehouse - que podem ser consultadas usando SQL e Spark, respectivamente.
Análise e relatórios: O objetivo da maioria das soluções de big data é fornecer insights sobre os dados por meio de análises e relatórios. Para permitir que os usuários analisem os dados, a arquitetura pode incluir uma camada de modelagem de dados, como um cubo OLAP multidimensional ou um modelo de dados tabular no Azure Analysis Services. Ele também pode oferecer suporte a BI de autoatendimento, usando as tecnologias de modelagem e visualização no Microsoft Power BI ou no Microsoft Excel. A análise e a geração de relatórios também podem assumir a forma de exploração interativa de dados por cientistas de dados ou analistas de dados. Para esses cenários, o Microsoft Fabric fornece ferramentas como blocos de anotações, onde o usuário pode escolher SQL ou uma linguagem de programação de sua escolha.
Orchestration: A maioria das soluções de big data consiste em operações repetidas de processamento de dados, encapsuladas em fluxos de trabalho, que transformam dados de origem, movem dados entre várias fontes e coletores, carregam os dados processados em um armazenamento de dados analíticos ou enviam os resultados diretamente para um relatório ou painel. Para automatizar esses fluxos de trabalho, você pode usar uma tecnologia de orquestração, como pipelines do Azure Data Factory ou do Microsoft Fabric.
O Azure inclui muitos serviços que podem ser usados em uma arquitetura de big data. Dividem-se, grosso modo, em duas categorias:
- Serviços gerenciados, incluindo Microsoft Fabric, Azure Data Lake Store, Azure Synapse Analytics, Azure Stream Analytics, Azure Event Hubs, Azure IoT Hub e Azure Data Factory.
- Tecnologias de código aberto baseadas na plataforma Apache Hadoop, incluindo HDFS, HBase, Hive, Spark e Kafka. Essas tecnologias estão disponíveis no Azure no serviço Azure HDInsight.
Essas opções não são mutuamente exclusivas e muitas soluções combinam tecnologias de software livre com os serviços do Azure.
Quando usar esta arquitetura
Considere este estilo de arquitetura quando precisar:
- Armazene e processe dados em volumes muito grandes para um banco de dados tradicional.
- Transforme dados não estruturados para análise e emissão de relatórios.
- Capture, processe e analise fluxos ilimitados de dados em tempo real ou com baixa latência.
- Use o Azure Machine Learning ou os Serviços Cognitivos do Azure.
Benefícios
- Opções tecnológicas. Você pode combinar serviços gerenciados do Azure e tecnologias Apache em clusters HDInsight, para aproveitar as habilidades existentes ou os investimentos em tecnologia.
- Desempenho através do paralelismo. As soluções de Big Data tiram proveito do paralelismo, permitindo soluções de alto desempenho que podem ser dimensionadas para grandes volumes de dados.
- Escala elástica. Todos os componentes da arquitetura de big data oferecem suporte ao provisionamento em expansão, para que você possa ajustar sua solução a cargas de trabalho pequenas ou grandes e pagar apenas pelos recursos usados.
- Interoperabilidade com soluções existentes. Os componentes da arquitetura de big data também são usados para processamento de IoT e soluções de BI empresarial, permitindo que você crie uma solução integrada entre cargas de trabalho de dados.
Desafios
- Complexidade. As soluções de Big Data podem ser extremamente complexas, com vários componentes para lidar com a ingestão de dados de várias fontes de dados. Pode ser um desafio criar, testar e solucionar problemas de processos de big data. Além disso, pode haver um grande número de definições de configuração em vários sistemas que devem ser usadas para otimizar o desempenho.
- Skillset. Muitas tecnologias de big data são altamente especializadas e usam estruturas e linguagens que não são típicas de arquiteturas de aplicativos mais gerais. Por outro lado, as tecnologias de big data estão desenvolvendo novas APIs que se baseiam em linguagens mais estabelecidas.
- Maturidade tecnológica. Muitas das tecnologias utilizadas no big data estão a evoluir. Enquanto as principais tecnologias Hadoop, como Hive e spark, se estabilizaram, tecnologias emergentes como delta ou iceberg introduzem extensas mudanças e aprimoramentos. Os serviços gerenciados, como o Microsoft Fabric, são relativamente jovens, em comparação com outros serviços do Azure, e provavelmente evoluirão com o tempo.
- Segurança. As soluções de Big Data geralmente dependem do armazenamento de todos os dados estáticos em um data lake centralizado. Proteger o acesso a esses dados pode ser um desafio, especialmente quando os dados devem ser ingeridos e consumidos por vários aplicativos e plataformas.
Melhores práticas
Alavancar paralelismo. A maioria das tecnologias de processamento de big data distribui a carga de trabalho entre várias unidades de processamento. Isso requer que os arquivos de dados estáticos sejam criados e armazenados em um formato de tabela dividida. Sistemas de arquivos distribuídos, como o HDFS, podem otimizar o desempenho de leitura e gravação, e o processamento real é realizado por vários nós de cluster em paralelo, o que reduz os tempos gerais de trabalho. O uso de formato de dados divisíveis é altamente recomendado, como o Parquet.
Dados de partição. O processamento em lote geralmente acontece em uma programação recorrente — por exemplo, semanal ou mensal. Particione arquivos de dados e estruturas de dados, como tabelas, com base em períodos temporais que correspondem à agenda de processamento. Isso simplifica a ingestão de dados e o agendamento de tarefas e facilita a solução de problemas. Além disso, o particionamento de tabelas usadas em consultas Hive, spark ou SQL pode melhorar significativamente o desempenho da consulta.
Aplicar semântica de esquema em leitura. O uso de um data lake permite combinar o armazenamento de arquivos em vários formatos, sejam eles estruturados, semiestruturados ou não estruturados. Use semântica de de esquema em leitura, que projeta um esquema nos dados quando os dados estão sendo processados, não quando os dados são armazenados. Isso cria flexibilidade na solução e evita gargalos durante a ingestão de dados causados pela validação de dados e verificação de tipo.
Processar dados in-loco. As soluções tradicionais de BI geralmente usam um processo de extração, transformação e carregamento (ETL) para mover dados para um data warehouse. Com volumes de dados maiores e uma maior variedade de formatos, as soluções de big data geralmente usam variações de ETL, como transformar, extrair e carregar (TEL). Com essa abordagem, os dados são processados dentro do armazenamento de dados distribuído, transformando-os para a estrutura necessária, antes de mover os dados transformados em um armazenamento de dados analíticos.
Equilibrar a utilização e os custos de tempo. Para trabalhos de processamento em lote, é importante considerar dois fatores: o custo por unidade dos nós de computação e o custo por minuto de usar esses nós para concluir o trabalho. Por exemplo, um trabalho em lote pode levar oito horas com quatro nós de cluster. No entanto, pode acontecer que o trabalho use todos os quatro nós apenas durante as primeiras duas horas e, depois disso, apenas dois nós são necessários. Nesse caso, executar o trabalho inteiro em dois nós aumentaria o tempo total de trabalho, mas não o dobraria, de modo que o custo total seria menor. Em alguns cenários de negócios, um tempo de processamento mais longo pode ser preferível ao custo mais alto do uso de recursos de cluster subutilizados.
Recursos separados. Sempre que possível, procure separar recursos com base nas cargas de trabalho para evitar cenários como uma carga de trabalho usando todos os recursos enquanto outra está esperando.
Orquestre a ingestão de dados. Em alguns casos, os aplicativos de negócios existentes podem gravar arquivos de dados para processamento em lote diretamente nos contêineres de blob de armazenamento do Azure, onde podem ser consumidos por serviços downstream, como o Microsoft Fabric. No entanto, muitas vezes você precisará orquestrar a ingestão de dados de fontes de dados locais ou externas no data lake. Use um fluxo de trabalho ou pipeline de orquestração, como os suportados pelo Azure Data Factory ou pelo Microsoft Fabric, para conseguir isso de forma previsível e gerenciável centralmente.
Limpe dados confidenciais no início. O fluxo de trabalho de ingestão de dados deve limpar dados confidenciais no início do processo, para evitar armazená-los no data lake.
Arquitetura IoT
A Internet das Coisas (IoT) é um subconjunto especializado de soluções de big data. O diagrama a seguir mostra uma possível arquitetura lógica para IoT. O diagrama enfatiza os componentes de streaming de eventos da arquitetura.
O gateway de nuvem ingere eventos do dispositivo no limite da nuvem, usando um sistema de mensagens confiável e de baixa latência.
Os dispositivos podem enviar eventos diretamente para o gateway de nuvem ou por meio de um gateway de campo . Um gateway de campo é um dispositivo ou software especializado, geralmente colocalizado com os dispositivos, que recebe eventos e os encaminha para o gateway de nuvem. O gateway de campo também pode pré-processar os eventos brutos do dispositivo, executando funções como filtragem, agregação ou transformação de protocolo.
Após a ingestão, os eventos passam por um ou mais processadores de fluxo que podem rotear os dados (por exemplo, para armazenamento) ou executar análises e outros processamentos.
A seguir estão alguns tipos comuns de processamento. (Esta lista não é certamente exaustiva.)
Gravação de dados de eventos em armazenamento frio, para arquivamento ou análise em lote.
Análise de caminho ativo, analisando o fluxo de eventos em tempo (quase) real, para detetar anomalias, reconhecer padrões em janelas de tempo de rolagem ou disparar alertas quando uma condição específica ocorre no fluxo.
Tratamento de tipos especiais de mensagens não telemétricas de dispositivos, como notificações e alarmes.
Aprendizagem automática.
As caixas sombreadas em cinza mostram componentes de um sistema IoT que não estão diretamente relacionados ao streaming de eventos, mas estão incluídos aqui para integridade.
O de registro do dispositivo
é um banco de dados dos dispositivos provisionados, incluindo as IDs do dispositivo e, geralmente, os metadados do dispositivo, como a localização. A API de provisionamento de é uma interface externa comum para provisionamento e registro de novos dispositivos.
Algumas soluções de IoT permitem que mensagens de comando e controle sejam enviadas para dispositivos.
Esta seção apresentou uma visão de alto nível da IoT, e há muitas sutilezas e desafios a considerar. Para obter mais detalhes, consulte arquiteturas de IoT.
Próximos passos
- Saiba mais sobre arquiteturas de big data.
- Saiba mais sobre arquiteturas de IoT.