BIG DATA NA PRÁTICA
MARCELO NAGY
CICLO DE PALESTRAS EM TI
Marcelo Nagy
Formação
Tecnologias
Big Data
A era das grandes massas de dados já começou. Usuários são agora fontes de dados. Empresas armazenam incontáveis informações de clientes e milhões de sensores monitoram o mundo real, criando e trocando dados na Internet das coisas. Uma variedade de informações é gerada não só por cientistas, empresas e governos, como acontecia antes, mas também pela população em geral. As arquiteturas em nuvem obrigam indivíduos e organizações a lidam com um verdadeiro dilúvio de dados. Estes dados são úteis ? Estes dados estão correlacionados ? Como garimpar informações destes dados ?
Aumento dos dados armazenados
estimados pela IDC
Fonte: IDC’s Digital Universe Study, patrocinado pela EMC, Junho de 2011
Armazenamento em exabytes
Curiosidades
20 gigabytes tem a coleção de trabalhos do Beethoven 2 terabytes em média uma biblioteca acadêmica 11 petabytes total de mensagens de correio eletrônico em um ano 5 exabytes total de palavras ditas pelos humanos 200 petabytes todo material impresso no mundo
Escalas
3 V's
Velocidade Volume Variedade Volume + variedade + velocidade de geração de dados são os elementos que compõe o Big Data. Possibilidade de localizar, peneirar e analisar informações úteis.
A proposta ambiciosa do Big Data é ajudar empresas a decidir com base em evidências e analisadas continuamente.
3 V's
Os sistemas tradicionais atuais não estão preparados para tratar certas coleções de dados: A previsão é que passaremos da faixa de muitos gigabytes (bilhões de bytes) ou poucos terabytes (trilhões) para a faixa de petabytes (milhares de trilhões) ou até mesmo exabytes (milhões de trilhões). Um disco rígido comum tem atual mente em torno de 1 terabyte. O LHC, o maior acelerador de partículas do mundo armazena 15 petabytes por ano de dados na forma original. É o equivalente a 15 mil discos rígidos cheios. Velocidade significa que esses dados são enviados aos nossos sistemas com uma taxa de bytes por intervalo de tem po muito alta. Como saber o que guardar e guardar cada vez mais rápido é o desafio! Guardar informação qualquer que seja permite que, mais tarde, exista uma disponibilidade que pode ser aproveitada em uma oportunidade não identificada previamente. Uma das principais aplicações de ter à disposição uma grande quantidade de dados é descobrir algo novo. Analisando e criando um modelo de execução a partir de exemplos, podemos fazer com que um computador ‘aprenda’ a reconhecer padrões ou fazer previsões.
3 V's
Os dados gerados ultrapassam significativamente as capacidades de armazenamento das estruturas. Desta forma, se torna imprescindível a concepção de novos procedimentos para o tratamento de dados. Não é descartada a possibilidade de que novas observações sejam feitas com relação aos mesmos dados. Para comparar todos os pares de uma coleção qualquer (nomes, CPFs, número de telefones, compras, endereços etc.), precisamos gastar um tempo proporcional ao quadrado da quantidade de dados.
Variedade significa que os dados aparecem em formas diferentes,
facilmente descritos na forma de tabelas, textos, imagens, etc.
Precisamos melhorar nossos algoritmos, buscar soluções aproximadas – caso contrário, o processamento se torna inviável. Soluções paralelas permitem desempenho superlinear, isto é, o aumento de velocidade é maior do que o aumento do número exigido de processadores.Exemplos de classificação de Big
Data
• Uma apresentação de 40 megabytes representa uma grande massa de dados se não for possível enviála por correio eletrônico a um colega ou cliente; • Uma imagem médica de 1 terabyte representa uma grande massa de dados se não for possível exibila de forma simples e acurada em uma tela remota em tempo real durante uma consulta médica com um paciente; • Um filme de 1 petabyte representa uma grande massa de dados se não for possível editálo a tempo.
Big Data no comércio
Quantas informações são geradas em cada venda em uma rede de supermercados? E se essas informações forem cruzadas com mensagens em redes sociais sobre mercados, produtos, receitas e notícias na mídia e de cartão de crédito? Raciocinando dessa forma, sistemas que analisam toda essa informação permitem a obtenção tanto de perfis de consumo individualizados quanto da experiência de compra do cliente e seus gastos.
Big Data na indústria
Um dos fatores que aumentaram a quantidade de dados foi a multiplicação dos sensores de vários tipos de câmeras de alta definição a simples contadores ou termômetros. A maioria das casas já tem equipamentos que fornecem informação aos seus produtores ou provedores de serviço, como computadores, equipamentos de TV a cabo e celulares. Já temos geladeiras ligadas à internet,para informar seu estado ou ritmo de consumo. Isto mostra que Big Data já esta bem próximo do nosso dia a dia.
Big Data no Brasil
No Brasil, em especial, a indústria
de petróleo é grande criadora de
dados. Em dezembro do ano
passado, o Banco de Dados de
Exploração, mantido pela Agência
Nacional de Petróleo (ANP),
continha 4,57 petabytes.
Os dados desse banco da ANP
são usados por várias empresas
de petróleo, que produzem ainda
mais informação.A partir deles,
são gerados imagens e filmes que
são analisados e geram textos e
relatórios, que, por sua vez, geram
investimentos financeiros,
movimentos da bolsa e notícias na
mídia.
Como país de grandes proporções
e com uma população de
aproximadamente 200 milhões de
pessoas, algumas bases de dados
aqui já traziam problemas de Big
Data antes que esse nome fosse
criado.
Desafios
i) Como adquirir; ii) Armazenar; iii) Processar; iv) Transmitir e disseminar; v) Gerenciar e manter; vi) Arquivar por longo prazo; vii) Garantir a segurança; viii) Treinar pessoas para usálos; ix) Pagar por tudo isso.
Ainda podemos adicionar a esses desafios, como entendêlos de forma isolada e como relacionálos.
Desafios
Um desafio importante é entender como esses dados evoluem. Essa
tarefa criará, em 2015, segundo a grande empresa norteamericana de
consultoria Gartner Group, cerca de 4,4 milhões de empregos muitos
deles para profissionais capacitados a analisar esses dados, em um
mercado mundial avaliado, já para este ano, em US$ 34 bilhões (cerca
de R$ 70 bilhões).
Grandes empresas de computação já orientam suas linhas de produtos e
serviços para atender a esse mercado.
Uma questão crítica é como armazenálos de forma que possam ser
rapidamente encontrados e manipulados.Um dos grandes
desenvolvimentos tecnológicos em computação do século passado
foram os Sistemas de Gerenciamento de Banco de Dados (SGBDs).
Desafios
São eles que permitem que tratemos de forma eficiente milhões de
contas bancárias e outros sistemas que basicamente fazem o
gerenciamento de transações.
Os SGBDs compartilham uma linguagem chamada SQL (sigla, em
inglês, para linguagem de consulta estruturada), e o modo de organizar
essas tabelas para condições ótimas de acesso é bem conhecida.
Com novos tipos de dados, essa tecnologia não é eficiente. Para alguns,
o caminho parece ser o que denominamos bancos de dados NoSQL ou
outros ainda mais especializados.
Desafios
Outro caminho é a paralelização do processamento. Essa paralelização se dá em muitos níveis, como um computador com vários processadores (chips); em processadores com vários núcleos; ou pela união de computadores para formar uma rede que age como um supercomputador, por exemplo. Há ainda a opção do processamento em nuvem. Propostas como o programa livre Hadoop baseado no MapReduce, um dos mecanismos que fazem o Google funcionar permitem que um problema seja dividido por várias máquinas e, depois, tenha seu resultado agregado em uma máquina central.
Exemplos
No Japão, uma rede de milhares de sensores permite detectar terremotos e avisar a população. Empresas de cotação de preços, bem como as de vendas pela internet, analisam o perfil dos clientes, para dar sugestões de consumo. Instituições financeiras e governos avaliam milhões de transações financeiras em busca de fraudes.
Ética e Big Data
Não podemos deixar de lembrar
que Big Data também traz à tona
novos problemas éticos.
O que empresas e governos
fazem com tantos dados privados?
Que informação pode ser
deduzida a partir de dados?
O uso das informações que
estamos guardando e analisando
pode ter resultados não
desejados. É famosa a história do
caso de um pai que descobriu, por
meio da propaganda direcionada
de uma rede norteamericana de
lojas de varejo, que sua filha
adolescente estava grávida fato
que havia sido detectado pelos
algoritmos da empresa.
Ética e Big Data
A disponibilidade dessas grandes
bases de dados e a viabilidade de
sua interligação permitem que
imaginemos aplicações que
salvam ou prejudicam vidas. Fazer
um julgamento ético ou moral de
uma tecnologia não é questão
simples.
Melvin Kranzberg (19171995),
que disse: “A tecnologia não é boa
nem é má, nem é neutra”.
Não devemos esquecer o ditado
que diz: informação é poder.
Clusters
Uma solução para agilizar e viabilizar a análise das grandes massas de dados é a partir das arquiteturas em aglomeração (cluster). Escalabilidade, a agilidade e a elasticidade dos recursos são prérequisitos muito importantes para a análise das grandes massas de dados. Uma questão chave, entretanto, é como as arquiteturas em aglomeração podem atingir todas essas características. Considerando, por exemplo, que a Google possua milhões de núcleos de processadores em todos os seus centros de dados, apesar desses componentes falharem com frequência, componentes redundantes fazem com que essas falhas sejam imperceptíveis aos usuários.
Hadoop
O Hadoop foi desenvolvido para aproveitar os recursos e a estrutura disponível em uma arquitetura em aglomeração (cluster). O objetivo é possibilitar que as aplicações utilizem todo o potencial de um aglomerado ao levar em consideração dois pontos chave: (i) a distribuição dos dados pelo aglomerado, assegurando que os dados estejam distribuídos igualmente; (ii) o desenvolvimento de aplicações que se beneficiem da localização dos dados.
Hadoop
Esses dois pontos fundamentais levam o projeto do Hadoop a empregar dois mecanismos: Sistema de Arquivos Distribuído (Hadoop Distributed File System HDFS) que é um sistema de arquivos para dividir, espalhar, replicar e gerenciar dados ao longo dos nós em um cluster; Namenode Datanode
Hadoop
O MapReduce que é um mecanismo computacional para executar aplicações em paralelo. As aplicações são executadas através da divisão em tarefas que manipulam apenas uma parcela dos dados, coletando e redistribuindo resultados intermediários e gerenciando falhas através de todos os nós do aglomerado. JobTracker Coordena todas as tarefas executadas no sistema através da divisão da tarefa em rotinas e para agendar cada uma dessas tarefas para serem executadas em um nó. O JobTracker também mantém informações de todos os nós participantes da computação, monitora os status individuais, orquestra o fluxo de dados e se encarrega de contornar as falhas dos nós; TaskTracker Executam tarefas e enviam relatórios de progresso ao JobTracker. Caso a tarefa falhe, o JobTracker pode reagendála em um TaskTracker diferente. O TaskTracker mantém informacões de todas as tarefas em execução em seus nós, seja uma tarefa de mapeamento ou redução.
Instalação do Hadoop
Instalação de um pseudo cluster
em uma máquina linux.
Alterar os hosts das máquinas
para as máquinas poderem se
conectar.
Instalar o ssh nas máquinas do
cluster.
Configurar o repositório da
cloudera no linux.
Instalando
sudo aptget install hadoop0.20
confpseudo
Instala o core do hadoop
configurado para rodar em uma
máquina.
sudo u hdfs hdfs namenode
format
Formata o NameNode os
metadados do nameNode ficam na
pasta /var/lib/hadoop
hdfs/cache/hdfs/dfs/name
Configurar o alternatives
/etc/hadoop/conf
link simbólico para
/etc/alternatives/hadoopconf
Instalação do Hadoop
$ for service in /etc/init.d/hadoop
hdfs*
do
sudo $service start
done
iniciar os serviços da hdfs
criar a pasta temporária do hdfs
$ sudo u hdfs hadoop fs mkdir
/tmp
alterar a permissão da pasta para
que todos o componentes do
hadoop possam utilizála
$ sudo u hdfs hadoop fs chmod
R 1777 /tmp
criar as pastsas que o mapReduce
utilizam e dar suas permissões
$ sudo u hdfs hadoop fs mkdir \
/var/lib/hadoop
hdfs/cache/mapred/mapred/staging
Instalação do Hadoop
$ sudo u hdfs hadoop fs chmod
1777 \/var/lib/hadoop
hdfs/cache/mapred/mapred/staging
$ sudo u hdfs hadoop fs chown
R \mapred /var/lib/hadoop
hdfs/cache/mapred
for service in /etc/init.d/hadoop
0.20mapreduce*
do
sudo $service start
done
iniciar os serviços do MapReduce
sudo jps
verificar os serviços
comandos básicos
$ hadoop fs mkdir input
$ hadoop fs put shakespeare.txt
input
$ hadoop fs ls input
$ hadoop fs tail
input/shakespeare.txt
Flume
O flume é utilizado para inserir logs no hdfs em real time. Implementa transações. Instalando o flume sudo aptget install flumeng Criando a pasta no hdfs que receberá os logs hadoop fs mkdir flume/collector1 Criando o arquivo de configuração do flume /etc/hadoop/conf/ flumeconf.properties
Flume
conteúdo do arquivo
tail1.sources = src1
tail1.channels = ch1
tail1.sinks = sink1
tail1.sources.src1.type = exec
tail1.sources.src1.command = tail
F /tmp/access_log
tail1.sources.src1.channels = ch1
tail1.channels.ch1.type = memory
tail1.channels.ch1.capacity = 500
tail1.sinks.sink1.type = avro
tail1.sinks.sink1.hostname =
localhost
tail1.sinks.sink1.port = 6000
tail1.sinks.sink1.batchsize = 1
tail1.sinks.sink1.channel = ch1
##
collector1.sources = src1
collector1.channels = ch1
collector1.sinks = sink1
collector1.sources.src1.type = avro
collector1.sources.src1.bind =
localhost
collector1.sources.src1.port = 6000
collector1.sources.src1.channels =
ch1
collector1.channels.ch1.type =
memory
collector1.channels.ch1.capacity =
500
collector1.sinks.sink1.type = hdfs
collector1.sinks.sink1.hdfs.path =
flume/collector1
collector1.sinks.sink1.hdfs.filePrefix
= access_log
collector1.sinks.sink1.channel =
ch1
Flume
Startar o flume sudo service flumengagent start sudo hadoop fs ls flume/collector1
Scoop
Instalando Scoop sudo aptget install scoop Criar um link simbolico para o jdbc que o scoop ira' utilizar.
sudo ln s /usr/share/java/mysqlconnectorjava.jar /usr/lib/sqoop/lib/ Scoop importa/exporta dados de um banco de dados relacional. Utiliza de um JDBC para se conectar a uma base de dados. sqoop import connect jdbc:mysql://localhost/movielens table movie fieldsterminatedby '\t' username training password training
MapReduce
cat /my/log | grep '\.html' | sort | uniq –c >
/my/outfile
1 mapeamento 2ordenacao 3reduceMapReduce
exemplo contador de palavras 1entrada the cat sat on the mat the aardvark sat on the sofa
2dados intermediarios (the, 1), (cat, 1), (sat, 1), (on, 1), (the, 1), (mat, 1), (the, 1), (aardvark, 1), (sat, 1), (on, 1), (the, 1), (sofa, 1)
MapReduce
3entrada no reducer (aardvark, [1]) (cat, [1]) (mat, [1]) (on, [1, 1]) (sat, [1, 1]) (sofa, [1]) (the, [1, 1, 1, 1])
MapReduce
4saida do reducer (aardvark, 1) (cat, 1) (mat, 1) (on, 2) (sat, 2) (sofa, 1) (the, 4) sudo hadoop jar seujar.java /diterotrio/hdfs/entrada /diterotrio/hdfs/saida