Buscar

Aula 8 - Framework Hadoop

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 16 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 16 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 16 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

/
Big Data
Aula 8: Framework Hadoop
Apresentação
 Continuaremos falando sobre processamento em sistemas distribuídos, apresentando uma visão geral dos conceitos
essenciais de computação distribuída utilizados pelo Hadoop para realizar o gerenciamento de recursos em cluster típicos
de Big Data.
Abordaremos o uso de framework de alto nível para realizar a captura, armazenamento e processamento em grande
conjunto de dados distribuídos em cluster e gerenciados pelo Hadoop.
Objetivos
Identi�car as vantagens do uso do Hadoop para processamento de dados distribuídos;
Examinar os benefícios do gerenciamento de recursos em cluster do Hadoop;
Descrever algumas ferramentas do ecossistema Hadoop.
Introdução
Os projetos de Big Data envolvem grande volume de dados com tendência de crescimento exponencial, uma variedade de
dados podendo ser estruturados, semiestruturados e não estruturados que devem ser analisados em velocidade adequada
para proverem valor para o negócio.
Geralmente, para acomodar os dados de Big Data necessita-se de várias máquinas e para analisá-los torna-se imprescindível
que elas operem em conjunto.
/
Para o processamento de conjuntos de dados que excedem a capacidade de
uma única máquina, torna-se necessária a implementação de soluções
distribuídas, capazes de dividir uma grande tarefa em outras menores,
executando-as paralelamente em um conjunto de nós. Entretanto, o
desenvolvimento dessas soluções é complexo.
Além da lógica do problema, deve-se implementar mecanismos relacionados à distribuição dos dados e das tarefas, como
alocação de máquinas, escalonamento de tarefas, balanceamento de carga, comunicação entre máquinas, tolerância a falhas,
entre outros aspectos.
A implementação incorreta de algum desses mecanismos pode impactar diretamente o desempenho da solução. O framework
Hadoop surgiu da necessidade de lidar com a operacionalização desse processamento distribuído e continuar atendendo aos
Vs (volume, variedade, velocidade, veracidade e valor) típicos de Big Data.
A ideia consiste em prover uma abstração dos mecanismos existentes em ambiente distribuído para permitir que os projetos
de Big Data se concentrem no desenvolvimento da lógica para análise dos dados.
Para tal, foi desenvolvido o framework open source Hadoop, em linguagem de programação Java, inspirado na publicação de
duas soluções proprietárias do Google: O sistema de arquivos distribuído Google File System (GFS) e o modelo de
programação distribuída MapReduce.
Saiba mais
Ambas as soluções eram utilizadas para dar suporte ao armazenamento e processamento do grande volume de dados que o
Google manipulava. O estudo do funcionamento dessas duas soluções deu origem ao Hadoop Distributed File System (HDFS),
para gerenciamento dos dados armazenados em discos no cluster, e o Hadoop MapReduce, para gerenciamento de carga de
jobs. Esses dois elementos foram a base da primeira versão do Hadoop.
Essa estrutura permitia o processamento distribuído muito e�ciente para cargas de trabalho de larga escala em lote (batch).
Porém, fazia uso intensivo de E/S e enfrentava limitações signi�cativas para dar suporte a análises interativas, processamento
de grafos, aprendizado de máquina e outros algoritmos que usem memória intensivamente.
Comentário
Para tratar essas limitações, na versão 2 foi desacoplado o gerenciamento da carga de trabalho do gerenciamento de recursos
através da introdução do YARN (Yet Another Resource Negotiator).
/
Com o YARN, várias aplicações podem compartilhar um serviço de gerenciamento comum e centralizado de recursos, além de
possibilitar o processamento de jobs genéricos e gerenciamento de recursos no YARN. Com isso, atualmente o Hadoop não é
mais um framework unicamente centrado no MapReduce.
Essas vantagens levaram à proliferação do uso do Hadoop por grandes organizações, como Yahoo, Facebook e IBM, que
contribuíram (e muitas delas continuam contribuindo) para sua rápida evolução, tanto em aperfeiçoamento das
funcionalidades quanto em adição de novas.
Como resultado, outros subprojetos foram criados para trabalhar em conjunto com os componentes principais do Hadoop,
criando um ecossistema com diversas soluções de manipulação de dados.
Atualmente, a base das distribuições Hadoop é da comunidade Apache. Entretanto, diversas empresas criaram um
ecossistema de negócios baseado em distribuições especí�cas do Hadoop, como Cloudera e DataStax.
Apesar do código base ser o mesmo, cada distribuição tem características diferenciadas, por exemplo, a distribuição da
DataStax, chamada de Brisk, substituiu o HDFS por um sistema de arquivos distribuídos baseados no software NoSQL
Cassandra, chamado agora de Cassandra FS.
Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online
 Arquitetura do Hadoop
 Clique no botão acima.
