Arquiteturas de macrodadosBig data architectures

As arquiteturas de macrodados servem para processar a ingestão, o processamento e a análise de dados que sejam demasiado grandes ou complexos para os sistemas de base de dados tradicionais.A big data architecture is designed to handle the ingestion, processing, and analysis of data that is too large or complex for traditional database systems. O limiar em que as organizações entram no domínio dos macrodados difere consoante as capacidades dos utilizadores e as respetivas ferramentas.The threshold at which organizations enter into the big data realm differs, depending on the capabilities of the users and their tools. Para alguns utilizadores, pode significar centenas de gigabytes de dados, enquanto para outros significa centenas de terabytes.For some, it can mean hundreds of gigabytes of data, while for others it means hundreds of terabytes. À medida que as ferramentas para trabalhar com conjuntos de macrodados evoluem, o significado dos macrodados também evolui.As tools for working with big data sets advance, so does the meaning of big data. Cada vez mais, este termo está relacionado com o valor que pode extrair dos seus conjuntos de dados através de análise avançada, em vez de se referir estritamente ao tamanho dos dados, embora nestes casos os dados sejam tendencialmente grandes.More and more, this term relates to the value you can extract from your data sets through advanced analytics, rather than strictly the size of the data, although in these cases they tend to be quite large.

Ao longo dos anos, o panorama dos dados mudou.Over the years, the data landscape has changed. O que pode fazer com os dados, ou o que é esperado que faça, mudou.What you can do, or are expected to do, with data has changed. O custo de armazenamento baixou significativamente, enquanto os meios através dos quais os dados são recolhidos continuam a crescer.The cost of storage has fallen dramatically, while the means by which data is collected keeps growing. Alguns dados são recebidos rapidamente, requerendo constantemente a respetiva recolha e observação.Some data arrives at a rapid pace, constantly demanding to be collected and observed. Outros dados são recebidos mais lentamente, mas em segmentos muito grandes, muitas vezes sob a forma de décadas de dados históricos.Other data arrives more slowly, but in very large chunks, often in the form of decades of historical data. Poderá deparar-se com um problema de análise avançada ou outro problema que requeira a aprendizagem automática.You might be facing an advanced analytics problem, or one that requires machine learning. Estes são os desafios que as arquiteturas de macrodados procuram resolver.These are challenges that big data architectures seek to solve.

Normalmente, as soluções de macrodados envolvem um ou mais dos seguintes tipos de cargas de trabalho:Big data solutions typically involve one or more of the following types of workload:

  • Processamento em lotes de origens de macrodados inativas.Batch processing of big data sources at rest.
  • Processamento em tempo real de macrodados em movimento.Real-time processing of big data in motion.
  • Exploração interativa de macrodados.Interactive exploration of big data.
  • Análise preditiva e machine learning.Predictive analytics and machine learning.

Considere arquiteturas de macrodados quando precisar de:Consider big data architectures when you need to:

  • Armazenar e processar dados em volumes demasiados grandes para uma base de dados tradicional.Store and process data in volumes too large for a traditional database.
  • Transformar dados não estruturados para análises e relatórios.Transform unstructured data for analysis and reporting.
  • Capturar, processar e analisar fluxos independentes de dados em tempo real ou com baixa latência.Capture, process, and analyze unbounded streams of data in real time, or with low latency.

Componentes de uma arquitetura de macrodadosComponents of a big data architecture

O diagrama seguinte mostra os componentes lógicos que se enquadram numa arquitetura de macrodados.The following diagram shows the logical components that fit into a big data architecture. As soluções individuais poderão não conter todos os itens neste diagrama.Individual solutions may not contain every item in this diagram.

Diagrama de pipeline de dados global

