Big Data
Uma introdução
Thiago Rigo
Agenda
Big Bang dos Dados
Conceitos
Ecosistema
Casos de Uso
Demo
Big Bang dos Dados
http://www.visualnews.com/2012/06/19/how-much-data-created-every-minute/
http://awesome.good.is/transparency/web/1009/the-world-of-data/flat.html
“Desde o nascimento da civilização até 2003
criamos 5 Exabytes de informação, mas agora, essa
mesma quantidade de informação é criada a cada 2
dias.”
Eric Schmidt, CEO Google, 2010
1 Exabyte = 1.000.000 TB
http://thehumanfaceofbigdata.com/pressroom/
Conceitos
Volume
Quantidade muito grande de dados
Bancos de dados tradicionais não atendem
Servidores high-end custam muito caro
Variedade
Dados de diversas fontes
Dados estruturados, semi-estruturados e não
estruturados
Schemaless
Velocidade
Agilidade no processamento dos dados
Processamento de dados em tempo real
Rapidez na ingestão dos dados
Ecosistema
Hadoop - Historia
2002-04: Nutch
2004-06: GFS, MapReduce
2006-08: Yahoo!, Top-Level
Hadoop
“O Apache Hadoop é um framework que permite
processamento distribuído de grandes volumes de
dados, sendo desenhado para escalar de um
servidor para milhares de máquinas…”
http://hadoop.apache.org/
Hadoop
Escalabilidade horizontal
Tolerancia a falha
Redundância
Paralelismo
Data locality
Hadoop - Arquitetura
http://www.rosebt.com/blog/hadooparchitecture-and-deployment
Hadoop - HDFS
https://developer.yahoo.com/hadoop/tutorial/module2.html
Hadoop - MapReduce
http://www.alex-hanna.com/tworkshops/lesson-5-hadoop-and-mapreduce/
Hadoop - MapReduce
public	
  void	
  map(LongWritable	
  key,	
  Text	
  value,	
  Context	
  context)	
  
	
  	
  	
  	
  throws	
  IOException,	
  InterruptedException	
  {	
  
	
  	
  	
  	
  String[]	
  words	
  =	
  value.toString().split("	
  ");	
  
	
  	
  	
  	
  for	
  (String	
  word	
  :	
  words)	
  {	
  
	
  	
  	
  	
  	
  	
  context.write(new	
  Text(word),	
  new	
  IntWritable(1));	
  
	
  	
  	
  	
  }	
  
}
Hadoop - MapReduce
public	
  void	
  reduce(Text	
  key,	
  Iterable<IntWritable>	
  values,	
  Context	
  context)	
  
	
  	
  	
  	
  throws	
  IOException,	
  InterruptedException	
  {	
  
	
  	
  	
  	
  int	
  sum	
  =	
  0;	
  
	
  	
  	
  	
  for	
  (IntWritable	
  value	
  :	
  values)	
  {	
  
	
  	
  	
  	
  	
  	
  	
  	
  sum	
  +=	
  value.get();	
  
	
  	
  	
  	
  }	
  
	
  	
  	
  	
  context.write(key,	
  new	
  IntWritable(sum));	
  
}	
  
Pig
“Apache Pig é uma plataforma para analisar
grandes data sets que é composta por uma
linguagem de alto nível para expressar programas
de análise de dados e infraestrutura para executar
esses programas.”
http://pig.apache.org/
Pig
Linguagem de alto nível
Suporte a UDFs
Operadores relacionais (Group, Join, Cross)
Modo local e interativo
Pig
A = LOAD ‘logs/2014/12‘ AS (f1:int,f2:int,f3:int);
DUMP A;
(1,2,3)
(4,2,1)
(4,3,3)
B = GROUP A BY f1;
DUMP B;
(1,{(1,2,3)})
(4,{(4,2,1),(4,3,3)})
X = FOREACH B GENERATE COUNT(A);
DUMP X;
(1L)
(2L)
Hive
“ O Apache Hive é um software de data warehouse
que facilita realizar consultas e gerenciar grandes
data sets que são armazenados de forma
distribuída, provendo um mecanismo para
estruturar e consultar esses dados usando uma
linguagem parecida com SQL, chamada HiveQL.”
http://hive.apache.org/
Hive
Traduz SQL para MapReduce
Estrutura dados como tabelas
Suporte a UDFs
Não é OLTP
Hive
INSERT OVERWRITE TABLE pv_gender_sum
SELECT pv_users.gender,
count (DISTINCT pv_users.userid)
FROM pv_users
GROUP BY pv_users.gender;
Ecosistema
https://www.codecentric.de/schulungen-und-workshops/hadoop-essentials/
E muito mais!
https://amplab.cs.berkeley.edu/benchmark/
Casos de Uso
Casos de Uso
Análise de logs
Engines de recomendação
Processos ETL
Eleições presidenciais
Previsão de horário de pouso
Demo
Demo
Contar palavras no Hadoop
Dúvidas?

Big Data - Uma Introdução