Buscar

GE_ Infraestrutura de Data Science e Cloud Computing_Unidade II_DIGITAL PAGES

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 32 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

A BASE DA 
INFRAESTRUTURA 
DO DATA SCIENCE: 
HADOOP
2
UNIDADE
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 43 12/06/19 15:05
Objetivos da unidade
Tópicos de estudo
 Entender a arquitetura da infraestrutura de Big Data 
e seu histórico;
 Aprofundar sobre os componentes básicos do 
Hadoop e seus funcionamentos;
 Conhecer os componentes do ecossistema do 
Hadoop.
 Componentes principais do Hadoop 
 O que é o Hadoop?
 HDFS e MapReduce
 YARN
 Seek time x transfer time, o que faz 
diferença em soluções de Big Data
 Arquitetura Hadoop
 Cluster Hadoop
 Processamento MapReduce
 Cache distribuído e segurança
 Segurança
 Identidade do usuário
 Ecossistema Hadoop 
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 44
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 44 12/06/19 15:05
Componentes principais do Hadoop
O Data Science é ávido por dado, sua matéria-prima. Ele necessita de rápido acesso à maior 
quantidade de dados possível para obtenção de resultados signifi cativos (volume e velocidade). 
Sempre houve uma competição de recursos nas corporações entre transações OLTP (On-line 
Transaction Processing) e OLAP (On-line Analytical Processing). A primeira delas se dedica à ob-
tenção de desempenho para que as transações únicas sejam realizadas de forma mais acurada 
e rápida, com integridade de dados e de forma rápida, acontecendo em menos de uma dezena 
de segundos. As soluções de OLTP garantem que o tempo de resposta seja adequado, mesmo 
com milhões de transações iguais ocorrendo simultaneamente. 
EXEMPLIFICANDO
Um bom exemplo é o funcionamento das transações fi nanceiras, como compra por car-
tão de crédito. Os objetivos dela são a verifi cação de identidade (cartão válido, senha e 
estabelecimento), a análise de saldo e limites, a baixa de valores, o registro de paga-
mento, confi rmações e a atualização de saldo. 
A segunda delas, por sua vez, procura acelerar as análises que agrupam várias tran-
sações por diferentes ângulos ou dimensões (tempo, sequência, tipo, valores, região, 
etc.) para criar conclusões ou insights. No passado, por racionamento de recursos com-
putacionais, a concorrência entre esses dois tipos de transação acabava por priorizar as 
OLTPs, deixando as OLAPs para grupos menores dentro das corporações – os chamados 
silos –, gerando informações incompletas, não integradas ou conceitualmente diferentes 
sob o ponto de vista corporativo. 
Com a chegada das tecnologias de Big Data, inicialmente criadas para resolver os problemas 
de empresas que necessitavam de enormes volumes de dados, como Yahoo! e Google, e ao 
mesmo tempo tinham que analisar e buscar dados para os seus mecanismos de pesquisa na 
web – a abordagem dos bancos de dados relacionais (RDBMS – Relational Data Base Manage-
ment Systems) foi profundamente transformada. 
No entanto, colocar conteúdos não estruturados em RDBMS continua sendo um desafi o. 
Ele é mais indicado para transações OLTPs e o que temos na web são arquivos HTML, imagens, 
vídeos, links para outras páginas, que não precisam seguir um padrão predefi nido.
Imaginemos que uma pesquisa por qualquer palavra na internet traga todas as páginas já 
publicadas a respeito dela, com uma apresentação por relevância e atualização. A base dos 
RDBMS são os índices, arquivos secundários que organizam os dados registrados em formato 
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 45
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 45 12/06/19 15:05
O que é o Hadoop?
O Hadoop é um framework de código aberto criado pela Apache Software Foundation 
para processar e analisar imensos volumes de dados. Ele consiste em um ambiente de pro-
cessamento distribuído entre clusters de servidores para armazenar e processar dados. Para 
conseguir o que promete, o Hadoop usa seu próprio sistema de arquivos chamado HDFS 
(Hadoop Distributed File System). Seu diferencial é “entender” onde os dados estão, para que 
possa distribuir o processamento para o local correto e mais adequado. Os componentes de 
lógica do Hadoop são versões compiladas de programas em Java. 
de tabela; se a busca acontecer por uma coluna (campo) indexado, a velocidade de pesquisa 
é imediata, mesmo para grandes bancos de dados, mas se não houve um índice, o RDBMS 
buscará a informação linha a linha da tabela (Table Scan). Sendo assim, a modelagem de dados 
relacionais procura identifi car as formas de uso da base e criar estruturas que geram o melhor 
desempenho transacional.
No entanto, vale uma observação: para as transações OLAP, que precisam analisar os 
dados a partir de vários ângulos, seria necessário ter índices para todos os campos. Isso, 
na verdade, construiu uma nova forma de estruturar os dados com a estratégia contrária 
da normalização, isto é, a desnormalização. Como o volume de dados da internet cresce 
exponencialmente, mesmo as estruturas OLAPs não são suficientes para os enormes 
volumes de dados. 
A estratégia foi considerar que o Table Scan precisa ser mais rápido. Essa premissa mudou 
completamente a forma de pensar dos engenheiros de dados. Eles concluíram que uma ótima 
forma de aumentar o desempenho do Table Scan é não guardar as informações em tabelas e 
sim em colunas. Esse foi o “ovo de Colombo” das soluções de Big Data. Com essa separação, os 
scans por coluna podem ser divididos por processos e, por consequência, podem ser paraleli-
zados. Assim, haverá processos em vários servidores.
As pesquisas, então, são mapeadas, divididas por colunas, distribuídas para outros servido-
res dedicados às colunas envolvidas na consulta. Elas preparam os resultados e devolvem para 
um orquestrador que junta os dados resultantes e controla a forma como são consumidos, 
pois o tamanho da resposta sempre é muito grande também.
Hoje, todo esse conhecimento está disponível em plataformas Open Source. Há um ecos-
sistema chamado Apache Hadoop que é o motor por trás da maioria das tecnologias de Big 
Data do mercado. Ele está em evolução contínua para manter o desempenho de soluções que 
manipulam muitos dados em formatos variados.
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 46
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 46 12/06/19 15:05
CURIOSIDADE
O Hadoop foi desenvolvido em Java e, atualmente, compõe as soluções de companhias 
como Facebook, Google, Twitter, LinkedIn, Yahoo, Netfl ix, dentre outras.
Quais são os componentes do Hadoop?
Seus principais componentes são: HDFS, MapReduce e YARN.
Figura 1. Componentes do Hadoop. 
HDFS e MapReduce
O HDFS é um sistema de arquivos distribuído na base de armazenamento (storage) do 
Hadoop. Tudo é guardado em uma estrutura de combinação de chave (key) e conteúdo 
(value). Uma rotina (daemon) chamada NameNode roda no HDFS no servidor master da 
instalação. Outra rotina, denominada DataNode, roda em todos os servidores escravos.
O propósito dos NameNodes é armazenar os metadados (informações sobre os dados, 
como, por exemplo, seu tipo, localização, etc.) e também coordenar os DataNodes escravos. 
Os DataNodes, por outro lado, armazenam o dado e fi cam responsáveis pela a execução de 
Tarefas em Java
Cluster master
MapReduce
HDFS: NameNode
YARN: NodeManager
YARN: Resource Manager
Tarefas em Java
YARN: NodeManager
HDFS: DataNodeHDFS: DataNode
Cluster escravo Cluster escravo
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 47
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 47 12/06/19 15:06
tarefas com os dados que estão armazenados no seu servidor.
É dessa maneira que o HDFS garante a entrega de escalabilidade (propriedade de aumentar 
sua capacidade), tolerância a falhas (pois estamos falando de distribuição de processamento entre 
clusters), confiabilidade e armazenamento de dados em termos de gigabytes (GB) e terabytes (TB) 
com recurso de replicação. Os dados são divididos em blocos e distribuídos em várias máquinas 
separadasfísica e geograficamente. O tamanho default de cada bloco de dados é de 128 MB.
Figura 2. Arquitetura do HDFS. 
A estratégia de redundância do HDFS é a replicação de dados entre servidores nós do cluster. 
Essa configuração pode ser mudada com a parametrização, mas o default (normal) é a replica-
ção em três servidores nós diferentes para cada bloco, com uma combinação na qual sempre é 
possível recuperar todo o arquivo se algum nó de servidor falhar. Além desse recurso, há ainda 
o SecondaryNameNode que possui a capacidade de fazer checkpoints a cada hora, tornando-se 
uma réplica para o caso de falha. Os dados são sempre gravados em logs para possibilitar a re-
plicação. O arquivo original é chamado de fsImage e o log de edit log. O SecondaryNode avisa o 
primário que quer fazer um checkpoint; o primário fecha o arquivo de log atual (edit log), começa 
a trabalhar em um segundo arquivo e libera o atual edit log para o servidor secundário trabalhar. 
O secundário, por estar em modo de espera, pode se dedicar a carregar o edit log e a aplicar 
as mudanças na sua versão do arquivo em questão. Ao terminar, transfere o novo arquivo para 
o primário atualizado, avisa o primário de que o checkpoint foi terminado e o edit log antigo é 
descartado. O tamanho default de cada bloco de dados é de 128 MB.
Cluster escravo Cluster escravo
HDFS: DataNode HDFS: DataNode
Rack 1 Rack 2
HDFS: NameNode
Metadata
(nome, réplicas etc.)
Replicação
Bloco de dados Bloco de dados
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 48
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 48 12/06/19 15:06
YARN
O YARN (Yet Another Resource Negotiator) é 
uma camada de gestão de recursos do Hadoop. 
Em um cluster com muitos servidores nós, 
é um trabalho árduo gerenciar, alocar e libe-
rar recursos, tais como processamento (CPU 
ou GPU), memória e discos. O YARN é respon-
sável por esses recursos no cluster com o Ha-
doop, respondendo a solicitações das aplica-
ções. O nome do daemon que executa essa 
tarefa é ResourceManager, que fi ca no servi-
dor master, enquanto o daemon NodeMana-
ger fi ca em todos os servidores escravos. 
Figura 3. Processo de checkpoint do NameNode. 
CURIOSIDADE
O YARN nasceu devido à necessidade de aumentar o desempenho de processos em 
concorrência com o MapReduce, permitindo que outros componentes possuam priori-
dades no processamento e ampliando a gestão de tarefas entre os clusters.
NameNode SecondaryNode
editlog editlog
fslmage fslmage copiado anteriormente
Novo fslmageNovo edilog usado
durante checkpoint
Troca durante checkpoint
Merge
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 49
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 49 12/06/19 15:06
Cliente ResourceManager NodeManager
NodeManager
NodeManager
App Manager
DataNode
DataNode
DataNode
Container
App Manager
Container
App Manager
Container
Figura 4. Arquitetura do YARN. 
O ResourceManager centraliza a distribuição dos recursos e dimensiona as necessidades entre 
os serviços. O NodeManager é responsável por receber as instruções do ResourceManager e execu-
tá-las nos clusters. O Container é criado para executar as requisições que chegam no NodeManager 
e cada aplicação pode rodar em um ou mais contêineres. O Container é uma unidade de processa-
mento com memória e CPU alocada pelo NodeManager. O ApplicationMaster é responsável pelo 
MapReduce e pode solicitar a criação de mais contêineres para rodar aplicações.
O CapacityScheduler no YARN foi projetado para executar aplicativos do Hadoop, como 
um cluster compartilhado multi-tenant, de maneira amigável, maximizando a taxa de trans-
ferência e a utilização do cluster. Tradicionalmente, cada organização possui um conjunto pri-
vado de recursos de computação que tem capacidade suficiente para atender ao SLA da or-
ganização em condições de pico ou quase pico. Isso geralmente leva à má utilização média e 
sobrecarga de gerenciamento de vários clusters independentes, um para cada organização. 
O compartilhamento de clusters entre organizações é uma maneira econômica de executar 
grandes instalações do Hadoop, pois isso permite que eles colham benefícios de economias de 
escala sem criar clusters privados. No entanto, as organizações estão preocupadas em com-
partilhar um cluster, porque não querem que outras pessoas compartilhem os recursos que 
são essenciais para seus SLAs.
O CapacityScheduler é projetado para permitir o compartilhamento de um grande cluster, dando 
garantias de capacidade de cada organização. A ideia central é que os recursos disponíveis no cluster 
do Hadoop sejam compartilhados entre várias organizações que coletivamente financiam o cluster 
com base em suas necessidades de computação. Há um benefício adicional, que é a situação na qual 
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 50
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 50 12/06/19 15:06
uma organização pode acessar qualquer excesso de capacidade que não esteja sendo usado por 
outros. Isso proporciona elasticidade para as empresas de uma forma rentável.
O compartilhamento de clusters entre organizações necessita de um forte suporte para 
multilocação, já que cada organização deve ter a capacidade garantida e os recursos de se-
gurança para garantir que o cluster compartilhado seja impenetrável para um aplicativo ou 
usuário desonesto.
O CapacityScheduler fornece um conjunto estrito de limites para garantir que um único 
aplicativo – ou usuário ou fila – não possa consumir uma quantidade desproporcional de re-
cursos no cluster. Além disso, o CapacityScheduler fornece limites em aplicativos inicializados 
e pendentes de um único usuário e fila para garantir a equidade e a estabilidade do cluster.
A abstração primária fornecida pelo CapacityScheduler é o conceito de filas. Normalmen-
te, essas filas são configuradas pelos administradores, gerando a economia do cluster com-
partilhado. Para fornecer mais controle e previsibilidade no compartilhamento de recursos, 
o CapacityScheduler suporta filas hierárquicas para garantir que os recursos sejam compar-
tilhados entre as subfilas de uma organização antes que outras filas tenham permissão para 
usar recursos livres, proporcionando, assim, afinidade, compartilhando recursos livres entre 
as aplicações de uma determinada organização.
As características do CapacityScheduler são:
• Filas hierárquicas: a hierarquia de filas é suportada para garantir que os recursos sejam 
compartilhados entre as subfilas de uma organização antes que outras filas tenham permissão 
para usar recursos livres, proporcionando, assim, mais controle e previsibilidade.
• Garantias de capacidade: as filas são alocadas com uma fração da capacidade do grid 
(conjunto de clusters), no sentido que uma determinada capacidade dos recursos estará a sua 
disposição. Todos os aplicativos enviados a uma fila terão acesso à capacidade alocada para a 
fila. Os administradores podem configurar limites flexíveis e limites rígidos opcionais na capa-
cidade alocada para cada fila.
• Segurança: cada fila tem ACLs estritas que controlam quais usuários podem 
enviar aplicativos para filas individuais. Além disso, existem guardas de segu-
rança para garantir que os usuários não possam visualizar e/ou 
modificar aplicativos de outros usuários. Além disso, as fun-
ções de administrador de sistema e por fila são suportadas.
• Elasticidade: os recursos sem elasticidade podem 
ser alocados para qualquer fila além de sua capacidade. 
Quando há demanda por esses recursos de filas que execu-
tam abaixo da capacidade em um momento futuro, conforme 
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 51
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 51 12/06/19 15:06
Seek time x transfer time, o que faz diferença em 
soluções de Big Data
Ocorre ao separar os arquivos em blocos de 128 MB (ou conforme confi guração),e também 
armazenar de forma redundante (três nós por default) cada bloco, de forma que o arquivo 
as tarefas agendadas nesses recursos forem concluídas, elas serão atribuídas aos aplicativos 
em fi las em execução abaixo da capacidade (a preempção também é suportada). Isso garante 
que os recursos estão disponíveis de forma previsível e elástica para fi las, evitando assim silos 
artifi ciais de recursos no cluster que ajuda na utilização.
• Multi-tenancy: conjunto abrangente de limites que são fornecidos para impedir que um 
único aplicativo, usuário e fi la de recursos monopolize a fi la ou o cluster como um todo, garan-
tindo que o cluster não fi que sobrecarregado.
• Operabilidade: 
 o Confi guração de tempo de execução: as defi nições de fi la e propriedades, como 