A maioria das arquiteturas de macrodados incluem alguns ou todos os componentes abaixo:Most big data architectures include some or all of the following components:

  • Origens de dados.Data sources. Todas as soluções de macrodados começam com uma ou mais origens de dados.All big data solutions start with one or more data sources. Os exemplos incluem:Examples include:

    • Arquivos de dados de armazenamento, como bases de dados relacionais.Application data stores, such as relational databases.
    • Ficheiros estáticos produzidos por aplicações, como ficheiros de registo de servidores Web.Static files produced by applications, such as web server log files.
    • Origens de dados em tempo real, como dispositivos IoT.Real-time data sources, such as IoT devices.
  • Armazenamento de dados.Data storage. Os dados para as operações de processamento em lotes são, normalmente, armazenados num arquivo de ficheiros distribuído que pode incluir elevados volumes de ficheiros grandes em diferentes formatos.Data for batch processing operations is typically stored in a distributed file store that can hold high volumes of large files in various formats. Este tipo de arquivo é, muitas vezes, conhecido como data lake.This kind of store is often called a data lake. As opções para implementar este armazenamento incluem contentores do Azure Data Lake Store ou contentores de blobs no Armazenamento do Azure.Options for implementing this storage include Azure Data Lake Store or blob containers in Azure Storage.

  • Processamento em lotes.Batch processing. Uma vez que os conjuntos de dados são tão grandes, muitas vezes, as soluções de macrodados têm de processar os ficheiros de dados através de tarefas em lote de execução longa para filtrar, agregar e preparar os dados para análise.Because the data sets are so large, often a big data solution must process data files using long-running batch jobs to filter, aggregate, and otherwise prepare the data for analysis. Normalmente, estes trabalhos envolvem ler os ficheiros de origem, processá-los e escrever a saída em ficheiros novos.Usually these jobs involve reading source files, processing them, and writing the output to new files. As opções incluem executar trabalhos de U-SQL no Azure Data Lake Analytics, utilizar trabalhos de Hive, Pig ou Map/Reduce personalizados num cluster Hadoop do HDInsight ou utilizar programas de Java, Scala ou Python num cluster do HDInsight Spark.Options include running U-SQL jobs in Azure Data Lake Analytics, using Hive, Pig, or custom Map/Reduce jobs in an HDInsight Hadoop cluster, or using Java, Scala, or Python programs in an HDInsight Spark cluster.

  • Ingestão de mensagens em tempo real.Real-time message ingestion. Se a solução incluir origens em tempo real, a arquitetura tem de ter uma forma de capturar e armazenar as mensagens em tempo real para o processamento de fluxos.If the solution includes real-time sources, the architecture must include a way to capture and store real-time messages for stream processing. Pode ser um arquivo de dados simples, no qual as mensagens recebidas são largadas numa pasta para processamento.This might be a simple data store, where incoming messages are dropped into a folder for processing. No entanto, muitas soluções precisam que o arquivo de ingestão de mensagens funcione como memória intermédia para as mensagens e que suporte o processamento de escalamento horizontal, a entrega fiável e outras semânticas de colocação de mensagens em fila.However, many solutions need a message ingestion store to act as a buffer for messages, and to support scale-out processing, reliable delivery, and other message queuing semantics. Esta parte de uma arquitetura de transmissão em fluxo é frequentemente referida como colocação em memória intermédia de fluxo.This portion of a streaming architecture is often referred to as stream buffering. As opções incluem os Hubs de Eventos do Azure, o Hub IoT do Azure e o Kafka.Options include Azure Event Hubs, Azure IoT Hub, and Kafka.

  • Processamento de fluxos.Stream processing. Após a captura das mensagens em tempo real, a solução tem de processá-las ao filtrar, agregar e preparar os dados para análise.After capturing real-time messages, the solution must process them by filtering, aggregating, and otherwise preparing the data for analysis. Os dados de fluxos processados são, depois, escritos num sink de saída.The processed stream data is then written to an output sink. O Azure Stream Analytics disponibiliza um serviço de processamento em fluxo gerido e baseado em consultas SQL de execução permanente que funcionam em fluxos independentes.Azure Stream Analytics provides a managed stream processing service based on perpetually running SQL queries that operate on unbounded streams. Também pode utilizar tecnologias de código aberto de fluxos do Apache, como o Storm e o Spark Streaming, nos clusters do HDInsight.You can also use open source Apache streaming technologies like Storm and Spark Streaming in an HDInsight cluster.

  • Arquivo de dados analíticos.Analytical data store. Muitas soluções de macrodados preparam os dados para análise e, em seguida, disponibilizam os dados processados num formato estruturado que pode ser consultado com ferramentas analíticas.Many big data solutions prepare data for analysis and then serve the processed data in a structured format that can be queried using analytical tools. O arquivo de dados analíticos utilizado para disponibilizar estas consultas pode ser um armazém de dados relacional do tipo Kimball, conforme se vê na maioria das soluções de business intelligence (BI) tradicionais.The analytical data store used to serve these queries can be a Kimball-style relational data warehouse, as seen in most traditional business intelligence (BI) solutions. Em alternativa, os dados podem ser apresentados através de uma tecnologia NoSQL de baixa latência, como o HBase, ou de uma base de dados interativa Hive que fornece uma abstração de metadados em ficheiros de dados no arquivo de dados distribuído.Alternatively, the data could be presented through a low-latency NoSQL technology such as HBase, or an interactive Hive database that provides a metadata abstraction over data files in the distributed data store. O Azure SQL Data Warehouse proporciona um serviço gerido para armazéns de dados baseados na cloud e de grande escala.Azure SQL Data Warehouse provides a managed service for large-scale, cloud-based data warehousing. O HDInsight suporta o Interactive Hive, o HBase e o Spark SQL, que também podem ser utilizados para disponibilizar os dados para análise.HDInsight supports Interactive Hive, HBase, and Spark SQL, which can also be used to serve data for analysis.

  • Análises e relatórios.Analysis and reporting. O objetivo da maioria das soluções de macrodados é proporcionar informações sobre os dados através de análises e relatórios.The goal of most big data solutions is to provide insights into the data through analysis and reporting. Para permitir aos utilizadores analisar os dados, a arquitetura pode incluir uma camada de modelação de dados, como um cubo OLAP multidimensional ou um modelo de dados em tabela no Azure Analysis Services.To empower users to analyze the data, the architecture may include a data modeling layer, such as a multidimensional OLAP cube or tabular data model in Azure Analysis Services. Também pode suportar business intelligence de gestão personalizada através da utilização das tecnologias de modelação e visualização no Microsoft Power BI ou no Microsoft Excel.It might also support self-service BI, using the modeling and visualization technologies in Microsoft Power BI or Microsoft Excel. As análises e os relatórios também podem assumir a forma de exploração de dados interativa por parte de cientistas de dados ou analistas de dados.Analysis and reporting can also take the form of interactive data exploration by data scientists or data analysts. Nestes cenários, muitos serviços do Azure suportam blocos de notas analíticos, como o Jupyter, que permitem a estes utilizadores tirar partido das respetivas competências em Python ou R. Na exploração de dados em grande escala, pode utilizar o Microsoft R Server, seja autónomo ou com o Spark.For these scenarios, many Azure services support analytical notebooks, such as Jupyter, enabling these users to leverage their existing skills with Python or R. For large-scale data exploration, you can use Microsoft R Server, either standalone or with Spark.

  • Orquestração.Orchestration. A maioria das soluções de macrodados consiste em operações de processamento de dados repetidas, encapsuladas em fluxos de trabalho, que transformam os dados de origem, movem os dados entre várias origens e sinks, carregam os dados processados para um arquivo de dados analíticos ou enviam os resultados diretamente para um relatório ou dashboard.Most big data solutions consist of repeated data processing operations, encapsulated in workflows, that transform source data, move data between multiple sources and sinks, load the processed data into an analytical data store, or push the results straight to a report or dashboard. Para automatizar estes fluxos de trabalho, pode utilizar uma tecnologia de orquestração como o Azure Data Factory ou o Apache Oozie e o Sqoop.To automate these workflows, you can use an orchestration technology such Azure Data Factory or Apache Oozie and Sqoop.