/
A estrutura do Hadoop permite o processamento distribuído de grandes conjuntos de dados em clusters de
computadores usando modelos de programação simples. Ele foi projetado para ser dimensionado em servidores
únicos ou em milhares de máquinas, cada uma oferecendo processamento e armazenamento local.
Em vez de depender de hardware para fornecer alta disponibilidade, o próprio framework foi projetado para detectar e
tratar falhas na camada de aplicativo, oferecendo um serviço altamente disponível em cima de um cluster de
computadores, cada um deles sujeito a falhas.
O Hadoop disponibiliza armazenamento e acesso a dados distribuídos por meio do HDFS, bem como um framework
para recursos e escalonamento através do YARN. Em conjunto, o HDFS e o YARN oferecem um mecanismo para fazer
análise distribuída em conjuntos de dados extremamente grandes.
Atualmente, esses dois principais componentes fornecem a base para efetuar processamentos em escala, distribuindo
o processamento envolvendo um conjunto de dados gigantesco entre várias máquinas que trabalham
simultaneamente em suas próprias porções de dados.
O HDFS gerencia os dados armazenados em discos no cluster e o YARN atua como um gerenciador de recursos do
cluster, alocando recursos computacionais para aplicações que queiram realizar um processamento distribuído.
O HDFS e o YARN expõem uma interface de programação de aplicativos (Application Programming Interface - API) que
abstrai dos desenvolvedores os detalhes de baixo nível de administração do cluster.
O YARN e o HDFS são implementados por vários processos daemon, isto é, um software que executa em segundo
plano e não exige entradas de usuário. Os processos do Hadoop são serviços, o que signi�ca que eles executam o
tempo todo em um nó do cluster, aceitam entradas e entregam saídas por meio da rede.
Cada um desses processos executa em sua própria JVM (Java Virtual Machine), portanto cada daemon tem sua
própria alocação de recursos do sistema e é administrado de forma independente pelo sistema operacional.
Um conjunto de máquinas executando HDFS e YARN é conhecido como um cluster, e as máquinas individuais são
chamadas de nós. Um cluster pode ter um único nó ou milhares deles, mas todos os clusters escalam
horizontalmente, o que signi�ca que, à medida que são adicionados mais nós, o cluster se expandirá tanto em
capacidade quanto em desempenho de forma linear.
Um cluster de máquinas funciona de forma coordenada para minimizar o volume de tráfego de rede no cluster, visando
principalmente manter os dados locais ao processamento solicitado. As máquinas no cluster são gerenciadas e
detalhes de rede e arquitetura são resolvidos de forma que, se um componente falhar, ele não deverá resultar na falha
de todo o sistema e perda de dados.
O sistema deve se degradar de forma elegante, passando para um estado com desempenho reduzido. Quando o
componente que falhou se recuperar, ele deverá ser capaz de se juntar novamente ao sistema.
Caso seja necessária a adição de mais dados ou processamento, deve resultar em um declínio no desempenho, e não
em uma falha. Consequentemente, o aumento de recursos deve resultar em aumento proporcional da capacidade.
Um processamentogeralmente é chamado de job. As aplicações podem ser compostas por um job ou por um grafo
direcionado acíclico (Directed Acyclic Graph – DAG) de jobs.
Os jobs são escritos em alto nível, sem preocupação com programação de rede, tempo ou infraestrutura de baixo nível,
permitindo que os desenvolvedores se concentrem nos dados e no processamento, e não nos detalhes da
programação distribuída.
Os jobs são divididos em tarefas, e cada nó executa a tarefa em um único bloco de dados. Para tal, os dados são
armazenados em blocos de tamanho �xo, geralmente de 128 MB, e cada bloco é duplicado várias vezes no sistema
para oferecer redundância e segurança aos dados.
/
Os jobs são tolerantes a falhas, geralmente por meio de redundância de tarefas, de modo que, se um único nó ou
tarefa falhar, o processamento �nal não estará incorreto nem incompleto. Os blocos são distribuídos imediatamente
quando os dados são adicionados ao cluster e armazenados em vários nós.
Os nós preferencialmente processam os dados armazenados localmente a �m de minimizar o tráfego na rede. Com
isso, o sistema minimiza o volume de tráfego de rede entre os nós de forma transparente.
Cada tarefa deve ser independente, e os nós não devem precisar se comunicar uns com os outros durante o
processamento para garantir que não haja dependências entre processos que possam resultar em um deadlock.
Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online
 Gerenciamento de recursos
