Logo Passei Direto
Buscar

2 - Arquiteturas de hardware_software de big data

Capítulo sobre arquiteturas de hardware e software para big data: objetivos (exemplificar arquiteturas, ilustrar software, configurar ambiente de programação), conceitos de ETL, camadas de computação e computação em cluster com pool de recursos, alta disponibilidade e escalabilidade.

Ferramentas de estudo

Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Escolha uma das opções e acesse esse e outros materiais sem bloqueio. 🤩

Cadastre-se ou realize login

Ao continuar, você aceita os Termos de Uso e Política de Privacidade

Prévia do material em texto

1 Arquiteturas de hardware/software de big data 
Arquiteturas de hardware/software de big data 2 
Arquiteturas de hardware/ 
software de big data
Objetivos de aprendizagem
Ao final deste texto, você deve apresentar os seguintes 
aprendizados: 
 Exemplificar arquiteturas de hardware para big data.
 Ilustrar arquiteturas de software para big data.
 Configurar um ambiente de programação para big data.
Introdução 
Big data é um termo genérico para as estratégias e tecnologias não 
tradicionais necessárias para reunir, organizar, processar e coletar 
insights de grandes conjuntos de dados. Embora o problema de 
trabalhar com dados — que ultrapassa o poder de computação ou 
do armazenamento em um único computador — não seja novo, a 
difusão, a escala e o valor desse tipo de computação aumentaram 
muito nos últimos anos. Apesar de as abordagens de 
implementação serem diferentes, existem alguns pontos em 
comum nas estratégias e no software. Mesmo que as etapas que 
você verá possam não ser verdadeiras em todos os casos de uso, 
iremos tratar de nomenclaturas e termos comuns amplamente 
usados em se tratando de big data. 
Portanto, neste capítulo, você estudará sobre big data em um 
nível de fundamentação em arquitetura de hardware e software em 
servidores para lidar com grandes conjuntos de dados, partindo de 
conceitos comuns em pesquisas sobre o assunto, mas também 
examinando em alto nível alguns dos processos e tecnologias 
atualmente em uso nesse ambiente de big data. 
 3 Arquiteturas de hardware/software de big data 
1 Arquitetura de hardware em big data 
Um dos primeiros passos para lidar com big data é, sem dúvidas, o 
planejamento. Por mais que tenhamos vivido tempos em que lidar com 
dados não era algo tão complexo, na atualidade, isso tem se tornado um 
desafio contínuo. Mas não por acaso, afinal, os computadores e os 
servidores de dados que temos não foram criados no princípio da 
popularização da computação para lidar com grande volume de dados. 
Com um projeto bem feito, deve ser levado em consideração que tipo 
de dado, com que frequência e em quais condições os dados se encontram. 
Todo um processo de ETL (Extração, Transformação e Carga, do inglês, 
Extract, Transform, Load) deve ser planejado e o armazenamento dos 
dados deve estar à altura do que poderá ser exigido dele. Depois que os 
dados estiverem disponíveis, o sistema poderá começar a processar os 
dados para exibir informações reais. A camada de computação é talvez a 
parte mais diversa do sistema, pois os requisitos e a melhor abordagem 
podem variar de maneira significativa, dependendo do tipo de informação 
que se queira extrair dos dados. Estes são frequentemente processados, 
repetidamente e iterativamente por uma única ferramenta ou usando várias 
ferramentas para apresentar diferentes tipos de insights. 
Os requisitos básicos para trabalhar com big data são os mesmos para 
trabalhar com conjuntos de dados de qualquer tamanho. No entanto, a 
escala massiva, a velocidade de ingestão e processamento e as 
características dos dados que devem ser tratados em cada etapa do processo 
apresentam novos desafios significativos ao projetar soluções. O objetivo 
da maioria dos sistemas de big data é apresentar informações e conexões 
de grandes volumes de dados heterogêneos que não seriam possíveis 
usando-se métodos convencionais. Para isso, são utilizadas técnicas 
específicas, como a computação em cluster. 
Computação em cluster 
A computação em cluster é a prática de agrupar os recursos de várias 
máquinas e gerenciar os seus recursos coletivos para concluir tarefas. Os 
clusters de computadores exigem uma camada de gerenciamento de cluster, 
que lida com a comunicação entre os nodos individuais e coordena a 
atribuição do trabalho. 
Devido às características de big data, computadores individuais 
geralmente são inadequados para lidar com os dados de forma satisfatória. 
 