Arquitetura de lambdaLambda architecture

Ao trabalhar com conjuntos de dados muito grandes, a execução do tipo de consultas de que os clientes precisam pode demorar muito tempo.When working with very large data sets, it can take a long time to run the sort of queries that clients need. Estas consultas não podem ser efetuadas em tempo real e, muitas vezes, necessitam de algoritmos, como o MapReduce, que funcionam em paralelo em todo o conjunto de dados.These queries can't be performed in real time, and often require algorithms such as MapReduce that operate in parallel across the entire data set. Os resultados são então armazenados separadamente dos dados não processados e utilizados para consultas.The results are then stored separately from the raw data and used for querying.

Uma desvantagem desta abordagem é que introduz latência — se o processamento demorar algumas horas, uma consulta pode devolver resultados com várias horas de atraso.One drawback to this approach is that it introduces latency — if processing takes a few hours, a query may return results that are several hours old. Idealmente, gostaria de obter alguns resultados em tempo real (talvez com alguma perda de precisão) e combinar estes resultados com os resultados da análise de lotes.Ideally, you would like to get some results in real time (perhaps with some loss of accuracy), and combine these results with the results from the batch analytics.

A arquitetura de lambda, proposta pela primeira vez por Nathan Marz, aborda este problema através da criação de dois caminhos para o fluxo de dados.The lambda architecture, first proposed by Nathan Marz, addresses this problem by creating two paths for data flow. Todos os dados que entram no sistema passam por estes dois caminhos:All data coming into the system goes through these two paths:

  • Uma camada de lotes (caminho típico) armazena todos os dados recebidos no respetivo formato não processado e efetua o processamento em lotes dos dados.A batch layer (cold path) stores all of the incoming data in its raw form and performs batch processing on the data. O resultado deste processamento é armazenado como uma vista de lotes.The result of this processing is stored as a batch view.

  • Uma camada de velocidade (caminho instantâneo) analisa os dados em tempo real.A speed layer (hot path) analyzes data in real time. Esta camada foi concebida para baixa latência, em detrimento da precisão.This layer is designed for low latency, at the expense of accuracy.