Para que toda essa estrutura funcione, o cluster é administrado de forma centralizada para oferecer escalabilidade e abstrair os
detalhes de programação de baixo nível do cluster.
Clique nos botões para ver as informações.
Existem os nós mestres que executam serviços de coordenação dos nós trabalhadores do Hadoop e, geralmente, são os
pontos de entrada para o acesso ao cluster.
Nó mestre 
Os nós trabalhadores executam serviços demandados pelos nós mestres, tais como armazenar e recuperar dados e
executar uma aplicação. O processamento distribuído é executado por meio da paralelização dos serviços nos nós
trabalhadores que representam a maioria dos computadores no cluster.
Nó trabalhador 
O tamanho do cluster deve ser relativo ao volume de processamento esperado ou de armazenagem de dados, pois os clusters
escalam horizontalmente. Em geral, um cluster de 20 a 30 nós trabalhadores e um único mestre é su�ciente para executar
vários jobs simultaneamente em conjuntos de dados na ordem de dezenas de terabytes.
Saiba mais
Para implantações mais signi�cativas, com centenas de nós, cada mestre exige sua própria máquina. Em clusters com milhares
de nós, vários nós mestres são utilizados para coordenação.
Os recursos do cluster são administrados pelo YARN por meio de dois tipos de serviços mestres e um tipo de serviço
trabalhador.
/
Para executar uma aplicação ou job, inicialmente devem solicitar recursos ao ResourceManager, que atribui um
ApplicationMaster especí�co da aplicação enquanto estiver sendo executada. O ApplicationMaster monitora a execução do job,
enquanto o ResourceManager monitora o status dos nós, e cada NodeManager individual cria contêineres e executa tarefas
dentro deles.
Atenção! Aqui existe uma videoaula, acesso pelo conteúdo online
 Desenvolvendo projetos de Big Data com Hadoop