Arquiteturas de hardware/software de big data 4 
Para atender melhor às altas necessidades computacionais de 
armazenamento e big data, os clusters de computadores são mais 
adequados. Segundo Sharda, Delen e Turban (2019), um clustering de big 
data combina os recursos de muitas máquinas menores, buscando fornecer 
vários benefícios, como os listados a seguir. 
 Pool de recursos: combinar o espaço de armazenamento disponível 
para armazenar dados é um benefício claro, mas o conjunto de CPU e 
memória também é extremamente importante. O processamento de 
grandes conjuntos de dados requer grandes quantidades de todos esses 
três recursos. 
 Alta disponibilidade: os clusters podem fornecer níveis variados de 
tolerância a falhas e garantias de disponibilidade para impedir que 
falhas de hardware ou software afetem o acesso a dados e 
processamentos. Isso se torna cada vez mais importante à medida que 
continuamos enfatizando a importância da análise em tempo real. 
 Escalabilidade fácil: os clusters facilitam o dimensionamento 
horizontal adicionando máquinas ao grupo. Isso significa que o sistema 
pode reagir a alterações nos requisitos de recursos sem expandir os 
recursos físicos em uma máquina. 
A formulação física de clusters depende apenas que os computadores que 
comporão o conjunto de clustering “falem a mesma língua”. Ou seja, é preciso 
que haja uma configuração padrão entre as máquinas, como um mesmo 
sistema base, que permita que haja um padrão entre todos os computadores 
em rede. A Figura 1 representa a ideia de clusterização, com computadores 
interligados dividindo entre si a carga de trabalho de suas tarefas. 
 
 
 
 5 Arquiteturas de hardware/software de big data 
Um cluster pode partir da união de simples computadores, como 
apresentado na Figura 1. Mas, geralmente, são formados por servidores, 
máquinas com arquitetura física diferente, algumas vezes mais compacta, 
permitindo que vários deles sejam armazenados em um mesmo rack, por 
exemplo. 
Segundo West, Dean e Andrews (2019), um rack serve para otimizar o uso 
de salas em datacenters, por permitir que possamos empilhar equipamentos 
com o espaço e ventilação adequados, além de facilitar o acesso aos 
dispositivos que estão instalados no rack. Eles podem ser abertos, para 
facilitar o acesso, ou fechados para aumentar a proteção física. Dentre os 
equipamentos que podemos colocar em um rack, estão os servidores e 
equipamentos de rede, como roteadores, switches, patch-panels, entre outros. 
A Figura 2 apresenta um exemplo de um datacenter com racks contendo 
diversos equipamentos. 
 
Um cluster de computadores atua como uma base com a qual outros 
softwares interagem para processar os dados. As máquinas envolvidas no 
cluster também costumam estar envolvidas no gerenciamento de um sistema 
de armazenamento distribuído. 
 
 
 
Arquiteturas de hardware/software de big data 6 
Morais et al. (2018) apresentam o cluster de computadores como 
alternativa ao processamento convencional de dados, sendo baseado nos 
conceitos de computação paralela e distribuído por meio do uso de 
computadores de baixo um custo. A ideia de cluster é dividir cada tarefa em 
subtarefas, que serão executadas paralelamente em diversos computadores. 
Mas, ainda segundo Morais et al. (2018), essa tarefa não é trivial, pois acaba 
exigindo um dimensionamento exato das subtarefas, além de ter a necessidade 
de tratar o balanceamento de carga e o escalonamento das tarefas; tudo isso 
com o objetivo de utilizar os recursos computacionais de maneira plena. 
 
O uso de clusters requer uma solução para gerenciar a associação aos nós, 
coordenar o compartilhamento de recursos e agendar o trabalho real em nós 
individuais. A associação ao cluster e a alocação de recursos podem ser 
gerenciadas por software, como o YARN do Hadoop (que significa Yet 
Another Resource Negotiator, em inglês, ou algo como outro negociador de 
recursos) ou também o Apache Mesos. 
O Apache Mesos foi desenvolvido utilizando-se os mesmos princípios que o kernel 
Linux, apenasem um nível diferente de abstração. O kernel do Mesos é executado 
em todas as máquinas e fornece aplicativos (p. ex., Hadoop, Spark, Kafka, 
Elasticsearch) com APIs para gerenciamento e agendamento de recursos em todo 
o datacenter e ambientes em nuvem. 
Como fazer o projeto de hardware para big data? 
 
Devido à alta velocidade em que o hardware evolui, não é possível fixar 
os valores de memória, disco e CPU que seriam os mais adequados para a 
implantação de um sistema de big data. Qualquer informação relacionada a 
requisito básico de infraestrutura para big data que estimássemos aqui, 
estaria defasado no próximo ano. Diversos fatores devem ser levados em 
consideração, ao planejarmos o hardware a ser utilizado em soluções para 
big data: 
• Quais são as restrições financeiras que devem ser observadas: isso 
impacta em toda o projeto da arquitetura. 
 7 Arquiteturas de hardware/software de big data 