A camada de lotes é inserida numa camada de entrega, que indexa a vista de lotes para uma consulta eficiente.The batch layer feeds into a serving layer that indexes the batch view for efficient querying. A camada de velocidade atualiza a camada de entrega com atualizações incrementais, com base nos dados mais recentes.The speed layer updates the serving layer with incremental updates based on the most recent data.

Diagrama da arquitetura de lambda

Os dados que fluem para o caminho instantâneo são restringidos pelos requisitos de latência impostos pela camada de velocidade, para que possam ser processados o mais rapidamente possível.Data that flows into the hot path is constrained by latency requirements imposed by the speed layer, so that it can be processed as quickly as possible. Muitas vezes, isto requer um compromisso de algum nível de precisão a favor dos dados que ficam prontos o mais rapidamente possível.Often, this requires a tradeoff of some level of accuracy in favor of data that is ready as quickly as possible. Por exemplo, considere um cenário de IoT em que um grande número de sensores de temperatura está a enviar dados de telemetria.For example, consider an IoT scenario where a large number of temperature sensors are sending telemetry data. A camada de velocidade pode ser utilizada para processar uma janela deslizante de tempo dos dados recebidos.The speed layer may be used to process a sliding time window of the incoming data.

Os dados que fluem para o caminho típico, por outro lado, não estão sujeitos aos mesmos requisitos de latência baixa.Data flowing into the cold path, on the other hand, is not subject to the same low latency requirements. Isto permite a computação com precisão elevada em grandes conjuntos de dados, o que pode ser muito exigente em termos de tempo.This allows for high accuracy computation across large data sets, which can be very time intensive.

Os caminhos instantâneos e típicos acabam por convergir na aplicação cliente de análise.Eventually, the hot and cold paths converge at the analytics client application. Se o cliente precisar da apresentação atempada mas potencialmente menos precisa dos dados em tempo real, obterá o resultado do caminho instantâneo.If the client needs to display timely, yet potentially less accurate data in real time, it will acquire its result from the hot path. Caso contrário, seleciona os resultados do caminho típico para apresentar dados menos atempados mas mais exatos.Otherwise, it will select results from the cold path to display less timely but more accurate data. Por outras palavras, o caminho instantâneo inclui dados de uma janela de tempo relativamente pequena, após a qual os resultados podem ser atualizados com os dados mais exatos do caminho típico.In other words, the hot path has data for a relatively small window of time, after which the results can be updated with more accurate data from the cold path.