O ecossistema do Hadoop possui uma arquitetura e um conjunto de ferramentas que oferecem suporte à implementação de
projetos de Big Data. Com o Hadoop, pode-se capturar dados de diversas fontes e reuni-los no cluster, propiciando um
ambiente de armazenamento distribuído com escalonamento horizontal e fornecendo uma infraestrutura propícia para realizar
processamento desses dados.
Saiba mais
Existem ferramentas para preparação dos dados para análise, outras para análise propriamente dita e de visualização de dados.
Apesar de o framework ser desenvolvido em Java, há recursos que permitem o desenvolvimento de processos e algoritmos de
aprendizado de máquina em R e Python.
/
O seu sistema de arquivo distribuído oferece �exibilidade para viabilizar a acomodação do volume e variedade dos dados sem
restrições e com alto grau de durabilidade.
Isso possibilita que dados brutos, não processados, de uma variedade de fontes, tanto em forma estruturada quanto não
estruturada, sejam armazenados em conjunto, sem muita organização, constituindo um lago de dados (data lake).
Esse lago de dados vai se expandindo formando um verdadeiro repositório central de dados no estilo WORM (Write Once, Read
Many), isto é, os dados são escritos uma vez e lidos várias vezes. Tal mecanismo proporciona dados con�áveis para serem
combinados, �ltrados, transformados, estruturados ou reestruturados de forma conveniente para serem analisados sob várias
perspectivas.
Esse adiamento da organização dos dados e da de�nição, de esquemas para o momento do processamento, leva à agilidade
para fazer novos processamentos e análises à medida que os requisitos mudarem ou que novos dados sejam inseridos.
Para demonstrar as vantagens do uso do ecossistema Hadoop ao longo dessa seção, será demonstrada a captura de dados
com Apache Sqoop e Apache Flume, o armazenamento de dados estruturados do Apache Hive, o processamento em lote com
Hadoop MapReduce e o processamento em tempo real com Apache Storm.
Atenção
O uso dessas ferramentas requer que o Hadoop esteja previamente instalado, con�gurado e com os processos de HDFS e YARN
executando.
Apache Sqoop
No início de projetos de Big Data, possivelmente são identi�cados dados estruturados armazenados em sistemas de banco de
dados relacionais que devem ser utilizados para análise. No ecossistema do Hadoop, há diversas formas de realizar a captura
desses dados e o Sqoop automatiza a maior parte desse processo.
A ferramenta foi projetada para transferir dados entre bancos de dados relacionais e o Hadoop via JDBC (Java Database
Connectivity), conector de banco de dados do Java. O Sqoop importa dados de bancos de dados relacionais, como Oracle,
PostgreSQL e MySQL para HDFS; e exporta do sistema de arquivos Hadoop para bancos de dados relacionais.
Exemplo
Suponha que uma Livraria Virtual mantenha o registro de suas vendas em um banco de dados MySQL através das tabelas Cliente,
Livro e Venda, conforme modelo de dados apresentado na �gura a seguir. Os dados dessas tabelas podem ser capturados
utilizando o recurso de importação do Sqoop.
/
 Modelo de dados da Livraria Virtual. Fonte: Autor
