Big Data - Fatec Rio Preto

Propaganda
 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 exibi­la 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 norte­americana 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 No­SQL 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 norte­americana 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 (1917­1995),
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 apt­get install hadoop­0.20­
conf­pseudo
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/hadoop­conf
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.20­mapreduce­*
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 apt­get install flume­ng
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/ flume­conf.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.batch­size = 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 flume­ng­agent start
sudo hadoop fs ­ls flume/collector1
Scoop
Instalando Scoop
sudo apt­get install scoop
Criar um link simbolico para o jdbc que o scoop ira' utilizar.
sudo ln ­s /usr/share/java/mysql­connector­java.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 ­­fields­terminated­by '\t'
­­username training ­­password training
MapReduce
cat /my/log | grep '\.html' | sort | uniq –c >
/my/outfile
1­ mapeamento
2­ordenacao
3­reduce
MapReduce
exemplo contador de palavras
1­entrada
the cat sat on the mat
the aardvark sat on the sofa
2­dados 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
3­entrada no reducer
(aardvark, [1])
(cat, [1])
(mat, [1])
(on, [1, 1])
(sat, [1, 1])
(sofa, [1])
(the, [1, 1, 1, 1])
MapReduce
4­saida 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
Hive
Criado pelo facebook. Hive foi criado para aproveitar o conhecimento previo em
Sql. Suporta somente instrucoes de select, não realiza updates nem deletes.
Transforma uma hiveQuery em um job MapReduce.
Para o Hive Hive uma pasta no hdfs e' vista como uma tabela.
Com o Hive e' possível unir diferentes bases.
Os arquivos dentro da pasta em questao serao os dados da tabela.
Intalando o hive
sudo apt­get install hive­metastore
sudo service hive­metastore start
shell hive
hive
Impala
Projeto apache.O impala utiliza
hiveQuery, é cerca de 20 X mais
rápido que o hive.
O impala não utiliza jobs
mapreduce.
instalar o impala
instalar o server em todos os datas
nodes:
sudo yum install impala­server
sudo service impala­server start
instalar o impala meta­store em
uma máquina:
sudo apt­get install impala­state­
store
sudo service impala­state­store
start
Instalar o shel do impala em uma
ou mais ma'quinas:
sudo yum install impala­shell
impala­shell
PIG
Criado pelo yahoo. Abstracao em
alto nivel de MapReduce.
Linguagem similar ao Perl e Ruby.
Maior facilidade para se criar
MapReduces.
Instalando o Pig
sudo install pig
Exemplo de codigo pig
movies = LOAD '/data/films' AS
(id:int, name:string, year:int);
ratings = LOAD '/data/ratings' AS
(movie_id: int, user_id: int,
score:int);
jnd = JOIN movies BY id, ratings
BY movie_id;
recent = FILTER jnd BY year >
1995;
srtd = ORDER recent BY name
DESC;
justafew = LIMIT srtd 50;
STORE justafew INTO
'/data/pigoutput';
para rodar um script pig
pig ­f seuScript.pig
Solr
Base de dados totalmente customizável, ferrammenta especializada, faz melhor
o trabalho para buscas textuais.
Performance melhor.
Solr entende diferentes línguas.
Solr tem funcoes especiais para buscas de texto ex. Highlighting.
Busca com relevancia.
Busca geoespacial.
Redis
Base de dados que trabalha como hash
Consulta rapida aguenta muitas requisicoes.
Excelente para implementar contadores e filas.
Temas relacionados
Ozzie
Yarn
Hue
Presto
Mahout
Ciclo de vida dos dados
geração
agregação
análise
apagamento
Download