Os dados não processados armazenados na camada de lotes são imutáveis.The raw data stored at the batch layer is immutable. Os dados recebidos são sempre anexados aos dados existentes e os dados anteriores nunca são substituídos.Incoming data is always appended to the existing data, and the previous data is never overwritten. Quaisquer alterações ao valor de um dado específico são armazenadas como um novo registo de evento com carimbo de data/hora.Any changes to the value of a particular datum are stored as a new timestamped event record. Isto permite o reprocessamento em qualquer ponto no tempo do histórico dos dados recolhidos.This allows for recomputation at any point in time across the history of the data collected. A capacidade de reprocessar a vista de lotes dos dados não processados originais é importante, porque permite a criação de novas vistas à medida que o sistema evolui.The ability to recompute the batch view from the original raw data is important, because it allows for new views to be created as the system evolves.

Arquitetura de kappaKappa architecture

Uma desvantagem da arquitetura de lambda é a sua complexidade.A drawback to the lambda architecture is its complexity. A lógica de processamento é apresentada em dois locais diferentes — os caminhos típicos e os caminhos instantâneos — através da utilização de estruturas diferentes.Processing logic appears in two different places — the cold and hot paths — using different frameworks. Isto dá origem a lógica de computação duplicada e à complexidade de gerir a arquitetura dos dois caminhos.This leads to duplicate computation logic and the complexity of managing the architecture for both paths.

A arquitetura de kappa foi proposta por Jay Kreps como alternativa à arquitetura de lambda.The kappa architecture was proposed by Jay Kreps as an alternative to the lambda architecture. Esta alternativa tem os mesmos objetivos básicos da arquitetura de lambda, mas com uma diferença importante: todos os fluxos de dados passam por um único caminho, através de um sistema de processamento de fluxos.It has the same basic goals as the lambda architecture, but with an important distinction: All data flows through a single path, using a stream processing system.

Diagrama da arquitetura de Kappa

Existem algumas semelhanças com a camada de lotes da arquitetura de lambda, uma vez que os dados de eventos são imutáveis e são todos recolhidos, ao invés de um subconjunto.There are some similarities to the lambda architecture's batch layer, in that the event data is immutable and all of it is collected, instead of a subset. Os dados são ingeridos como um fluxo de eventos para um registo distribuído e unificado com tolerância a falhas.The data is ingested as a stream of events into a distributed and fault tolerant unified log. Estes eventos são ordenados e o estado atual de um evento é alterado apenas por um novo evento que está a ser anexado.These events are ordered, and the current state of an event is changed only by a new event being appended. Da mesma forma que na camada de velocidade de uma arquitetura de lambda, todo o processamento de eventos é efetuado no fluxo de entrada e é persistente como uma vista em tempo real.Similar to a lambda architecture's speed layer, all event processing is performed on the input stream and persisted as a real-time view.

Se precisar de reprocessar todo o conjunto de dados (equivalente ao que a camada de lotes faz na arquitetura de lambda), basta reproduzir o fluxo, normalmente utilizando o paralelismo para concluir a computação de forma atempada.If you need to recompute the entire data set (equivalent to what the batch layer does in lambda), you simply replay the stream, typically using parallelism to complete the computation in a timely fashion.

Internet das Coisas (IoT)Internet of Things (IoT)

De uma perspetiva prática, a Internet das Coisas (IoT) representa qualquer dispositivo que esteja ligado à Internet.From a practical viewpoint, Internet of Things (IoT) represents any device that is connected to the Internet. Isto inclui o seu PC, telemóvel, relógio inteligente, termóstato inteligente, frigorífico inteligente, automóvel ligado, implantes de monitorização cardíaca e tudo o que estabeleça ligação à Internet e envie ou receba dados.This includes your PC, mobile phone, smart watch, smart thermostat, smart refrigerator, connected automobile, heart monitoring implants, and anything else that connects to the Internet and sends or receives data. O número de dispositivos ligados aumenta diariamente, bem como a quantidade de dados recolhidos dos mesmos.The number of connected devices grows every day, as does the amount of data collected from them. Muitas vezes, estes dados são recolhidos em ambientes altamente restritos, por vezes, de alta latência.Often this data is being collected in highly constrained, sometimes high-latency environments. Noutros casos, os dados são enviados de ambientes de latência baixa por milhares ou milhões de dispositivos, que requerem a capacidade de rapidamente incorporar os dados e processá-los em conformidade.In other cases, data is sent from low-latency environments by thousands or millions of devices, requiring the ability to rapidly ingest the data and process accordingly. Por conseguinte, é necessário um planeamento adequado para processar estas restrições e os requisitos exclusivos.Therefore, proper planning is required to handle these constraints and unique requirements.