Na importação, as tabelas individuais do banco de dados relacional são transformadas em arquivos do HDFS. Cada linha de
uma tabela corresponde a um registro no HDFS. Todos os registros são armazenados em arquivos que podem ser arquivos de
texto delimitados, com vírgulas ou tabulações separando cada campo, ou arquivos binários contendo dados de registro
serializados.
Saiba mais
Para realizar essa importação, previamente deve ser instalada e con�gurada uma versão do Sqoop compatível com a versão de
Hadoop do cluster, e executar o comando de importação no diretório de trabalho do Sqoop.
Supondo que o banco de dados MySQL da Livraria Virtual (LivrariaVirtualbd) estivesse na mesma máquina que o Hadoop, a
importação dos dados da tabela Cliente poderia ser feita através do seguinte comando:
sqoop import --connect jdbc:mysql://localhost/LivrariaVirtualbd \ --username dbuser --password 12345 --table Cliente --target-
dir /queryresult \
Esse comando de importação (import), faz a conexão via JDBC (connect jdbc:mysql) com o banco de dados LivrariaVirtualbd
(localhost/LivrariaVirtualbd) através do usuário (username) dbuser e senha (password) 12345 para importar a tabela (table)
Cliente para o diretório (target-dir) queryresult do HDFS.
De forma inversa, na exportação, um arquivo HDFS é fornecido como entrada para o Sqoop exportar como uma tabela de um
banco de dados relacional. No momento da exportação, cada registro do arquivo HDFS se torna uma linha da tabela com seus
correspondentes atributos. Por exemplo, o arquivo cliente que foi armazenado no diretório queryresultpode ser exportado com
o seguinte comando:
sqoop export --connect jdbc:mysql://localhost/LivrariaVirtualbd \ --username dbuser -password 12345 --table Cliente --export-dir
/queryresult \
Os comandos de importação e exportação têm outras opções de argumentos, tais como especi�car delimitadores especí�cos
e caracteres de escape para a representação dos dados baseada em arquivo, especi�car o formato de arquivo, bem como
selecionar um intervalo de linhas ou colunas para importação ou exportação.
Comentário
Complementarmente, o Sqoop tem alguns outros comandos que permitem a exploração dos dados. Essas características fazem
do Sqoop uma ferramenta de alto nível para captura de dados estruturados.
/
Apache Flume
Além dos dados estruturados oriundos de banco de dados relacionais, também pode haver outros tipos de dados que
necessitam ser capturados. Os dados no formato Avro, log4j, syslog, Http POST, com um corpo JSON, ou os dados disponíveis
em um processo local podem ser capturados usando o framework Flume.
Ele foi desenvolvido para coletar, agregar e mover grandes volumes de várias fontes distintas para o Hadoop. Através de um
método uni�cado, porém, �exível, lida com dados díspares com mecanismos de tolerância a falhas e uma arquitetura baseada
em �uxos de dados.
Na arquitetura Flume, cada �uxo de dados é tratado por um processo da JVM (Java Virtual Machine), denominado agente
Flume, constituído de três componentes con�guráveis: A fonte (source), o canal (channel) e o sorvedouro (sink). A con�guração
do agente Flume é armazenada em um arquivo de con�guração local(.conf).
Comentário
Este é um arquivo de texto que segue o formato de arquivo de propriedades Java. Nele se con�gura a fonte Flume que tem o
papel de �car aguardando os dados de uma ou mais fontes de dados externas e, quando eles chegam, os consome, isto é, os
coloca no canal. Esse canal atua como uma �la de armazenagem que insere e guarda dados em buffers até que estejam prontos
para serem lidos.
O sink faz a leitura dos dados e os move do canal para um repositório de dados ou para outro agente Flume. Ao usar esse
paradigma fonte-canal-sink, pode-se construir facilmente um �uxo de dados simples com um agente Flume para consumir
dados de um arquivo e escrevê-los em um repositório de dados do Hadoop como o HDFS.
Um uso muito comum do Flume é a coleta de dados de log, por exemplo, coletar dados de log do servidor Web de uma Livraria
Virtual e agregá-los no HDFS para consulta ou análise futura. Para exempli�car, vamos criar um agente Flume (agenteLivraria) e
con�gurar a sua fonte (f1) para consumir os dados do log que vão sendo armazenados no diretório (spooldir)
/temp/logLivrariaVirtual.
Essa fonte observará o diretório em busca de novos arquivos para os colocar no canal (ch1). Após um arquivo ser totalmente
copiado para o canal, o sink (s1) escreve o arquivo do canal no diretório /user/hadoop/ do HDFS.
Veja a seguir a con�guração desse agente Flume:
agenteLivraria.sources=r1 
agenteLivraria.sources.r1.channels=ch1 
agenteLivraria.sources.r1.type=spooldir 
agenteLivraria.sources.r1.spoolDir=/tmp/logLivrariaVirtual 
agenteLivraria.channels = ch1 
agenteLivraria.channels.ch1.type=FILE 
agenteLivraria.sinks=s1 
agenteLivraria,sinks.s1.type=hdfs 
agenteLivraria.sinks.s1.channel=ch1 
agenteLivraria.sinks.s1.hdfs.path=/user/hadoop/
/
Essa con�guração do agente Flume deve ser salva em um arquivo de con�guração local (agenteLivraria.conf) para ser
executado na linha de comando através do seguinte comando:
�ume -ng agent -n agenteLivraria –conf . -f agenteLivraria.conf
Esse exemplo mostrou um agente Flume com uma fonte, um canal e um sink. Há também a possibilidade de o agente Flume
ser con�gurado para ter diversas fontes, canais e sinks, e �uxos de dados podem ser compostos por múltiplos agentes
encadeados.
Apache Hive
Ao usar um lago de dados para armazenar dados brutos, não processados, podemos conseguir uma �exibilidade e uma
agilidade consideráveis em nossas capacidades analíticas de selecionar e agregar vários tipos de dados. Contudo, há muitos
casos de uso em que, antes de efetivamente analisar os dados, faz-se necessário um pouco de estrutura e ordem.
Nesses casos, pode ser usado o Apache Hive para criar esquemas estruturados de dados.
O Hive é um framework com suporte a muitas instruções SQL, através do Hive Query Language (HQL), que permite associar
esquemas estruturados a dados do HDFS, consultar e analisar esses dados. O Hive tem possibilitado aos desenvolvedores
�uentes em SQL tirar proveito dos benefícios do Hadoop sem exigir que eles aprendam Java ou conheçam a API nativa do
MapReduce.
Saiba mais
Os comandos do Hive e as consultas do HQL são compilados em uma série de operações de HDFS ou jobs de MapReduce que
então são executados em um cluster do Hadoop. O Hive oferece alta escalabilidade e elevado throughput, sendo apropriado para
cargas em lote para realização de processamento de transações online (Online Analytical Processing – OLAP).
O acesso às funcionalidades do Hive é feito através de uma interface de linha de comando (Comand-Line Interface – CLI)
prática que pode ser inicializada após a instalação e con�guração do Hive, por meio do seguinte comando no prompt do Linux:
cd $HIVE_HOME.
/
Após a inicialização da CLI do Hive, o prompt hive> será exibido e a ferramenta estará pronta para ser utilizada. Para
demonstrar o funcionamento do Hive, vamos criar uma base de dados e uma tabela, carregando-a com dados de um arquivo
do HDFS. Iniciamos pela criação de uma base de dados chamada exemploHive através do comando “CREATE DATABASE
exemploHive;” no Hive.
Para consultar os dados de cliente importados para o HDFS usando Sqoop (subseção 4.1), criamos uma tabela cliente na base
de dados exemploHive com a estrutura apresentada na tabela usada como exemplo anteriormente. Primeiramente, o CLI deve
ser inicializado (na linha de comando digitar cd $HIVE_HOME) e depois utilizar os seguintes comandos:
hive> USE exemploHive; 
hive> CREATE TABLE Cliente (ID int; CPF string, Nome string, Endereco string, Telefone string);
Para popular a tabela Cliente com o arquivo do HDFS disponível no diretório queryresult, deve ser executado o seguinte
comando:
hive> LOAD DATA INPATH 'queryresult/Cliente' OVERWRITE INTO TABLE Cliente;
Com os dados carregados na tabela Cliente, pode-se realizar várias consultas, como, por exemplo, saber a quantidade de
clientes usando o seguinte comando:
hive> SELECT COUNT(1) FROM Cliente;
Ao criar novas tabelas e populá-las com dados de arquivos do HDFS, é possível realizar consultas que combinem dados de
diferentes tabelas, selecionem campos e manipulem os dados da forma necessária para prepará-los para análise. Além disso,
usando o próprio HQL, podem ser feitas análises signi�cativas nos dados.
Comentário
Apesar das vantagens do uso do HQL, o Hive usa o HDFS projetado para ser WORM, e o MapReduce que realiza processamento
em lote. Sendo assim, as operações realizadas no Hive implicam em uma latência elevada por causa do overhead necessário para
gerar e iniciar os jobs no cluster.
/
Caso esse overhead seja um problema, em vez de executar consultas complexas nos dados distribuídos, pode-se fazer
transformações e �ltros primários necessários no Hadoop, e exportar para um banco de dados relacional através do Sqoop,
realizando as consultas com agilidade.
Outra opção é usar o HBase, um banco de dados NoSQL baseado em colunas, construído sobre o HDFS, e fornecer pesquisas e
atualizações rápidas de registros em grandes tabelas.
 Hadoop MapReduce
 Clique no botão acima.