capacidade e ACLs, podem ser alteradas, em tempo de execução, por administradores de for-
ma segura para minimizar a interrupção para os usuários. Além disso, um console é fornecido 
para que os usuários e administradores visualizem a alocação atual de recursos em várias fi las 
no sistema. Os administradores podem adicionar fi las em tempo de execução, mas as fi las não 
podem ser excluídas em tempo de execução.
 o Aplicativos que drenam recursos: os administradores podem interromper fi las em 
execução para garantir que os aplicativos existentes cheguem à conclusão, sem que nenhum 
novo aplicativo seja enviado. Se uma fi la estiver no estado parado, novos aplicativos não po-
dem ser enviados para ela ou para qualquer uma de suas fi las-fi lho. Aplicativos existentes na 
fi la continuam executando até a conclusão, portanto, a fi la pode ser drenada graciosamente. 
Os administradores também podem reiniciar as fi las interrompidas.
• Agendamento baseado em recursos: suporte para aplicativos com uso intensivo de 
recursos, onde um aplicativo pode opcionalmente especifi car recursos mais altos do que o 
padrão, acomodando assim aplicativos com requisitos de recursos diferentes. Atualmente, a 
memória é o requisito de recurso suportado.
• Mapeamento de fi las com base em usuário ou grupo: esse recurso permite que o usuá-
rio direcione um trabalho para uma fi la específi ca com base no usuário ou grupo.
• Agendamento prioritário: este recurso permite que os aplicativos sejam enviados e agen-
dados com prioridades diferentes. Valor inteiro maior indica prioridade maior para um aplicati-
vo. Atualmente, a prioridade do aplicativo é suportada apenas para a política de ordenação FIFO.
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 52
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 52 12/06/19 15:06
também esteja protegido. Por exemplo, um arquivo de 300 MB é dividido em três blocos: dois 
com 128 MB (A e B) e um com 44 MB (C), somente o último arquivo fica com tamanho menor 
que 128 MB para economia de espaço em disco, e cada bloco será gravado em DataNodes di-
ferentes. À primeira vista pode parecer mais lento, contudo, como cada bloco será distribuído 
por mais que um nó, eles podem ser armazenados em paralelo, isto é, a somatória do tempo 
para quebrar o arquivo em blocos (não muito custoso), o tempo de se armazenar um bloco de 
128 MB (todos ao mesmo tempo), o tempo de checagem final. O que gera um desempenho 
muito mais rápido para arquivos maiores. 
Figura 5. Blocos de Dados do HDFS. 
São usados pipelines para gravação, uma espécie de negociação para garantir que os dados a 
serem gravados passem por um “túnel” virtual entre os DataNodes. As vantagens para a leitura tam-
bém são maiores, pois podem ser paralelizadas, reduzindo o tempo de transferência (transfer time).
EXEMPLIFICANDO
Podemos comparar esse mapeamento em metadados no NameNode com a seguinte 
situação: um professor que conta quantas palavras há em um livro. Ele pode dividir, en-
tre os alunos, os capítulos do livro e pedir para que cada um conte a palavra escolhida. 
Ele, então, compila os resultados e sabe a quantidade de vezes que a palavra aparece 
no livro muito mais rápido do que se fosse fazer sozinho. Ele ainda poderia colocar mais 
alunos por capítulo, para ter uma redundância de leitura e ter a certeza do resultado, 
caso algum aluno falte na próxima aula ou tenha sido desatento. O que o MapReduce 
faz é justamente o que esse professor fez, mas de uma forma muito mais eficiente no 
que diz respeito a grandes volumes de dados.
Arquivo 3.000 MB
Preparação
NameNode
DataNode 1 DataNode 2 DataNode 3 DataNode 4
A 128 MB
B 128 MB
B 128 MB
C 44 MB
C 44 MB
A 128 MB
A 128 MB
C 44 MB
Gravação paralela
A 128 MB B 128 MB C 44 MB
Em caso de falha, as 
réplicas são usadas.
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 53
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 53 12/06/19 15:06
Arquitetura Hadoop
A arquitetura do Hadoop é baseada em clusters de serviços desenvolvidos em Java, 
com as camadas de gestão de arquivos (HDFS), de gestão de processos (YARN), de gestão 
de infraestrutura (Zookeeper e Ambari), de Metadados (HCatalog), de integração interna 
(Pig, Hive), de análise (Mahout) e computação distribuída (MapReduce). 
O Quadro 1 mostra, para melhor entendimento, essa arquitetura.
QUADRO 1. HADOOP
Cluster Hadoop
O cluster do Hadoop é uma instalação em que vários servidores são conectados e agem como se 
fossem um só, permitindo redundância e desempenho. Existem três tipos de instalação do Hadoop:
• Standalone Mode (ou instalação local): não há processos em background (daemon), com 
todos os processos rodando em uma JVM ( Java Virtual Machine). Esta confi guração é indicada 
para rodar programas MapReduce durante o desenvolvimento ou aprendizado.
• Pseudo Distributed Mode: todos os processos em background (daemon) rodam na mes-
Hadoop
Aquisição
Aquisição
Gestão
Gestão
Acesso Inteligência
Computação distribuída e gestão de recursos
YARN
Hbase
Spark
Kafka
Impala
Interno / Batch
Pig
Hive
Spark
Metadados
HCatalog
Flume
Kafka
Ambari
Zookeeper
Scoop MahoutSpark
Computação distribuída
MapReduce
HDFS
Sistema de arquivos distribuído
Sistema operacional
Java VM
Acesso
externo
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 54
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 54 12/06/19 15:06
ma máquina local, mas com independência. Pode ser usado como um ambiente intermediário 
entre desenvolvimento ou homologação, mas não é indicado para produção.
• Multi-Node Cluster Mode: todos os serviços rodam em clusters de servidores.
CORE SWITCH
SWITCH
RACK 1 RACK 2 RACK 3
NameNode SlaveNodes SlaveNodes
Secondary NameNode SlaveNodes SlaveNodes
SlaveNodes SlaveNodes SlaveNodes
SWITCH SWITCH
Figura 6. Cluster do Hadoop. 
Processamento MapReduce
O MapReduce é um modelo de programação desenhado para manipular dados de ma-
neira paralela, isto é, executando várias tarefas ao mesmo tempo, dividindo o trabalho de 
uma forma coerente e independente. 
CURIOSIDADE
O MapReduce consegue levar o processamento para o mais próximo possível de onde 
os dados se encontram, uma premissa muito importante para o Big Data: é mais barato 
mover o processamento do que os dados.
Como já vimos que os componentes são em Java, a portabilidade do código não se torna 
problema neste caso, ajudando na escalabilidade. A combinação das capacidades de distribui-
ção de armazenamento e processamento entre o HDFS e o MapReduce é o que faz o Hadoop 
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 55
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 55 12/06/19 15:06
ser o que é hoje: a espinha dorsal do Big Data. Um processo de contagem de palavras usando 
o MapReduce é parecido com o esquema da Figura 7, lembrando que pode parecer mais traba-
lhoso para um exemplo simples ou arquivos pequenos, mas quando extrapolamos o volume 
de dados para terabytes, este processo se torna muito mais efi ciente.
Quem sabia
que o
sabiá sabia
assobiar
O sabiá sabia
assobiar
Entrada Splitting Mapping Shuffl ing Reducing Resultadofi nal
O,1 sabiá,1
sabia,1
assobiar,1
O (1,1) O (2)
sabiá (1,1) sabiá (2)
assobiar (1,1) assobiar (2)
sabia (1,1,1) sabia (3)
Quem (1) Quem (1)
que (1) que (1)
Quem,1 
sabia,1
que,1 o,1
sabiá,1
sabia,1
assobiar,1
O sabiá sabia
assobiar
Quem sabia que
o sabiá sabia
assobiar ?
O,1 sabiá,2
 sabia,3