• Quais os tipos de dados a serem armazenados: formato dos dados, 
tamanho médio, dados estáticos ou dados de stream, etc. 
• Por quanto tempo esses dados ficarão disponíveis: quando 
conseguimos delimitar um tempo em que o dado não será mais útil, 
podemos economizar espaço em disco ao agendar deleções periódicas. 
• Que tipo de análise será feita nestes dados: por exemplo, o uso de 
redes neurais, uma técnica de aprendizado de máquina, impacta em alto 
consumo de CPU ou GPU. 
• Quais sistemas e frameworks serão utilizados: cada sistema que 
compõe um ecossistema de big data tem seus próprios requisitos, que muitas 
vezes precisarão ser somados para chegarmos a uma configuração ideal. 
• Estratégia de replicação: quantas réplicas eu preciso dos meus dados? 
Quanto mais réplicas, mais disco (HD) será consumido. 
• A instalação será on-premise (local) ou em cloud (na nuvem): quando 
a instalação é local, trazemos para nós toda a responsabilidade em relação a 
projeto, configuração e manutenção do hardware, mas por outro lado não 
há o custo do serviço. Já em ambientes da nuvem, esse trabalho é 
terceirizado, com um custo que pode ser fixo ou variável ao mês. 
Para a simulação do desempenho de hardware e software de um 
ambiente de big data, você pode utilizar um benchmark. Um benchmark é 
um sistema que possibilita a geração dos dados e análise de desempenho do 
sistema como um todo. Existem alguns benchmarks específicos para big 
data, que você pode utilizar para testar seu ambiente, como o GridMix 
(http://hadoop.apache.org/docs/r1.2.1/gridmix.html), desenvolvido pela 
apache e específico para clusters Hadoop, e o HiBench 
(https://github.com/Intel-bigdata/HiBench), uma suíte de micro-
benchmark,, com workloads para Hadoop, Spark Streaming, Storm, Flink, 
entre outros. 
 
2 Arquitetura de software para big data 
A arquitetura de software é composta por todos os sistemas, bibliotecas e 
frameworks que são utilizados para compor o ecossistema. Uma tarefa 
importante de quem lida com big data é a inserção ou a ingestão de dados nos 
sistemas de armazenamento. Essa inserção é o processo de pegar dados brutos 
e adicioná-los ao sistema. A complexidade dessa operação depende muito do 
formato e da qualidade das fontes de dados e da distância que os dados estão 
do estado desejado antes do processamento. Geralmente, quando falamos de 
grandes conjuntos de dados e big data, estamos falando de dados 
heterogêneos, ou seja, que são em formatos e tamanhos variados, como 
imagens, vídeos, áudios, textos, entre outros. 
De acordo com Castro et al. (2016), as ferramentas Sqoop, Flume e Kafka 
fazem parte do ecossistema Hadoop, da fundação Apache, em processos que 
 
Arquiteturas de hardware/software de big data 8 
incluem a inserção de dados, assim como acompanhamento de logs e fila de 
processos de big data. Tecnologias como o Apache Sqoop podem pegar dados 
existentes de bancos de dados relacionais e adicioná-los a um sistema de big 
data. Da mesma forma, o Apache Flume é um projeto criado para agregar e 
importar logs de aplicativos e servidores. Sistemas de captura de stream, como 
o Apache Kafka, também podem ser usados como uma interface entre vários 
geradores de dados e um sistema de big data. Outras estruturas de ingestão 
podem ajudar a agregar e normalizar a saída dessas ferramentas no final do 
pipeline de ingestão. 
Durante o processo de ingestão, geralmente ocorre algum nível de análise, 
classificação e rotulagem dos dados. Às vezes, esse processo é chamado de 
ETL (que significa, em português, extração, transformação e carga) (Figura 
3). Embora esse termo se refira convencionalmente a processos de data 
warehouse, alguns dos mesmos conceitos se aplicam aos dados que entram no 
sistema de big data. As operações típicas podem incluir modificar os dados 
recebidos para formatá-los, categorizar e rotular dados, filtrar dados 
desnecessários ou incorretos, ou validar potencialmente a conformidade com 
certos requisitos. 
 
Como mostrado na Figura 3, o processo de ETL é um ciclo que passa por 
três etapas. Na etapa de extração é onde se obtém os dados, em seu formato 
original e bruto. Para que ele se adapte à arquitetura de big data que será 
utilizada, os dados serão transformados em uma segunda etapa, sendo tratados 
quanto ao seu formato. Após os devidos ajustes e padronizações dos dados, 
 
 
 9 Arquiteturas de hardware/software de big data 
eles serão carregados ou inseridos dentro de uma base de dados que, nesse 
caso, pode ser em ambiente distribuído e clusterizado. 
Os processos de ingestão normalmente entregam os dados aos 
componentes que gerenciam o armazenamento, para que possam ser mantidos 
no disco de maneira confiável. Embora isso pareça uma operação simples, o 
volume de dados recebidos, os requisitos de disponibilidade e a camada de 
computação distribuída tornam necessários os sistemas de armazenamento 
mais complexos. 
Isso geralmente significa utilizar um sistema de arquivos distribuído para 
armazenamento de dados brutos. Soluções como o sistema de arquivos HDFS 
(Hadoop Distributed File System ou sistema de arquivos distribuídos 
Hadoop), parte integrante do Apache Hadoop, permitem que grandes 
quantidades de dados sejam gravadas em vários nodos no cluster. Utilizar esse 
sistema de arquivos garante que os dados possam ser acessados por recursos 
de computação, carregados na memória RAM do cluster para operações em 
cache. 
Os dados também podem ser importados para outros sistemas distribuídos 
para um acesso mais estruturado. Bancos de dados distribuídos, especialmente 
os NoSQL, são adequados para essa função, porque geralmente são projetados 
com as mesmas considerações de tolerância a falhas e permitem manipular 
dados heterogêneos. Existem tipos diferentes de bancos de dados distribuídos, 
de acordo com o seu tipo de dado, e dependendo de como você deseja 
organizar e apresentar os dados. Para saber mais sobre algumas das opções e 
para qual finalidade elas servem melhor, basta realizar uma pesquisa sobre um 
comparativo entre os bancos de dados tradicionais (modelo relacional) e os 
não relacionais (NoSQL). 
3 Utilizando o ambiente de big data 
A melhoria do desempenho do acesso a arquivos é um grande desafio nos 
serviços em nuvem em tempo real. O sistema distribuído é um conjunto de 
diferentes computadores que, interligados por meio de uma rede, apresentam-
se ao usuário como um sistema único e com coerência (TANENBAUM; BOS, 
2016). Trabalhar com arquivos distribuídos requer uma estrutura bem 
preparada para isso. É preciso analisar as pré-condições para lidar com esse 
problema, considerando os aspectos de requisitos, hardware, software e os 
ambientes de rede para aplicações em nuvem. Antes de mais nada, a análise 
dos tipos diferentes de arquivos envolvidos faz toda a diferença na escolha da 
 
Arquiteturas de hardware/software de big data 10 
técnica ou ferramenta ideal. A seguir, vamos analisar algumas das opções de 
utilização de sistemas e ecossistemas para o processamento de big data, dando 
maiorenfoque ao Apache Hadoop, por ser a ferramenta mais utilizada para 
big data atualmente. 
É possível criar instâncias de uso de projetos com o Apache Hadoop em 
nuvem, em serviços gratuitos ou pagos. A Cloudera disponibiliza um cluster 
virtualizado que você pode usar para aprender mais sobre clusters baseados 
em Hadoop, tendo já instaladas e configuradas diversas aplicações, e também 
um tutorial que leva o passo a passo na execução de algumas tarefas para 
entender o ambiente. Você pode fazer o download de forma gratuita, para 
testar e entender melhor como funciona um ecossistema de big data. 
Há também a possibilidade de utilizar containers, do tipo Docker, que se 
encontram disponíveis na internet para download gratuito. Um container 
reúne uma aplicação de maneira compacta, criando um ambiente à parte do 
sistema operacional da máquina local, pronto para ser baixado ou enviado para 
um ambiente, seja local ou externo. 
 
Ecossistema Hadoop 
O Hadoop é um sistema tão poderoso que acabou sendo adotado como base e 
padrão para diversas outras tecnologias. Dentro do ecossistema do Hadoop 
existem diferentes ferramentas, cada uma com um modelo de operação. Em 
um projeto de implementação de sistema de controle e gerenciamento de 
arquivos distribuídos, ao descrever o design e a implementação de um novo 
sistema distribuído em camadas, podemos nos basear nos modelos: HDFS, 
para armazenar grandes conjuntos de dados de maneira distribuída, em 
conjunto com o MapReduce, que tem por responsabilidade o processamento 
distribuído (GOLDMAN et al., 2012, documento on-line). O Hadoop nasceu 
com base na leitura de um projeto lançado pela empresa Google, em 2003, 
chamado GFS (Google File System), cujo objetivo era aprimorar o mecanismo 
 
 
 
 11 Arquiteturas de hardware/software de big data 
de busca da empresa, com a capacidade de gerenciar e processar os enormes 
volumes de dados da Google. 
Logo, podemos dizer que essa estrutura poderosa do Hadoop foi criada 
justamente para atender à demanda crescente de processar grandes volumes 
de dados em um mundo cada dia mais conectado e gerando quantidade de 
dados nunca imaginada. 
Dentro da plataforma Hadoop existe o HDFS, o qual é empregado no uso 
de caches em uma biblioteca cliente e em vários serviços de cache. Os serviços 
de cache são projetados com três camadas de acesso: um cache na memória, 
uma captura instantânea do disco local e a exibição real do disco, fornecido 
pelo HDFS (MORAIS et al., 2018). Os arquivos carregados do HDFS são 
armazenados em cache na memória compartilhada, que pode ser acessada 
diretamente por uma biblioteca e um sistema cliente. Dentro do uso de HDFS 
é comum o processamento em lote. Este processamento é um método de 
computação em um grande conjunto de dados. O processo envolve dividir o 
trabalho em partes menores, agendar cada peça em uma máquina individual, 
reorganizar os dados com base nos resultados intermediários e, em seguida, 
calcular e montar o resultado final. Essas etapas geralmente são chamadas 
individualmente de divisão, mapeamento, reprodução aleatória, redução e 
montagem ou, coletivamente, como um algoritmo de redução de mapa 
distribuído (RAMAKRISHNAN; GEHRKE, 2011). Essa também é a 
estratégia usada pelo MapReduce, do Apache Hadoop. O processamento em 
lote é mais útil ao lidar com conjuntos de dados muito grandes, pois exigem 
mais poder computacional. 
Hadoop MapReduce é, portanto, um framework, uma técnica ou 
paradigma de programação que permite que usuários criem programas e 
aplicações divididos em componentes, podendo, assim, permitir que os dados 
sejam processados paralelamente (SHARDA; DELEN; TURBAN, 2019). 
Com essa divisão modular, a aplicação passa a funcionar estando em cluster, 
com duas subdivisões de código: Map e Reduce. 
 A função chamada map() executa uma filtragem e classificação dos 
dados. Essa etapa tem a responsabilidade de realizar o processo de um ou mais 
blocos de dados, produzindo resultados comumente chamados de resultados 
intermediários. Em geral, a tarefa de mapeamento é processada em paralelo, 
desde que as operações de mapeamento sejam independentes entre si. A tarefa 
Reduce é executada por meio da função reduce(). Esta função é a 
responsável pela consolidação dos resultados produzidos por meio de cada 
uma das tarefas Map e entra em ação logo após a etapa de tarefa Map. 
 
Arquiteturas de hardware/software de big data 12 
Tudo isso é realizado em nível de programação. Ao instalar o HDFS, uma 
biblioteca com a tarefa MapReduce está disponível, podendo ser usada em 
linguagens como Java, Python, R e Scala. Assim, em alto nível, o programador 
pode definir de onde vêm os dados, em que quantidade serão processados e 
posteriormente carregados para um ambiente de armazenamento de dados (de 
preferência um sistema de armazenamento distribuído e preparado para o 
universo big data). 
Além do HDFS edo MapReduce, o Hadoop conta com mais dois 
componentes básicos: o Common, que e o conjunto de bibliotecas utilizada no 
sistema, e o YARN, que é o gerenciador de recursos do sistema. 
O ecossistema Hadoop é um sistema complexo que permite o acoplamento 
de diversos outros sistemas com funções variadas. Ele foi projetado para a 
expansão de servidores únicos para milhares de máquinas, cada uma 
oferecendo computação e armazenamento local. Em vez de confiar no 
hardware para oferecer alta disponibilidade, a própria biblioteca foi projetada 
para detectar e manipular falhas na camada de aplicativos, oferecendo um 
serviço altamente disponível em cima de um cluster de computadores, cada 
um dos quais pode estar sujeito a falhas, sendo estas verificadas e tratadas em 
tempo oportuno. 
 
Utilizando HDFS 
Ao utilizar um sistema de arquivos distribuídos com Hadoop, vários 
aplicativos integrados a uma biblioteca cliente podem acessar um serviço de 
cache simultaneamente. Os serviços de cache são organizados no estilo Ponto 
a Ponto (P2P), usando uma tabela hash distribuída. Cada arquivo em cache é 
dividido em blocos a fim de melhorar a robustez e aliviar a carga de trabalho. 
Resultados experimentais mostram que o novo sistema de cache pode 
armazenar arquivos com uma ampla variedade de tamanhos e tem 
desempenho excelente de acesso aos arquivos, trabalhando com taxa de 
retorno em milissegundos para ambientes altamente simultâneos. 
Dentro do contexto do HDFS, existem elementos que tornam a estrutura 
útil para diversas aplicações. Com o uso dessa arquitetura, a arquitetura HDFS 
tem alguns elementos, como o NameNode, que é o nó central que serve de 
referência para as aplicações de clientes solicitantes, e os DataNodes, os nós 
que armazenam os blocos de dados. A ilustração da arquitetura HDFS é 
estruturada conforme a apresentada na Figura 4. 
 13 Arquiteturas de hardware/software de big data 
 
 
Box Exemplo – Como funciona a arquitetura de hardware e software 
do Apache Hadoop: 
Um cluster para big data é formado por nodos, cada um com 
diferentes atribuições. Em uma configuração padrão, temos um nodo 
mestre associado a n nodos trabalhadores. No Hadoop o nodo mestre é o 
NameNode, e os trabalhadores são os DataNodes 
• NameNode: normalmente executa em um computador 
dedicado a este serviço. Armazena informações sobre o cluster 
e suas configurações, como quais são os DataNodes ativos, 
além de informações sobre o sistema de arquivos, como a lista 
de blocos de dados e em quais DataNodes eles estão. É o ponto 
central do cluster Hadoop, que mantém as informações para a 
interligação entre todos os nodos. 
• DataNodes: são executados em todas as outras máquinas do 
cluster – normalmente um DataNode em cada computador 
(embora seja possível – mas não comum – haver mais de um 
DataNode por computador. Armazenam os blocos de dados, e 
disponibilizam o serviço de leitura e escrita para os clientes do 
 
 
 
Arquiteturas de hardware/software de big data 14 
sistema, e também criam, deletam e replicam os blocos de 
dados,seguindo as ordens do NameNode. 
Quanto ao armazenamento, distribuição e particionamento, em um 
cluster Hadoop, o NameNode é responsável por: 
• operações como abrir, fechar e renomear os arquivos e 
diretórios; 
• receber as requisições de armazenamentos de dados, e então: 
o particionar cada arquivo a ser armazenado em um ou 
mais blocos, de tamanho padrão igual a 128MB; 
o distribuir cada bloco para um ou mais DataNodes, de 
acordo com o fator de replicação pré-configurado 
(usualmente igual a três); 
A vantagem de termos os dados particionados e replicados no cluster é 
relacionada ao processamento paralelo e distribuído. Os dados são 
processados localmente, nos DataNodes em que se localizam, e isso 
permite que mais trabalhos sejam executados concomitantemente, nos 
diversos DataNodes, aproveitando o poder de processamento disponível no 
cluster, e consequentemente impactando no desempenho. 
Quanto ao sistema operacional, usualmente executam sobre 
GNU/Linux, todavia, como o Hadoop é desenvolvido em linguagem de 
programação Java, qualquer máquina que suporte Java poderia ser 
utilizada. 
Quanto à rede, ao trabalharmos com diferentes computadores, é 
importante ter atenção ao planejamento e à qualidade da infraestrutura, para 
tratar e reduzir problemas como a latência ou mesmo falhas. Quando há 
uma queda em algum setor da rede, alguns DataNodes podem perder a 
conexão com o NameNode. O NameNode recebe periodicamente 
heartbeats de cada DataNode, que são avisos de que estão ativos e sem 
falha. Caso não receba o aviso, após um tempo o NameNode vai entender 
que os blocos que estão nestes nodos inacessíveis terão que ser replicados 
novamente. Se essa replicação ocorrer, e os nodos que antes estavam 
inacessíveis se tornarem novamente visíveis na rede, o NameNode dará 
início ao processo de formatação dos nodos que haviam falhado. Esse 
processo é conhecido como “STONITH” (Shoot The Other Node In The 
Head), e serve para manter a consistência dos blocos e da replicação dentro 
do cluster. 
 
 15 Arquiteturas de hardware/software de big data 
O Hadoop foi projetado partindo do pressuposto que a falha do hardware 
onde estão os arquivos e os dados é uma regra e não uma exceção. Mais cedo 
ou mais tarde, todo hardware apresenta falhas e o sistema deve ser robusto e 
capaz o suficiente para lidar com as falhas de hardware que venham a 
acontecer. Com a sua estrutura em condições ideais, o uso do HDFS em 
ambiente preparado é um eficaz método de processamento e consulta a dados 
em arquivos em tempo real. Com a proposta de unificar dados e articular 
processos com arquivos, o HDFS é uma ótima solução, visto que unifica a 
visão de arquivos de diferentes formatos e vindos de fontes distintas. 
 
Outras componentes relacionados ao ecossistema do Hadoop 
Outros sistemas que fazem parte do ecossistema Hadoop realizam funções 
complementares entre si. O Apache Spark oferece maneiras diferentes de 
obter processamento em tempo real ou quase em tempo real. Existem trade-
off s com cada uma dessas tecnologias, que podem afetar qual abordagem é 
melhor para qualquer problema individual. Em geral, o processamento em 
tempo real é mais adequado para analisar blocos menores de dados que estão 
mudando ou sendo adicionados rapidamente ao sistema. 
Outras ferramentas frequentemente se conectam às estruturas acima e 
fornecem interfaces adicionais para interagir com as camadas subjacentes. Por 
exemplo, o Apache Hive fornece uma interface de data warehouse para o 
Hadoop, o Apache Pig fornece uma interface de consulta de alto nível 
(SHARDA; DELEN; TURBAN, 2019), enquanto as interações semelhantes a 
SQL com dados podem ser alcançadas com projetos como Apache Drill, 
Apache Impala e Presto (CURSOS de Apache Drill..., 2020). Para o 
aprendizado de máquina (machine learning), projetos como Apache Mahout, 
Hadoop Submarine e MLlib podem ser úteis (USE o Apache Spark..., 2019). 
Para a programação de análise direta com amplo suporte no ecossistema de 
big data, as linguagens R, Python e suas respectivas bibliotecas são escolhas 
muito recorrentes (RAYTHZ, 2018). Cassandra, HBase, Hive são aplicações 
que podem ser utilizados junto à camada de armazenamento de dados do 
ecossistema Hadoop. 
Armazenando dados no ecossistema Hadoop 
A implementação da arquitetura de big data traz muitos desafios. As 
informações dependem de dados estáticos armazenados centralmente. Para o 
armazenamento de dados, o ecossistema Apache Hadoop disponibiliza opções 
 
Arquiteturas de hardware/software de big data 16 
como as soluções HBase e Hive, além de outras soluções de fora do 
ecossistema Hadoop, que também se conectam a essa plataforma. A seguir, 
vamos detalhar um pouco mais sobre as três principais. 
 Cassandra: banco de dados NoSQL baseado no Bigtable da Google, no 
modelo orientado a colunas (ou família de colunas). Foi criado 
originalmente pela equipe de desenvolvedores do Facebook, 
posteriormente passou a ser open-source e mantido pela fundação 
Apache (LEITE; BONOMO, 2016). 
 HBase: banco de dados orientado a colunas baseado no Bigtable. Foi 
criado especificamente para o ecossistema Hadoop e é otimizado para 
trabalhar com a tarefa MapReduce em seu contexto (BRAHIM; 
CAMPOS, 2019). 
 Hive: software de data warehouse dentro do ecossistema Hadoop. Ele 
não é um banco de dados propriamente dito, mas uma central de 
armazenamento de dados capaz de lidar com milhares de requisições 
ao mesmo tempo, além de oferecer uma interface de consulta de dados 
semelhante ao que se tem em bancos de dados relacionais, inclusive 
com sua versão da linguagem SQL, chamada de HiveQL (SHARDA; 
DELEN; TURBAN, 2019). 
Podemos concluir que o uso do ecossistema Hadoop é de fundamental 
importância para projetos maiores e mais complexos, visto que o ecossistema 
criado pela fundação Apache não apresenta apenas uma ferramenta, mas um 
conjunto delas, em que é possível criar um ambiente propício para lidar com 
grandes volumes de dados. 
Finalizando, podemos dizer que big data é um assunto amplo e em rápida 
evolução. Embora não seja adequado para todos os tipos de computação, 
muitas organizações estão recorrendo a big data para certos tipos de cargas de 
trabalho e utilizando isso para complementar as suas ferramentas de análises 
e relatórios aprofundados de negócios. Os sistemas de big data são adequados 
de maneira única à superfície de padrões difíceis de detectar e à percepção de 
comportamentos impossíveis de serem encontrados por meios convencionais. 
Ao implementar corretamente sistemas que lidam com big data, as 
organizações podem obter um valor incrível a partir dos dados que já estão 
disponíveis. 
 17 Arquiteturas de hardware/software de big data 
 
 
BORTHAKUR, D. HDFS architecture guide. c2008. Disponível em: 
https://hadoop.apache. org/docs/r1.2.1/hdfs_design.pdf. Acesso em: 15 mar. 2020. 
BRAHIM, P. L. G.; CAMPOS, V. V. S. Soluções de modelagem de dados para Big Data 
Warehouse utilizando o Apache Hive e o software Pentaho. 2019. Trabalho de 
Conclusão de Curso (Bacharelado em Ciência da Computação) — Universidade 
Estadual de Londrina, Londrina, Pr, 2019. Disponível em: 
http://www.uel.br/cce/dc/wp-content/uploads/ ProjetoTCC-
Pedro_Luiz_Garbim_Brahim.pdf. Acesso em: 15 mar. 2020. 
CASTRO, M. O. et al. Avaliação dos Brokers Kafka e Apache Flume no contexto de 
Big Data. In: ENCONTRO ANUAL DE TECNOLOGIA DA INFORMAÇÃO, 7., 2016, 
Frederico Westphalen; SIMPÓSIO DE TECNOLOGIA DA INFORMAÇÃO DA REGIÃO 
NOROESTE 
DO RS, 7., 2016, Frederico Westphalen. Anais [...]. Frederico Westphalen, RS: IFFar/ 
UFSM, 2016. Disponível em: http://eati.info/eati/2016/assets/anais/anais.pdf. 
Acesso em: 15 mar. 2020. 
CURSOS de Apache Drill Query Optimization. Disponível em: https://www.nobleprog. 
com.br/cc/apachedrillqueryoptim?participants=1&how=public. Acesso em: 15 mar. 2020. 
GOLDMAN, A. et al. Apache Hadoop: conceitos teóricos e práticos, evolução e novas 
possibilidades. In: CONGRESSO DA SOCIEDADEBRASILEIRA DE COMPUTAÇÃO, 32., 
Curitiba. Anais [...]. Curitiba, PR: UFPR, 2012. Disponível em: http://www2.sbc.org.br/ 
csbc2012/anais_csbc/eventos/jai/artigos/JAI%20-
%20Cap%203%20Apache%20Hadoop%20conceitos%20teoricos%20e%20praticos,%20ev
olucao%20e%20novas%20 possibilidades.pdf. Acesso em: 15 mar. 2020. 
LEITE, H. P.; BONOMO, I. S. Análise comparativa de projeto e administração de banco de 
dados entre os SGBDs Cassandra e MySQL. 2016. 61 p. Trabalho de Conclusão de Curso 
(Bacharelado em Ciência da Computação) — Universidade de Brasília, Brasília, DF, 2016. 
Disponível em: 
http://www.bdm.unb.br/bitstream/10483/15681/1/2016_HermanoPortellaLeite_IgorDa
SilvaBonomo_tcc.pdf. Acesso em: 15 mar. 2020. 
MORAIS, I. S. et al. Introdução a Big Data e Internet das Coisas (IoT). Porto Alegre: 
SAGAH, 2018. 
RAMAKRISHNAN, R.; GEHRKE, J. Sistemas de gerenciamento de banco de dados. 3. ed. 
Porto Alegre: AMGH, 2011. 
RAYTHZ, N. Python vs R. 2018. Disponível em: https://imasters.com.br/data/python-vs-r. 
Acesso em: 15 mar. 2020. 
SHARDA, R.; DELEN, D.; TURBAN, E. Business intelligence e análise de dados para gestão 
do negócio. 4. ed. Porto Alegre: Bookman, 2019. 
TANENBAUM, A. S.; BOS, H. Sistemas operacionais modernos. 4. ed. São Paulo: Pearson 
Education do Brasil, 2016. 
 
Arquiteturas de hardware/software de big data 18 
USE o Apache Spark MLlib para criar um aplicativo de aprendizado de máquina e analisar 
um conjunto de dados. 2019. Disponível em: https://docs.microsoft.com/ pt-
br/azure/hdinsight/spark/apache-spark-machine-learning-mllib-ipython. Acesso em: 15 
mar. 2020. 
West, J., Dean, T., & Andrews, J. (2019). Network+ guide to networks. 8ª edição. Cengage 
Learning. 
Os links para sites da web fornecidos neste capítulo foram todos testados, e seu 
funcionamento foi comprovado no momento da publicação do material. No entanto, a 
rede é extremamente dinâmica; suas páginas estão constantemente mudando de local e 
conteúdo. Assim, os editores declaram não ter qualquer responsabilidade sobre 
qualidade, precisão ou integralidade das informações referidas em tais links. 
 
 
 
 
	Introdução
	1 Arquitetura de hardware em big data
	Computação em cluster
	2 Arquitetura de software para big data
	3 Utilizando o ambiente de big data
	Ecossistema Hadoop
	Utilizando HDFS
	Outras componentes relacionados ao ecossistema do Hadoop
	Armazenando dados no ecossistema Hadoop

Mais conteúdos dessa disciplina