Embora o YARN tenha permitido que o Hadoop se tornasse uma plataforma genérica de computação distribuída, o
MapReduce foi o primeiro framework computacional para o Hadoop. No entanto, para muitos usuários do Hadoop, o
MapReduce continua sendo o framework principal para muitas aplicações analíticas.
O Hadoop MapReduce usa o modelo MapReduce para fornecer uma estrutura base para escrever facilmente
aplicativos que processamgrandes quantidades de dados em paralelo em grandes clusters, de maneira con�ável e
tolerante a falhas.
Um job MapReduce geralmente divide o conjunto de dados de entrada em blocos independentes que são processados
pelas tarefas de mapeamento (Map) de uma maneira paralela. A estrutura classi�ca as saídas dos map, que são então
inseridas nas tarefas de redução (Reduce). Normalmente, tanto a entrada quanto a saída do job são armazenadas em
um sistema de arquivos.
O framework cuida do agendamento de tarefas, monitorando-as, e reexecuta as tarefas com falha. Tipicamente, os nós
que executam as tarefas e os nós de armazenamento são os mesmos, ou seja, a estrutura MapReduce e o HDFS são
executadas no mesmo conjunto de nós.
Essa con�guração permite que a estrutura agende com e�cácia as tarefas nos nós em que os dados já estão
presentes, resultando em uma largura de banda agregada muito alta em todo o cluster.
A API MapReduce é nativa do Hadoop e escrita em Java; desse modo, os aplicativos desenvolvidos usando
MapReduce também devem ser desenvolvidos em Java ou convertidos para Java, compilados em um arquivo JAR e
submetidos ao Hadoop. Para desenvolver aplicativos (Ex: exemploMapReduce.java) utilizando MapReduce, no mínimo
devem ser seguidos os passos:
Criar uma classe para desenvolvimento da função Map que seja extensão de
org.apache.hadoop.mapreduce.Mapper e implemente o método map;
Criar uma classe para desenvolvimento da função Reduce que seja extensão de
org.apache.hadoop.mapreduce.Reduce e implemente o método reduce;
Con�gurar os parâmetros do objeto Job, por exemplo, informando os dados que deverão ser processados e o
local onde o resultado �nal do processamento deve ser armazenado;
Compilar a aplicação (Ex: bin/hadoop com.sun.tools.javac.Main exemploMapReduce.java);
Gerar um arquivo jar (Ex: jar cf exemploMapReduce.jar exemploMapReduce*.class)
Submeter a aplicação ao Hadoop (Ex: bin/hadoop jar exemploMapReduce.jar exemploMapReduce).
Ao submeter a aplicação ao cluster, o ResourceManager, processo do YARN, assume a responsabilidade de distribuir a
aplicação aos nós trabalhadores, agendar tarefas e monitorá-las.
/
Apache Storm
Quando for necessário trabalhar com fontes de dados em tempo real, devem ser usadas ferramentas que ofereçam baixa
latência para lidar com dados em streaming. Dados em streaming referem-se a dados sem fronteiras e, possivelmente, sem
ordenação, que chegam constantemente de forma incessante e necessitam ser examinados em poucos segundos.
Saiba mais
Esses dados podem ser capturados e processados usando Apache Storm, um framework de computação em tempo real
distribuído com capacidade de processar aproximadamente um milhão de tuplas por segundo por nó.
O processamento no Storm é projetado como uma topologia e executado em um cluster Storm que segue o padrão arquitetural
do Hadoop de ter nós do tipo mestre e trabalhador. O nó mestre executa um daemon, chamado nimbus, responsável por
distribuir o código em todo o cluster, atribuir tarefas às máquinas e monitorar as falhas.
Cada nó de trabalhador executa um daemon chamado Supervisor. O supervisor escuta o processo atribuído à sua máquina e
inicia e interrompe os processos conforme necessário com base no que o daemon nimbus atribuiu a ele.
Toda a coordenação entre a nimbus e os supervisores é feita por meio do Zookeeper, que mantém o estado e, caso ocorra
alguma falha, o sistema se recupera de forma transparente.
Cada processo de um nó trabalhador executa um subconjunto da topologia;
sendo assim, uma topologia em execução consiste em muitos processos
espalhados por muitas máquinas. A topologia é descrita como um DAG com
spouts e bolts atuando como vértices do grá�co.
/
As arestas no grá�co indicam como os dados devem ser passados entre os nós. Os spouts se conectam à fonte de dados
externas para transformá-los em tuplas para serem processadas pelos bolts. Juntos, a topologia atua como um pipeline de
transformação de dados.
Para usar o Storm, os spouts e os bolts devem ser codi�cados e a topologia de�nida utilizando um aplicativo em Java ou em
outra linguagem, por exemplo Python, convertendo para Java. A estrutura dos aplicativos (Ex: exemploStorm.java)
desenvolvidos em Java deve, no mínimo, realizar os seguintes passos:
Criar uma classe para cada aresta spouts que seja extensão da classe org.apache.storm.topology.base.BaseRichSpout ou
implemente a interface org.apache.storm.topology.IrichSpout;
Criar uma classe para cada aresta bolts que seja extensão da classe org.apache.storm.topology.base.BaseRichBolt ou
implemente a interface org.apache.storm.topology.IrichBolt;
Con�gurar os parâmetros do objeto topologia (org.apache.storm.topology.TopologyBuilder), informando o encadeamento
entre os spouts e bolts;
Compilar a aplicação (Ex: bin/hadoop com.sun.tools.javac.Main exemploStorm.java);
Gerar um arquivo jar (Ex: jar cf exemploStorm.jar exemploStorm*.class);
Executar a topologia no Storm (Ex: storm jar exemploStorm.jar exemploStorm).
As facilidades proporcionadas pelos frameworks e os benefícios da arquitetura fazem do Hadoop um excelente ambiente para
o desenvolvimento de projetos de Big Data.
Atividade
(ESAF - 2016 - ANAC - Analista Administrativo - Área 2) Para o processamento de grandes massas de dados, no contexto de Big
Data, é muito utilizada uma plataforma de software em Java, de computação distribuída, voltada para clusters, inspirada no
MapReduce e no GoogleFS. Esta plataforma é o(a)
a) Yam Common.
b) GoogleCrush.
c) EMRx.
d) Hadoop.
e) MapFix.
O YARN veri�ca a disponibilidade de memória, cpu, disco e rede dos nós, dentre outras atividades de gerenciamento de
recursos no cluster por meio de dois serviços mestres e um serviço trabalhador. Esses serviços são denominados:
a) ResourceManager, MasterManager e NodeManager;
b) ClusterManager, TaskManager e NodeManager;
c) MasterManager, WorkManager e NodeManager;
d) ResourceManager, ApplicationMaster e NodeManager;
e) ProcessManager, MemoryManager e NodeManager.
/
(COMPERVE - 2020 - TJ-RN - Analista de Suporte Pleno - Banco de Dados) Big Data surgiu a partir da necessidade de manipular
um grande volume de dados e, com isso, novos conceitos foram introduzidos, como o Data Lake, que:
a) Pode ser considerado um repositório de dados relacionados, sendo, portanto, um armazém de dados orientado por assunto.
b) Pode ser considerado um conjunto de bancos de dados relacionais e com relacionamentos entre tabelas de diferentes esquemas de
bancos de dados.
c) Resultado de sucessivas operações de mineração de dados, sendo um ambiente no qual é possível ter relatórios e dashboards de
maneira amigável para os analistas de negócio.
d) Projetado para armazenar dados de diversas fontes e formatos, não havendo a necessidade da definição de um esquema de dados
para inserir novos itens.
e) Projetado para armazenar grande volume de dados, organizados em um esquema flexível definido pelo HDFS.
Notas
Título modal 1
Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ�ca e de impressos. Lorem Ipsum é simplesmente
uma simulação de texto da indústria tipográ�ca e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da
indústria tipográ�ca e de impressos.
Título modal 1
Lorem Ipsum é simplesmente uma simulação de texto da indústria tipográ�ca e de impressos. Lorem Ipsum é simplesmente
uma simulação de texto da indústria tipográ�ca e de impressos. Lorem Ipsum é simplesmente uma simulação de texto da
indústria tipográ�ca e de impressos.
Referências
BENGFOR, B.; KIM, J. Analítica de dados com Hadoop: Uma introdução para cientistas de dados. 1.ed. São Paulo: Novatec,
2016.
TAURION, C. Big data. Rio de Janeiro: Brasport, 2013.
Próxima aula
Distribuição de dados no cluster;
Redundância de dados no cluster;
Acesso aos dados no cluster.
Explore mais
/
Explore mais
Pesquise no Google e leia sobre “Como funciona a pesquisa Google”.

Continue navegando