As arquiteturas condicionadas por eventos estão no centro das soluções de IoT.Event-driven architectures are central to IoT solutions. O diagrama seguinte mostra uma arquitetura lógica possível para IoT.The following diagram shows a possible logical architecture for IoT. O diagrama realça os componentes de transmissão em fluxo de eventos da arquitetura.The diagram emphasizes the event-streaming components of the architecture.

Arquitetura de IoT

O gateway de cloud ingere os eventos de dispositivos no limite da cloud, através de um sistema de mensagens fiável de baixa latência.The cloud gateway ingests device events at the cloud boundary, using a reliable, low latency messaging system.

Os dispositivos podem enviar eventos diretamente para o gateway de cloud ou através de um gateway de campo.Devices might send events directly to the cloud gateway, or through a field gateway. Um gateway de campo é um software ou dispositivo especializado, normalmente na mesma localização dos dispositivos, que recebe eventos e os reencaminha para o gateway de cloud.A field gateway is a specialized device or software, usually collocated with the devices, that receives events and forwards them to the cloud gateway. O gateway de campo também pode pré-processar os eventos de dispositivos não processados, ao executar funções como a filtragem, a agregação ou a transformação de protocolos.The field gateway might also preprocess the raw device events, performing functions such as filtering, aggregation, or protocol transformation.

Após a ingestão, os eventos passam por um ou mais processadores de fluxos que podem encaminhar os dados (por exemplo, para o armazenamento) ou realizar análises e outros processamentos.After ingestion, events go through one or more stream processors that can route the data (for example, to storage) or perform analytics and other processing.

Seguem-se alguns tipos comuns de processamento.The following are some common types of processing. (Esta lista não é de todo exaustiva.)(This list is certainly not exhaustive.)

  • Escrita de dados de eventos no armazenamento amovível, para arquivo ou análise de lotes.Writing event data to cold storage, for archiving or batch analytics.

  • Análise de caminhos de acesso frequente, mediante a análise do fluxo de eventos (quase) em tempo real, para detetar anomalias, reconhecer padrões ao longo de períodos de tempo sucessivos ou acionar alertas quando ocorre uma condição específica no fluxo.Hot path analytics, analyzing the event stream in (near) real time, to detect anomalies, recognize patterns over rolling time windows, or trigger alerts when a specific condition occurs in the stream.

  • Processamento de tipos especiais de mensagens sem ser de telemetria provenientes dos dispositivos, como notificações e alarmes.Handling special types of nontelemetry messages from devices, such as notifications and alarms.

  • Aprendizagem automática (Machine Learning).Machine learning.

As caixas apresentadas com um sombreado cinzento mostram os componentes de um sistema de IoT que não estão diretamente relacionados com a transmissão em fluxo de eventos, mas são incluídos aqui a fim de proporcionar uma perspetiva completa.The boxes that are shaded gray show components of an IoT system that are not directly related to event streaming, but are included here for completeness.

  • O registo de dispositivos é uma base de dados de dispositivos aprovisionados, incluindo os IDs dos dispositivos e, normalmente, os metadados dos dispositivos, como a localização.The device registry is a database of the provisioned devices, including the device IDs and usually device metadata, such as location.

  • A API de aprovisionamento é uma interface externa comum para aprovisionar e registar novos dispositivos.The provisioning API is a common external interface for provisioning and registering new devices.

  • Algumas soluções de IoT permitem o envio de mensagens de comando e controlo para os dispositivos.Some IoT solutions allow command and control messages to be sent to devices.

Serviços do Azure relevantes:Relevant Azure services:

Leia Azure IoT reference architecture (Arquitetura de referência do IoT do Azure) para saber mais sobre IoT no Azure.Learn more about IoT on Azure by reading the Azure IoT reference architecture.