assobiar,2 
Quem,1
que,1
Figura 7. Processo de contagem de palavra do MapReduce. 
Cache distribuído e segurança
O gerenciamento de cache centralizado no HDFS é um mecanismo de cache explícito que 
permite aos usuários especifi car caminhos (paths) a serem armazenados em cache pelo HDFS. 
O NameNode se comunicará com DataNodes que têm os blocos desejados no disco e infor-
ma-os a armazenar em cache os blocos no caches fora da heap (off -heap). O gerenciamento de 
cache centralizado no HDFS tem muitas vantagens signifi cativas:
• A fi xação explícita (pinning) impede que os dados usados com frequência sejam removidos 
da memória. Isso é particularmente importante quando o tamanho do conjunto de trabalho 
excede o tamanho da memória principal, o que é comum para muitas cargas HDFS.
• Como os caches DataNode são gerenciados pelo NameNode, os aplicativos podem consultar 
os locais de cache com bloqueio para tomar decisões de posicionamento de tarefas. A localização 
conjunta de uma tarefa com uma réplica de bloco em cache melhora o desempenho de leitura.
• Quando o bloco foi armazenado em cache por um DataNode, os clientes podem usar 
uma nova API de leitura de cópia zero, mais efi ciente. Uma vez que a verifi cação de checksum 
de dados armazenados em cache é feita uma vez pelo DataNode, os clientes podem reduzir a 
sobrecarga ao usar essa nova API.
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 56
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 56 12/06/19 15:06
• O cache centralizado pode melhorar a utilização geral da memória do cluster. Ao de-
pender do cache de buffer do sistema operacional em cada DataNode, leituras repetidas 
de um bloco resultarão em todas as réplicas n do bloco que está sendo puxado para o 
cache de buffer. Com o gerenciamento de cache centralizado, um usuário pode fixar ex-
plicitamente apenas um número m das réplicas n economizando a memória da diferença 
entre n - m.
O gerenciamento centralizado de cache é útil para arquivos que são acessados re-
petidamente. Por exemplo, uma pequena tabela de fatos no Hive – que é frequentemente 
usada para junções – é um bom candidato para armazenamento em cache. Por outro lado, 
armazenar em cache a entrada de uma consulta de relatório anual é provavelmente me-
nos útil, uma vez que os dados históricos podem ser lidos uma vez só. O gerenciamento 
centralizado de cache também é útil para cargas de trabalho mistas com SLAs de desem-
penho. Armazenar em cache um conjunto de trabalho, de uma workload de alta prioridade, 
assegura que ele não vai concorrer com a E/S de disco com uma carga de trabalho de baixa 
prioridade. A configuração de caches se dá no nível de arquivos ou pastas, não de blocos.
NameNodes e DataNodes se comunicam através de heartbeats periódicos; os Name-
Nodes verificam a necessidade de cache conforme os namespaces, gerencia as localida-
des dos caches nos DataNodes, criando cache pools. 
Os pools de cache são uma entidade administrativa usada para gerenciar grupos de 
diretivas de cache. Eles têm permissões semelhantes às do UNIX, que restringem quais 
usuários e grupos têm acesso ao pool. As permissões de gravação permitem que os usuá-
rios adicionem e removam diretivas de cache ao pool. Permissões de leitura permitem 
aos usuários listar as diretivas de cache em um pool, bem como metadados adicionais. 
As permissões de execução não são utilizadas. Pools de cache também são usados para 
gerenciamento de recursos. Pools podem impor um limite máximo, que restringe o nú-
mero de bytes que podem ser armazenados em cache em agregação por 
diretivas no pool.
Normalmente, a soma dos limites do pool será aproximadamente igual 
à quantidade de memória agregada reservada para o cache 
do HDFS no cluster. Os pools de cache também rastreiam 
várias estatísticas para ajudar os usuários de cluster a 
determinar o que deve ser armazenado em cache. Os 
pools também podem ter um tempo máximo de vida. 
Isso restringe o tempo máximo de expiração das direti-
vas que estão sendo adicionadas ao pool.
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 57
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 57 12/06/19 15:06
Segurança
O sistema de arquivos distribuído Hadoop (HDFS) implementa um modelo de permissões 
para arquivos e diretórios que compartilha grande parte do modelo POSIX. Cada arquivo e dire-
tório está associado a um proprietário e a um grupo. O arquivo ou o diretório tem permissões 
separadas entre as que são do usuário proprietário e os outros usuários que são membros do 
grupo e ainda para todos os outros usuários. Para arquivos, a permissão “r” (read, “ler”, “leitura”) 
é necessária para ler o arquivo; a permissão “w” (write, “escrever”, “escrita”) é necessária para 
gravar ou acrescentar ao arquivo. Para diretórios, a permissão “r” é necessária para listar o con-
teúdo do diretório, a permissão “w” é necessária para criar ou excluir arquivos ou diretórios, e a 
permissão “x” (execute, “executar”) é necessária para acessar uma pasta-fi lha do diretório.
Em contraste com o modelo POSIX, não há nenhum bit “setuid” (set user id) ou “setgid” (set 
group id) para arquivos, pois não existe nenhuma necessidade de arquivos executáveis. Para 
diretórios, não há nenhum diretório com os bits setuid ou setgid com o objetivo simplifi cação. 
O sticky bit (bit de owner) pode ser ajustado em diretórios, impedindo que qualquer um, exceto 
o superusuário, o proprietário do diretório ou o proprietário do arquivo, de suprimir ou de 
mover os arquivos dentro do diretório. Defi nir o sticky bit para um arquivo não tem efeito.
Coletivamente, as permissões de acesso de um arquivo ou diretório dentro do HDFS são 
controladas pelos mesmos “modos” do Linux ou Unix. São fl ags binários que identifi cam o tipo 
de acesso permitido por usuário, grupo ou usuário root (administrador). Em geral, os formatos 
UNIX para representar e exibir modos serão usados, incluindo o uso de números octais nesta 
descrição. Quando um arquivo ou um diretório é criado, seu proprietário é a identidade do 
usuário do processo do cliente e seu grupo é o grupo do diretório-pai (a regra BSD).
O HDFS também fornece suporte opcional para POSIX ACLs (listas de controle de aces-
so) para aumentar as permissões de arquivo, com regras mais refi nadas para usuários 
nomeados específi cos ou grupos nomeados. Cada processo de cliente que acessa o HDFS 
tem uma identidade de duas partes composta pelo nome de usuário e lista de grupos. 
Situações em que o HDFS deve fazer uma verifi cação de permissões para um arquivo ou 
diretório foo acessado por um processo de cliente:
• Se o nome de usuário corresponder ao proprietário do foo, as permissões do proprietário 
serão testadas;
• Caso contrário, se o grupo de foo corresponder a qualquer um dos membros da lista de 
grupos, as permissões de grupo serão testadas;
• Caso contrário, as outras permissões de foo são testadas.
Se uma verifi cação de permissões falhar, a operação do cliente falhará.
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 58
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 58 12/06/19 15:06
Identidade do usuário
A partir do Hadoop 0.22, ele oferece suporte a dois modos de operação diferentes para deter-
minar a identidade do usuário, especifi cada pela propriedade hadoop.security.authentication: 
• Simples: neste modo de operação, a identidade de um processo de cliente é determinada pelo 
sistema operacional do host. Em sistemas Unix-like, o nome de usuário é o equivalente a “whoami”;
• Kerberos: neste tipo de operação, a identidade de um processo de clienteé determinada por 
suas credenciais de Kerberos. Por exemplo, em um ambiente com Kerberos, um usuário pode usar 
o utilitário kinit para obter um tíquete de concessão de permissão Kerberos (TGT) e usar klist para 
determinar seu principal atual. Ao mapear uma entidade Kerberos para um nome de usuário do 
HDFS, todos os componentes, exceto os primários, são descartados. Por exemplo, um principal 
Todd/foobar@CORP.COMPANY.COM atuará como o simples nome de usuário Todd no HDFS.
Independentemente do modo de operação, o mecanismo de identidade do usuário é ex-
trínseco para o próprio HDFS. Não há nenhuma provisão no HDFS para criar identidades de 
usuário, estabelecer grupos ou processar credenciais de usuário.
Figura 8. Captura de tela do ecossistema do Hadoop. 
Ecossistema Hadoop 
O ecossistema do Hadoop é uma plataforma integrada, um framework, no qual podemos 
resolver os principais problemas do Big Data. Com esse ecossistema, é possível implementar 
um grande número de serviços, controlando o ciclo de vida das aplicações mais avançadas. Tal 
ecossistema possui ferramentas para a aquisição ou ingestão de dados, armazenamento, trans-
formação, análise, manutenção e disponibilização de enormes quantidades de dados. 
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 59
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 59 12/06/19 15:06
Flume 
O Flume é um serviço distribuído, confiável e disponível para coletar, agregar e mover gran-
des quantidades de dados de log eficientemente. Ele tem uma arquitetura simples e flexível 
baseada em fluxos de dados de streaming. É robusto e tolerante a falhas com mecanismos de 
confiabilidade ajustáveis e muitos mecanismos de recuperação de falhas.
Sqoop
O Sqoop é uma ferramenta projetada para transferir dados entre o Hadoop e os ban-
cos relacionais ou mainframes. Podemos usar o Sqoop para importar dados de um RDBMS 
(Sistema de Gerenciamento de Banco de Dados Relacional), como MySQL ou Oracle, ou um 
mainframe para o sistema de arquivo distribuído Hadoop (HDFS), transformar os dados no 
Hadoop MapReduce e, em seguida, exportar os dados de volta para um RDBMS.
MapReduce
O Hadoop MapReduce é uma estrutura de software para escrever facilmente aplicações que pro-
cessam vastas quantidades de dados (conjuntos de dados de vários terabytes) em paralelo em gran-
des clusters (milhares de nós) de hardware mais comuns, de forma confiável e tolerante a falhas.
Zookeeper
O ZooKeeper é um serviço centralizado 
para manter informações de configuração, 
nomear, fornecer sincronização distribuída 
e serviços de grupo. Todos esses tipos de 
serviços são usados de alguma forma ou 
de outra por aplicativos distribuídos. Cada 
vez que eles são implementados, há muitas 
tarefas que são necessárias para corrigir os 
bugs e condições de execução, as vezes ine-
vitáveis. Por serem de implementação mais 
complexa, as aplicações geralmente econo-
mizam no seu desenvolvimento, o que os 
torna frágeis na presença de mudança e de 
difícil gestão. Mesmo quando feito corretamente, diferentes implementações desses servi-
ços levam à complexidade de gerenciamento, após a implantação dos aplicativos.
Oozie 
O Oozie é um aplicativo web em Java usado para agendar trabalhos do Apache Hadoop. Ele 
combina vários trabalhos em MapReduce ou Pig sequencialmente em um fluxo (workflow), criando 
uma unidade lógica de trabalho. Essa unidade lógica é executada em um servlet-container Java.
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 60
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 60 12/06/19 15:07
Para os propósitos do Oozie, um fluxo de trabalho é uma coleção de ações (MapReduce ou Pig) 
organizadas em uma dependência de controle DAG (Directed Acyclic Graph). A dependência entre 
ações significa que a segunda ação não pode ser executada até que a primeira ação seja concluída.
As definições de fluxos de trabalho do Oozie são escritas em hPDL (uma linguagem de defini-
ção de processo XML semelhante ao JBOSS JBPM jPDL).
O Oozie inicia as ações de fluxo de trabalho em sistemas remotos. Após a conclusão da ação, 
o sistema retorno chama o Oozie para notificar a conclusão da ação. Nesse momento, Oozie 
prossegue para a próxima ação no fluxo de trabalho.
O Oozie usa um SecurityManager personalizado dentro do seu lançador para capturar cha-
madas exit(), capturando o código de saída definido pelo usuário.
O workflow do Oozie contém nós de fluxo de controle e nós de ação.
Os nós de fluxo de controle definem o início e o fim de um fluxo de trabalho (nós de início, 
término e falha) e fornecem um mecanismo para controlar o caminho de execução do fluxo de 
trabalho (decisão, bifurcação e nós de junção).
Os nós de ação são o mecanismo pelo qual um fluxo de trabalho aciona a execução de uma 
tarefa de computação/processamento. O Oozie fornece suporte para diferentes tipos de ações: 
MapReduce, sistema de arquivos Hadoop, Pig, SSH, HTTP, eMail e subfluxo de trabalho do Oozie, 
que pode ser estendido para suportar o tipo adicional de ações.
Os fluxos de trabalho do Oozie podem ser parametrizados – usando variáveis, como $ {inputDir}, 
dentro da definição do workflow. Ao enviar uma tarefa de fluxo de trabalho, valores para os parâme-
tros devem ser fornecidos. Se corretamente parametrizada (ou seja, usando diferentes diretórios de 
saída), vários trabalhos de fluxo de trabalho idênticos podem ser executados simultaneamente. 
Ambari
O Apache Ambari é uma ferramenta para provisionamento, gerenciamento e monitoramento de 
clusters do Apache Hadoop. O Ambari consiste em um conjunto de APIs RESTful e uma interface 
de gerenciamento baseada em navegador. O Ambari permite aos administradores de sistema os 
seguintes serviços:
• Provisionar um cluster do Hadoop: o Ambari fornece um assistente passo a passo, fácil de 
usar, para instalar os serviços do Hadoop em qualquer número de hosts. O Ambari lida com a confi-
guração dos serviços do Hadoop para o cluster.
• Gerenciar um cluster do Hadoop: o Ambari fornece gerenciamento central para iniciar, inter-
romper e reconfigurar os serviços do Hadoop em todo o cluster.
• Monitorar um cluster do Hadoop: o Ambari fornece um painel para monitorar a integridade 
e o status do cluster do Hadoop. O Ambari enviará e-mails quando houver necessidade de atenção, 
como por exemplo, um nó cai, ou espaço em disco restante é baixo etc. 
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 61
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 61 12/06/19 15:07
Figura 9. Captura de tela do Ambari.
Apache Kafka
É uma plataforma versátil de armazenamento e também de streaming com três princi-
pais recursos:
• Permite a publicação e a assinatura de fluxos de registros, semelhante a uma fila de men-
sagens ou a um sistema de mensagens corporativo; 
• Armazena fluxos de registros em uma maneira durável e tolerante a falhas;
• Processa fluxos de registros à medida que ocorrem.
Storm
Apache Storm é um sistema de computação em tempo real distribuído. Ele facilita o proces-
so de fluxos de dados não limitados (streaming) de maneira confiável, fazendo para processa-
mento em tempo real o que o Hadoop fez para processamento em lote (batch). Ele é simples e 
pode ser usado com qualquer linguagem de programação. 
O Storm tem muitos casos de uso: análise em tempo real, aprendizado de máquina on-line, 
computação contínua, RPC (Remote Procedure Call) distribuído, ETL, etc. Ele é rápido: seu parâ-
metro de velocidade é um benchmark que foi cronometrado com um processamento de mais 
de um milhão de tuplas (linhas de dados) processadas por segundo, em cada nó de servidores 
em cluster. É escalável e tolerante a falhas, garante que os dados sejam processados e possui 
facilidade de configuração e operação.
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 62
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 62 12/06/19 15:07O Storm se integra a tecnologias de queueing (enfileiramento) e de banco de dados 
que você já usa. Uma topologia Storm consome fluxos de dados e processa esses fluxos 
de maneiras arbitrariamente complexas, particionando os fluxos entre cada estágio da 
computação que se possa necessitar. 
Solr
O Solr é uma plataforma de busca corporativa de código aberto, construído sobre Apache Lucene. 
É altamente confiável, escalável e tolerante a falhas, fornecendo indexação distribuída, replicação e 
consultas com balanceamento de carga, failover e recuperação automatizados e possui configuração 
centralizada. É utilizada por recursos de pesquisa e navegação dos maiores sites do mundo.
O Solr é um servidor autônomo de pesquisa corporativa com uma API REST. Colocam-se os 
documentos nele – chamado de indexação – via JSON, XML, CSV ou binário sobre HTTP. As con-
sultas podem ser feitas via HTTP GET e receber JSON, XML, CSV ou resultados binários. Suas 
principais características são:
• Recursos avançados de pesquisa de texto completo: empoderado por Lucene, o Solr 
permite capacidades de pesquisa avançadas, incluindo frases, curingas, junções e agrupamen-
to em qualquer tipo de dados.
• Interfaces de administração abrangentes: o Solr é fornecido com uma interface de 
usuário administrativa integrada e responsiva para facilitar o controle de suas instâncias.
• Indexação quase em tempo real: o Solr aproveita os recursos de indexação em tempo 
real do Lucene para garantir que seja visto o conteúdo muito rapidamente.
• Desempenho para tráfego de alto volume: o Solr é provado por empresas que possuem 
largas escalas de conteúdos em todo o mundo. 
Figura 10. Tela do Apache Storm. 
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 63
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 63 12/06/19 15:07
• Padrões de interfaces abertas baseadas em XML, JSON e HTTP: o Solr usa as ferramen-
tas mais avançadas para a criação de interfaces de usuário.
• Altamente escalável e tolerante a falhas: construído sobre o Apache Zookeeper testado 
em ambientes de alto desempenho, o Solr facilita a expansão para horizontal e vertical. Ele 
possui replicação, distribuição, (re)balanceamento e tolerância a falhas.
• Arquitetura capaz de se expandir: o Solr publica muitos pontos de extensão bem defini-
dos que facilitam a conexão de plugins de indexação e de consulta. E ainda sendo uma ferra-
menta de código aberto, é possível alterar qualquer parte do sistema. 
Figura 11. Captura de tela do Solr. 
Lucene
O Apache Lucene fornece uma biblioteca de tecnologia de indexação e pesquisa baseada 
em Java, bem como verificação ortográfica, realce de ocorrências e recursos avançados de 
análise/tokenização.
Spark
O Apache Spark é um sistema de computação de cluster rápido e de uso geral. Ele fornece 
APIs de alto nível em Java, Scala, Python e R e um mecanismo otimizado que oferece suporte 
a gráficos de execução geral. Ele também suporta um rico conjunto de ferramentas de nível 
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 64
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 64 12/06/19 15:07
Figura 12. Captura de tela do Spark. 
Pig
Apache Pig é uma plataforma para a análise de grandes conjuntos de dados que consistem 
em uma linguagem de alto nível, para expressar programas de análise de dados, juntamente 
com a infraestrutura para avaliar esses programas. A propriedade mais importante dos pro-
gramas em Pig é que sua estrutura é favorável ao processamento paralelização, que, por sua 
vez, permite que eles manipulem conjuntos de dados muito grandes.
No momento, a camada de infraestrutura do Pig consiste em um compilador que produz 
sequências de programas MapReduce, para os quais já existem implementações paralelas de 
grande escala (por exemplo, o subprojeto Hadoop).
A camada de linguagem do Pig consiste atualmente em uma linguagem textual chamada Pig 
Latin, que tem as seguintes propriedades-chave:
• Facilidade de programação. É trivial para alcançar a execução paralela de simples 
tarefas de análise de dados de paralelismo complexo. Tarefas complexas, compostas de 
várias transformações de dados inter-relacionados, são explicitamente codificadas como 
sequências de fluxo de dados, tornando-as fáceis de escrever, entender e manter.
• Oportunidades de otimização. A forma como as tarefas são codificadas permite que o 
sistema otimize sua execução automaticamente, permitindo que o usuário se concentre na 
semântica em vez de se concentrar na eficiência.
superior, incluindo o Spark SQL para SQL e processamento de dados estruturados, MLlib para 
aprendizado de máquina, GraphX para processamento de gráfico e Spark streaming. O Spark 
usa as bibliotecas de cliente do Hadoop para HDFS e YARN. 
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 65
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 65 12/06/19 15:07
• Extensibilidade. Os usuários podem criar suas próprias funções para fazer o processa-
mento de propósito especial.
Hive
A linguagem do Apache Hive facilita a lei-
tura, a escrita e o gerenciamento de grandes 
datasets que residem em armazenamento 
distribuído e a consulta usando a sintaxe SQL. 
Construído em cima do Apache Hadoop, o 
Hive fornece os seguintes recursos:
• Ferramentas para permitir o acesso fá-
cil aos dados via SQL, permitindo, em conse-
quência, tarefas de armazenamento de da-
dos, como extração/transformação/carga (ETL), relatórios e análise de dados;
• Um mecanismo para impor estrutura em uma variedade de formatos de dados;
• Acesso a arquivos armazenados diretamente no Apache HDFS ou em outros sistemas de 
armazenamento de dados, como o Apache HBase;
• Execução de consultas via Apache Tez, Apache Spark ou MapReduce;
• Linguagem processual com HPL-SQL
• Recuperação em menos de segundos via consulta Hive LLAP, Apache YARN e Apache Slider.
Drill
Consulta vários datastores não relacionais. Com o Drill, é possível suportar uma variedade 
de bancos de dados e sistemas de arquivos NoSQL, incluindo HBase, MongoDB, MapR-DB, 
HDFS, MapR-FS, Amazon S3, armazenamento de BLOBs do Azure, Google Cloud Storage, Swift, 
NAS e arquivos locais. Uma única consulta pode unir dados de vários datastores. Por exemplo, 
é possível unir em uma coleção armazenada em MongoDB com um diretório de logs de even-
tos no Hadoop.
O otimizador com reconhecimento de datastore da Drill reestrutura automaticamente 
um plano de consulta para aproveitar os recursos de processamento internos do datas-
tore. Além disso, o Drill oferece suporte à localidade de dados, portanto, é uma boa solu-
ção instalar o Drill e o datastore nos mesmos nós.
Os mecanismos de consulta tradicionais exigem uma intervenção de especialistas em TI antes 
que os dados possam ser consultados. O Drill libera essa sobrecarga para que os usuários possam 
apenas consultar os dados brutos como estão. Não é necessário carregar os dados, criar e manter 
esquemas ou transformá-los antes que ele possa ser processado. Em vez disso, basta incluir o 
caminho para um diretório do Hadoop, a coleção MongoDB ou o Bucket do S3 na consulta SQL.
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 66
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 66 12/06/19 15:08
O Drill aproveita as técnicas avançadas de compilação e recompilação de consultas 
para maximizar o desempenho sem exigir conhecimento inicial do esquema. 
SELECT * FROM dfs.root.̀ /web/logs̀ ;
SELECT country, count(*)
 FROM mongodb.web.users
 GROUP BY country;
SELECT timestamp
 FROM s3.root.̀ clicks.jsoǹ
 WHERE user_id = ‘jdoe’;
Trate os dados como uma tabela mesmo quando não o são. O Drill apresenta um modelo 
de dados JSON que permite consultas em dados complexos ou aninhados, bem como estrutu-
ras em rápida evolução usadas em aplicativos modernos e datastores não relacionais. O Drill 
também fornece extensões intuitivas para SQL paraconsultar facilmente dados complexos. 
Drill é o único mecanismo de consulta colunar que oferece suporte a dados complexos. Ele pos-
sui uma representação colunada em memória fragmentada para dados complexos que permite 
que Drill atinja a velocidade colunar com a flexibilidade de um modelo de documento JSON interno.
O Drill suporta SQL padrão. Usuários corporativos, analistas e cientistas de dados podem 
usar ferramentas padrão de BI/Analytics, como Tableau, Qlik, MicroStrategy, Spotfire, SAS e 
Excel, para interagir com datastores não relacionais, aproveitando os drivers JDBC e ODBC do 
Drill. Os desenvolvedores podem aproveitar a API REST simples do Drill em seus aplicativos 
personalizados para criar visualizações bonitas. 
Os conjuntos de dados virtuais da Drill permitem que até mesmo os mais complexos e não 
relacionais sejam mapeados em estruturas amigáveis ao BI, que os usuários podem explorar e 
visualizar usando sua ferramenta escolhida.
A escalabilidade do Drill vai desde um laptop até 1.000 servidores. Ele pode ser executado 
em Mac, Windows e Linux e, dentro de um minuto ou dois, você estará explorando seus da-
dos. Quando estiver tudo pronto para utilizar, o Drill pode ser implantado em um cluster de 
servidores comuns e o mecanismo de execução mais escalável e de alto desempenho estará à 
disposição da aplicação. A arquitetura simétrica do Drill (todos os servidores nós são iguais) e 
a instalação simples facilita a implantação e o funcionamento de clusters muito grandes.
Drill combina flexibilidade e velocidade. Para conseguir isso, o Drill apresenta uma arquite-
tura radicalmente diferente que permite o desempenho de quebra de registro sem sacrificar a 
flexibilidade oferecida pelo modelo de documento JSON. O projeto do Drill inclui:
• Mecanismo de execução colunar (o primeiro a oferecer suporte a dados complexos).
• Compilação e recompilação orientadas por dados em tempo de execução.
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 67
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 67 12/06/19 15:08
Figura 13. Captura de tela do Drill. 
HBase
O HBase não é adequado para todos os problemas. 
Primeiro, é necessário certificar-se do volume de dados suficiente. Se a solução precisa gerenciar 
centenas de milhões ou bilhões de linhas, então HBase é um bom candidato. Se forem apenas alguns 
milhares/milhões de linhas, então é melhor usar um RDBMS tradicional, devido ao fato de que todos 
os dados podem ocupar apenas um único nó (ou dois) e o resto do cluster pode estar ocioso.
Segundo, certifique-se de que haverá a possibilidade de não haver todos os recursos 
extras que um RDBMS fornece (por exemplo, colunas com tipos de dados especiais, índi-
ces secundários, transações, linguagens de consulta avançadas etc.). Um aplicativo criado 
com base em um RDBMS não pode ser portado para o HBase simplesmente alterando um 
• Gerenciamento especializado que reduz a necessidade de memória e elimina o garbage 
collection (mecanismos de liberação de memória).
• Execução com reconhecimento de localidade que reduz o tráfego de rede quando o Drill é 
instalado no mesmo datastore.
• Otimizador avançado baseado em custo que envia o processamento para o datastore 
quando possível. 
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 68
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 68 12/06/19 15:08
driver JDBC, por exemplo. Considere a mudança de um RDBMS para HBase como uma re-
formulação completa em contraposição a uma simples estratégia de portar conectividade.
Terceiro, certifique-se de ter hardware sufi-
ciente. Mesmo o HDFS não desempenha bem 
com menos de cinco DataNodes (devido a coi-
sas como a replicação de bloco do HDFS que 
tem como padrão de três nós), além de um 
NameNode. O HBase pode funcionar muito bem 
em um laptop, mas isso deve ser considerado 
uma configuração de desenvolvimento apenas.
O uso do Apache HBase é indicado quan-
do precisamos de acesso de leitura/gravação 
em tempo real ao Big Data. O objetivo dele 
é a hospedagem de tabelas muito grandes – 
bilhões de linhas x milhões de colunas – em cima de clusters de hardware comuns.
O Apache HBase é um banco de dados de código aberto, distribuído, com versionamento 
e não relacional, modelado após o BigTable do Google: um sistema de armazenamento distri-
buído para dados estruturados. Assim como o BigTable aproveita o armazenamento de dados 
distribuído fornecido pelo sistema de arquivos do Google, o Apache HBase oferece recursos 
como BigTable em cima do Hadoop e do HDFS.
Algumas características dele:
• Escalabilidade linear e modular;
• Leituras e gravações estritamente consistentes;
• Fragmentação automática e configurável de tabelas;
• Suporte a failover automático entre RegionServers;
• Classes base convenientes para fazer backup de trabalhos do Hadoop MapReduce com 
tabelas Apache HBase;
• API Java fácil de usar para acesso de cliente;
• Cache de blocos e filtros Bloom para consultas em tempo real;
• Filtros de consulta são enviados para servidores escravos por intermédio de Server side filters;
• Gateway de thrift e um serviço da Web REST-ful que oferece suporte a XML, Protobuf e 
opções de codificação de dados binários;
• Shell com base em JRuby extensível ( JIRB); 
• Suporte para exportar métricas através do subsistema de métricas do Hadoop para arqui-
vos ou Ganglia; ou via JMX. 
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 69
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 69 12/06/19 15:08
Mahout
Apache Mahout (TM) é uma biblioteca de álgebra linear com capacidade de computação distribuí-
da projetada para permitir que matemáticos, estatísticos e cientistas de dados implementem rapi-
damente seus próprios algoritmos. Possui ferramentas de machine learning para recomendação (de 
produtos, por exemplo), classifi cação e clustering. Suporte para vários backends distribuídos (incluin-
do o Apache Spark) e possui solvers nativos modulares para aceleração de CPU/GPU/CUDA.
Spark MLlib
O Spark MLlib é uma biblioteca de machine learning oferecida pelo Spark. Ela possui facilidade 
de uso e pode ser integrada às linguagens Java, Scala, Python e R.
A MLlib está embutida nas APIs do Spark e interage com o NumPy em Python (a partir da ver-
são 0.9) e bibliotecas R (a partir da versão 1,5). Interage com qualquer fonte de dados do Hadoop 
(por exemplo, HDFS, HBase ou arquivos locais), facilitando a conexão em fl uxos de trabalho do 
Hadoop. Os seus algoritmos de alta qualidade são até 100 vezes mais rápidos que o MapReduce.
O Spark se destaca na computação interativa, permitindo que o MLlib rode rápido. Ao mes-
mo tempo, preocupa-se com o desempenho algorítmico: MLlib contém algoritmos de alta qua-
lidade que aproveitam a iteração e podem produzir melhores resultados do que as aproxima-
ções on-pass usadas no MapReduce. 
O Spark é executado em Hadoop, Apache Mesos, Kubernetes, autônomo ou em cloud e ou-
tras diversas fontes de dados. Ainda pode ser usado em modo de cluster autônomo, no EC2, 
no Hadoop YARN, no Mesos ou no Kubernetes. Acessando dados em HDFS, Apache Cassandra, 
Apache HBase, Apache Hive e centenas de outras fontes de dados.
Figura 14. Captura de tela de Confi guração do HBase. 
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 70
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 70 12/06/19 15:08
MLlib contém muitos algoritmos e utilitários. Os algoritmos de ML incluem:
• Classificação: regressão logística, naive Bayes etc.;
• Regressão: regressão linear generalizada, regressão de sobrevivência (survival regression) etc.;
• Árvores de decisão (decision trees), florestas aleatórias (random forest) e gradient-booster trees.
• Recomendação: mínimos quadrados alternados (ALS);
• Clustering: K-means, misturas gaussianas (GMMs) etc.;
• Modelagem de tópicos: alocação de Dirichlet latente (LDA);
• Conjuntosde itens frequentes, regras de associação e mineração de padrão sequencial.
Os utilitários de fluxo de trabalho ML incluem:
• Transformações de recursos: padronização, normalização, hashing;
• Construção de pipeline de ML;
• Avaliação do modelo e ajuste do Hyper-parâmetro;
• Persistência de ML: salvando e carregando modelos e pipelines.
Outros utilitários incluem:
• Álgebra linear distribuída: SVD, PCA etc.
• Estatísticas: estatísticas resumidas, testes de hipóteses etc.
MLlib é desenvolvido como parte do projeto Apache Spark. Ele é, portanto, testado e 
atualizado a cada lançamento do Spark. É um projeto da Apache que continua a ter um 
rápido crescimento.
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 71
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 71 12/06/19 15:08
Sintetizando
As verdadeiras soluções de Data Science necessitam de dados corretos oriundos das 
fontes mais confiáveis. Isso incorre em conectar as fontes mais diversas ao processo de 
Big Data. Um verdadeiro sistema nervoso precisa ser criado para alimentar a criatividade 
e a necessidade de relacionamentos e o dinamismo que as corporações 
necessitam. O Hadoop é este framework e também um ecossistema 
que integra soluções flexíveis, escaláveis e tolerantes a falhas. Por 
ser modular, facilita sua flexibilidade, por ser flexível, atende a um 
enorme número de aplicações e se adapta a diferentes tipos de 
servidores, que podem ser agregados conforme a necessidade 
das aplicações, maximizando os investimentos em infraestrutura.
Graças ao HDFS, o Hadoop consegue gerenciar arquivos imensos, dis-
tribuídos em clusters, com alta capacidade de processamento paralelo. O 
MapReduce oferece uma forma de processar os dados de forma distribuída, simultanea-
mente e com confiabilidade. O YARN controla todos os recursos dos clusters, inclusive 
o MapReduce. O Hadoop implementa a premissa de que é mais fácil e barato mover o 
processamento do que os dados.
Podemos comparar o problema do Big Data à seguinte situação: um cozinheiro abre 
um restaurante, no centro da cidade. No início ele dá conta de tudo, atendendo até qua-
tro pedidos por hora, mas, com o sucesso do restaurante, mais pessoas começam a 
frequentá-lo, exigindo seis pedidos por hora. Ele se vê necessitado de um outro cozi-
nheiro e o contrata, contudo, há um só fogão e uma geladeira. A concorrência entre eles, 
para acessar os ingredientes e preparar a comida, não está dando mais certo, e agora 
o restaurante precisa atender 10 pedidos por hora. A solução é contratar ajudantes de 
cozinha, que preparam os ingredientes com seus respectivos armários, e os dois cozi-
nheiros preparam os pratos em dois fogões, criando uma estrutura funcional. 
Os armários com os ingredientes nunca se movem, pois guardam o que é 
mais pesado. As pessoas se tornam especialistas (que representam os pro-
cessos) e se movem para levar os itens para a preparação de 
acordo como pedido dos clientes. Se alguma coisa acontece 
com um armário, ou o ingrediente de um armário acaba 
(falha), o ajudante pode buscar em outros armários, ou os 
outros ajudantes assumem o seu papel, enquanto ele vai 
ao supermercado (reparo).
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 72
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 72 12/06/19 15:08
Junto com o Hadoop, há soluções de Data Science prontas para o uso em análise de 
dados, tais como:
• O HBase, que é um bando baseado em coluna e noSQL para consultas;
• O Hive, que implementa acesso usando SQL;
• O Drill, que se conecta com as principais ferramentas de análise de dados, tais como 
Tableau, Excel etc.;
• O Mahout, que é uma biblioteca de álgebra linear e de machine learning e recomendação;
• O Spark com a MLlib, que é uma biblioteca de machine learning integrável com mui-
tas linguagens tais como: Python, Java, Scala e R.
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 73
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 73 12/06/19 15:08
Referências bibliográficas
APACHE HADOOP. Apache Hadoop 2.9.2. Disponível em: <http://hadoop.apache.org/docs/
current/>. Acesso em: 27 mai. 2019. 
APACHE HADOOP. Welcome to Apache Pig! Disponível em: <http://pig.apache.org/>. Acesso 
em: 27 mai. 2019.
CAVANILLAS, J. M. et al (eds.). New Horizons for a Data-Driven Economy: a Roadmap for Usa-
ge and Exploitation of Big Data in Europe. Nova Iorque: Springer Open, p. 39-61, 2016.
D-WAVE. Quantum Computing. Disponível em: <https://www.dwavesys.com/quantum-com-
puting>. Acesso em: 27 mai. 2019.
NEWGENAPPS. What Is Hadoop and How It Changed Data Science? 13 mar. 2018. Disponível 
em: <https://www.newgenapps.com/blog/what-is-hadoop-and-how-it-changed-data-scien-
ce>. Acesso em: 27 mai. 2019.
O’REILLY MEDIA. Big Data Now – Current Perspectives from O’Reilly Media. Califórnia: O’Reilly 
Media, 2012.
SQREAM. Dead or Alive and Kicking? Big Data Helps Retail Revive. 11 jul. 2017. Disponível em: 
<https://sqream.com/dead-or-alive-and-kicking-big-data-helps-retail-revive/>. Acesso em: 27 
mai. 2019.
INFRAESTRUTURA DE DATA SCIENCE E CLOUD COMPUTING 74
Infraestrutura de Data Science e Cloud Computing - Unidade2.indd 74 12/06/19 15:08

Outros materiais