100
7/24/12 JavaOne La)n America 46 de dezembro de 2012 Big Data e Hadoop A nova fronteira para inovação Fabio Velloso Monday, December 10, 12

Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

Embed Size (px)

Citation preview

Page 1: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big Data e HadoopA nova fronteira para inovação Fabio Velloso

Monday, December 10, 12

Page 2: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Fabio VellosoBio

Bacharel em Ciência da Computação - UFSCar

MBA - FGV

Programador Java desde 1996

Fundador do SouJava

Gerente de Arquitetura de Sistemas Telefonica/VIVO

Service Design Thinker

Monday, December 10, 12

Page 3: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

AgendaBig Data e Hadoop

Definição e características

Cenários de uso e aplicações

Hadoop

Entrada de dados

Serialização

Contexto

MapReduce Patterns

Automatização

Monday, December 10, 12

Page 4: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataContexto

Monday, December 10, 12

Page 5: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataContexto

Monday, December 10, 12

Page 6: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataContexto

Monday, December 10, 12

Page 7: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataContexto

Monday, December 10, 12

Page 8: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataContexto

Explosão de dispositivos conectados na Internet

Monday, December 10, 12

Page 9: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataContexto

Explosão de dispositivos conectados na Internet

Estimativa entre 16 e 50 bilhões em 2020

Monday, December 10, 12

Page 10: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataContexto

Explosão de dispositivos conectados na Internet

Estimativa entre 16 e 50 bilhões em 2020

Mais dispositivos

Monday, December 10, 12

Page 11: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataContexto

Explosão de dispositivos conectados na Internet

Estimativa entre 16 e 50 bilhões em 2020

Mais dispositivos

Mais aplicações

Monday, December 10, 12

Page 12: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataContexto

Explosão de dispositivos conectados na Internet

Estimativa entre 16 e 50 bilhões em 2020

Mais dispositivos

Mais aplicações

Mais conteúdo

Monday, December 10, 12

Page 13: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataContexto

March 8, 2012

Monday, December 10, 12

Page 14: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataContexto

50 Milhões  de  twe&s  por  dia

72.9 produtos  vendidos

por  segundo

24 Petabytesprocessadosdiariamente

20 Horasde  vídeo  enviadas

por  minuto

1.3 Exabytestrafegados

internet  móvel

2.9 Milhõesde  emails

por  segundoMarch 8, 2012

Monday, December 10, 12

Page 15: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataContexto

Monday, December 10, 12

Page 16: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataContexto

http://www.businesscomputingworld.co.uk/how-to-make-sense-of-the-big-data-universe/

Monday, December 10, 12

Page 17: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataUniversidade do Texas - 2011

http://gigaom.com/cloud/big-data-equals-big-opportunities-for-businesses-infographic/#comment-660361

Monday, December 10, 12

Page 18: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataDefinição

Conjuntos de dados muito grandes, dinâmicos e complexos para serem processados por ferramentas ou processos tradicionais

Monday, December 10, 12

Page 19: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataDefinição

Conjuntos de dados muito grandes, dinâmicos e complexos para serem processados por ferramentas ou processos tradicionais

Dificuldades:

capturar, armazenar, buscar, compartilhar, analisar e visualizar

Monday, December 10, 12

Page 20: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataDefinição

Conjuntos de dados muito grandes, dinâmicos e complexos para serem processados por ferramentas ou processos tradicionais

Dificuldades:

capturar, armazenar, buscar, compartilhar, analisar e visualizar

Big Data não é sobre a geração de dados e sim sobre o seu processamento

Monday, December 10, 12

Page 21: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataCaracterísticas

Monday, December 10, 12

Page 22: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataCaracterísticas

Volume

Petabytes, Zettabytes

Monday, December 10, 12

Page 23: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataCaracterísticas

Variedade

Dados não estruturados Dados semi-estruturados Diferentes fontes Diferentes formatos

Volume

Petabytes, Zettabytes

Monday, December 10, 12

Page 24: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataCaracterísticas

Velocidade

Processamento de dados Armazenamento Análise de dados

Variedade

Dados não estruturados Dados semi-estruturados Diferentes fontes Diferentes formatos

Volume

Petabytes, Zettabytes

Monday, December 10, 12

Page 25: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataCaracterísticas

Velocidade

Processamento de dados Armazenamento Análise de dados

Variedade

Dados não estruturados Dados semi-estruturados Diferentes fontes Diferentes formatos

Volume

Petabytes, Zettabytes

V3

Monday, December 10, 12

Page 26: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataCaracterísticas

Complexidade

Tipos de dados Composição Formatos Regras

Velocidade

Processamento de dados Armazenamento Análise de dados

Variedade

Dados não estruturados Dados semi-estruturados Diferentes fontes Diferentes formatos

Volume

Petabytes, Zettabytes

V3

Monday, December 10, 12

Page 27: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataMudanças

Volume: Terabytes Zettabytes

Variedade: estruturado estruturado e não estruturado

Velocidade: batch streaming de dados

Monday, December 10, 12

Page 28: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

AgendaBig Data e Hadoop

Definição e características

Cenários de uso e aplicações

Hadoop

Entrada de dados

Serialização

Contexto

MapReduce Patterns

Automatização

Monday, December 10, 12

Page 29: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataCenários de uso e aplicações

Monday, December 10, 12

Page 30: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataCenários de uso e aplicações

Fast fashion

Pouca quantidade e alta customização

Baixo “Lead Time”

Lojas integradas, ERP, RFID e banda larga

Identifica tendências

Várias oficinas, vários estilos e opções

Novas tendências disponíveis em 30 dias

Monday, December 10, 12

Page 31: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataCenários de uso e aplicações

Bens de consumo: análise de redes sociais paramaior conhecimento do cliente, influência, comportamento, ofertas direcionadas e aumento de vendas

Setor financeiro: melhoria de ofertas, retenção,vendas cruzadas, detecção de fraudes e gerenciamento de riscos

Setor público: melhoria de vida da população,transito, melhor uso de água e energia, controle de enchentes e tragédias naturais com identificação de padrões (Global Pulse)

Monday, December 10, 12

Page 32: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Big DataCenários de uso e aplicações

Indústria: logística otimizada, inventário commonitoração de RFID e mapeamento de dados de GPS para agilizar a eficiência da cadeia de abastecimento

Comércio eletrônico: análise de navegação, cliques e perfil, melhorando experiência do usuário em diversos canais com melhores ofertas sugeridas

Saúde: análise de genoma, dados de pesquisase histórico de pacientes e comportamentos resultandoem melhoria de diagnóstico, tratamento e remédios mais eficazes

University of Ontario, diagnósticos em recém-nascidos

Monday, December 10, 12

Page 33: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 11  Dia  de  Java  -­‐  UFSCar24/25  de  agosto  de  2012

CaseFacebook

30 PB em 2011 25 mil jobs MapReduce por dia 65 milhões de arquivos no HDFS 3000 vezes o tamanho da Biblioteca do Congresso US

HDFS, MapReduce, Zookeeper e Hive (99% dos Jobs)

100 PB em 2012

Consultas Ad Hoc, Dashboards para BI

Reports para os anunciantes e recomendações

Monday, December 10, 12

Page 34: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

AgendaBig Data e Hadoop

Definição e características

Cenários de uso e aplicações

Hadoop

Entrada de dados

Serialização

Contexto

MapReduce Patterns

Automatização

Monday, December 10, 12

Page 35: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Apache HadoopDefinição

Monday, December 10, 12

Page 36: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Apache HadoopDefinição

Framework open source em Javapara processar um grande volumede dados em cluster de hardware“commodity”

Monday, December 10, 12

Page 37: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Apache HadoopCaracterísticas

Processamento distribuído

Escala linearmente (1 a milhares de servidores - 10k)

Alta disponibilidade

Processamento e armazenamento em cada servidor

Processamento batch e leitura intensiva

Hardware commodity (redundância por replicação)

Modelo simples de programação

Monday, December 10, 12

Page 38: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

HadoopComponentes básicos

Monday, December 10, 12

Page 39: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

HadoopComponentes básicos

Responsável por distribuir e armazenar dados no cluster

Monday, December 10, 12

Page 40: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Responsável peloProcessamento dos dados

HadoopComponentes básicos

Responsável por distribuir e armazenar dados no cluster

Monday, December 10, 12

Page 41: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

HadoopHDFS

Dados são divididos e armazenados em blocosdistribuídos nos múltiplos nós do cluster

Bloco é o volume mínimo de informação a ser lida ou escrita. Blocos de 64Mb a 128Mb

Processamento e armazenamento em cada servidor

Réplicas em diferentes nós (tratamento de falhas, confiabilidade e disponibilidade)

Cada bloco é replicado múltiplas vezes (3 padrão)

Único namespace para todo o cluster

Monday, December 10, 12

Page 42: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

Master Node

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

HadoopMaster e Slave node

Namenode

Slave node

Java Virtual Machine

JobTracker

Java Virtual Machine

SecondaryNamenode DatanodeTasktracker

Namenode é o master, servidor de metadadosda árvore de diretórios e arquivos

Datanode é o worker ou slave, armazena os dados

Namenode conhece Datanodes, blocos e localização

JobTracker (scheduler) e TaskTracker (task em execução)

Monday, December 10, 12

Page 43: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

HDFSData Storage

HDFS divide o dado em blocos de 64MB e os distribui nos DataNodes

arquivo.txt

NameNode

Name Node 1

Name Node 2

Name Node 3

Name Node 4

bloco_xxxxx

bloco_yyyyy

bloco_zzzzz

64Mb

64Mb

15Mb

139Mb

Hadoop: The Definitive Guide

{{{{

Monday, December 10, 12

Page 44: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

HadoopMapReduce

Framework para processamento distribuído de grandes volumes de dados

Algoritmos de análise são “automáticamente” paralelos

Java, Ruby, Python e C++

Utiliza os blocos armazenados no HDFS

Pares chave-valor como input e output

Escala linearmente:

Tempo no cluster = tempo em um core /total de cores

Monday, December 10, 12

Page 45: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

EtapasProcessamento

Dados de Entrada

MapWorker

Dados Intermediários

ReduceWorker

Dados desaída

MapWorker

MapWorker

ReduceWorker

ReduceWorker

Mapeamento Redução

Monday, December 10, 12

Page 46: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

EtapasProcessamento

Dados de Entrada

MapWorker

Dados Intermediários

ReduceWorker

Dados desaída

MapWorker

MapWorker

ReduceWorker

ReduceWorker

Mapeamento Redução

Java for all

Monday, December 10, 12

Page 47: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

EtapasProcessamento

Dados de Entrada

MapWorker

Dados Intermediários

ReduceWorker

Dados desaída

MapWorker

MapWorker

ReduceWorker

ReduceWorker

Mapeamento Redução

Java for all

Hadoop for all

Monday, December 10, 12

Page 48: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

EtapasProcessamento

Dados de Entrada

MapWorker

Dados Intermediários

ReduceWorker

Dados desaída

MapWorker

MapWorker

ReduceWorker

ReduceWorker

Mapeamento Redução

Java for all

Hadoop for all

Hello World Java

Monday, December 10, 12

Page 49: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

EtapasProcessamento

Dados de Entrada

MapWorker

Dados Intermediários

ReduceWorker

Dados desaída

MapWorker

MapWorker

ReduceWorker

ReduceWorker

Mapeamento Redução

Java for all

Hadoop for all

Hello World Java

all 1for 1Java 1

Monday, December 10, 12

Page 50: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

EtapasProcessamento

Dados de Entrada

MapWorker

Dados Intermediários

ReduceWorker

Dados desaída

MapWorker

MapWorker

ReduceWorker

ReduceWorker

Mapeamento Redução

Java for all

Hadoop for all

Hello World Java

all 1for 1Java 1

all 1for 1Hadoop 1

Monday, December 10, 12

Page 51: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

EtapasProcessamento

Dados de Entrada

MapWorker

Dados Intermediários

ReduceWorker

Dados desaída

MapWorker

MapWorker

ReduceWorker

ReduceWorker

Mapeamento Redução

Java for all

Hadoop for all

Hello World Java

all 1for 1Java 1

all 1for 1Hadoop 1

Hello 1Java 1World 1

Monday, December 10, 12

Page 52: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

EtapasProcessamento

Dados de Entrada

MapWorker

Dados Intermediários

ReduceWorker

Dados desaída

MapWorker

MapWorker

ReduceWorker

ReduceWorker

Mapeamento Redução

Java for all

Hadoop for all

Hello World Java

all 1for 1Java 1

all 1for 1Hadoop 1

Hello 1Java 1World 1

Hadoop 1Hello 1Java 2World 1all 2for 2

Monday, December 10, 12

Page 53: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

HadoopMap

Função C1V1 -> list (C2V2)

Interface Mapper é um tipo genérico

4 parâmetros: chaves e textos de entrada e saída

Entrada e saída são pares chave-valor

Executa no mesmo nó onde o dado esta armazenado

Método map()Saída é agrupada e classificada pela chave

Monday, December 10, 12

Page 54: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

HadoopReduce

C2, iter(V2)-> list (C3V3)

Tipos de entrada são iguais aos de saída do Map

Em Java a interface Reducer é um tipo genérico

Entrada é a saída do mapeamento

Entrada e saída são pares chave-valor

Método reduce()

Monday, December 10, 12

Page 55: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

HadoopEcosistema e Ferramentas

Z

ooke

eper

(

Coor

dena

ção)

(SQL)

(Column DB)

PIG (Data Flow)

Import e exportde banco de dados

Avr

o

(Se

rializ

ação

)

Logs

Monday, December 10, 12

Page 56: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

Dados estruturadose não estruturados

BIG DATA

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

NoSQLHadoop

NoSQLNão

Hadoop

BancoMPP e RDBMS

DW

HadoopArquitetura integrada

BI e Ferramentas

de visualizaçãoAplicações

ETL e Integração de

Dados

Monday, December 10, 12

Page 57: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

AgendaBig Data e Hadoop

Definição e características

Cenários de uso e aplicações

Hadoop

Entrada de dados

Serialização

Contexto

MapReduce Patterns

Automatização

Monday, December 10, 12

Page 58: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

REST API Suporte completo a comandos de file system do HDFS

Comandos UNIX POSIX

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Entrada de DadosJava e REST API

Java API FileSystem, LocalFileSystem (org.apache.hadoop.fs )

./hadoop fs -mkdir /output

./hadoop fs -put /usr/local/tmp/tweets/* /tmp/input/

./hadoop fs -cat /tmp/input/file2

curl -i -X PUT "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=CREATE [&overwrite=<true|false>][&blocksize=<LONG>][&replication=<SHORT>] [&permission=<OCTAL>][&buffersize=<INT>]"

HTTP/1.1 307 TEMPORARY_REDIRECTLocation: http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=CREATE...Content-Length: 0

curl -i -X PUT -T <LOCAL_FILE> "http://<DATANODE>:<PORT>/webhdfs/v1/<PATH>?op=CREATE..."

Monday, December 10, 12

Page 59: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

ApacheFlume

Módulo para coletar grandes volumes de logs e armazenar em um repositório centralizadoDistribuído, confiável e alta disponibilidade

Vários tipos e formatos de entrada

Configuração em arquivo texto (Java properties)

Por default serializa em formato JSON (Avro)

Extensível Custom Source Criar conectores em Java (Classe AbstractSource)

Monday, December 10, 12

Page 60: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

Plugingithub

Agent

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

ApacheFlume

tail, tailDir multitail,

stdin, stdout, console

Logs, syslog, UDP/TCP,

Web Server log

IRC

CustomSource

Fontesde dados

Source Sink

Data sinks

HDFS

File (sequence ou textFile)

Console

rpc

syslog TCP

Channel

Cassandra eMongoDB

Monday, December 10, 12

Page 61: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

Plugingithub

Agent

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

ApacheFlume

tail, tailDir multitail,

stdin, stdout, console

Logs, syslog, UDP/TCP,

Web Server log

IRC

CustomSource

Fontesde dados

Source Sink

Data sinks

HDFS

File (sequence ou textFile)

Console

rpc

syslog TCP

Entidades que recebem informações

Channel

Cassandra eMongoDB

Monday, December 10, 12

Page 62: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

Plugingithub

Agent

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

ApacheFlume

tail, tailDir multitail,

stdin, stdout, console

Logs, syslog, UDP/TCP,

Web Server log

IRC

CustomSource

Fontesde dados

Source Sink

Data sinks

HDFS

File (sequence ou textFile)

Console

rpc

syslog TCP

Entidades que recebem informações

Armazena dados até a retirada por um sink

Channel

Cassandra eMongoDB

Monday, December 10, 12

Page 63: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

Plugingithub

Agent

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

ApacheFlume

tail, tailDir multitail,

stdin, stdout, console

Logs, syslog, UDP/TCP,

Web Server log

IRC

CustomSource

Fontesde dados

Source Sink

Data sinks

HDFS

File (sequence ou textFile)

Console

rpc

syslog TCP

Entidades que recebem informações

Enviam informações a outro ponto do fluxo

Armazena dados até a retirada por um sink

Channel

Cassandra eMongoDB

Monday, December 10, 12

Page 64: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

ApacheFlume

ConsolidaçãoMultiplexação

multi-agent flow

Monday, December 10, 12

Page 65: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Apache FlumeExtensível

Escrever um Custom Source

Criar conectores em Java (Classe AbstractSource)

Twitter Streaming API, REST API ou Twitter4J

Dados são copiados diretamente para o HDFS

Exemplo: Cloudera (flume.conf)TwitterAgent.sources = TwitterTwitterAgent.channels = MemChannelTwitterAgent.sinks = HDFS

TwitterAgent.sources.Twitter.type = com.cloudera.flume.source.TwitterSourceTwitterAgent.sources.Twitter.channels = MemChannelTwitterAgent.sources.Twitter.consumerKey = <required>TwitterAgent.sources.Twitter.consumerSecret = <required>TwitterAgent.sources.Twitter.accessToken = <required> TwitterAgent.sources.Twitter.accessTokenSecret = <required> TwitterAgent.sources.Twitter.keywords = javaone, javaonebr, JavaoneLA

Monday, December 10, 12

Page 66: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

DBInputFormat / DBOutputFormat

Leitura e escrita via JDBC

Processo executa como um job Map

Mecanismo “padrão” Hadoop para importar dados

Limitar conexões com o banco

job.setNumMapTasks(n) job.setNumReduceTasks(0) (n) - número de jobs e arquivos escritos

Apache HadoopImport RDBMS para HDFS

Monday, December 10, 12

Page 67: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Apache HadoopImport RDBMS para HDFS

Fonte: Hadoop in Practice

Map Map Map

DBInputFormat DBInputFormat

AvroOutputFormatAvroOutputFormat AvroOutputFormat

HadoopRPC

Client

DBInputFormat

jdbc

jdbc

MapReduce

1Consulta

número de linhas a extrair

2Inicia JobMapReduce

4Escreve dados no

HDFS

3Extrai dados do banco

Monday, December 10, 12

Page 68: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

ApacheSqoop

Import e export de bancos de dados relacionais

Import e export para HDFS e Hive

Arquitetura de conectores

Import tem duas fases: Conectar na fonte e obter metadados e estatísticas Disparar um MapReduce Job para o import

Importa todas tabelas do banco ou tabela especificada

Import para HBase

Importa como texto separado por vírgula

Monday, December 10, 12

Page 69: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Sqoop

Map(Sqoop)

Client

1

3

2

Apache SqoopImport de RDBMS

Map(Sqoop)

Map(Sqoop)

Datasink

Datasink

Datasink

MapReduce

4

5

HDFS HiveHBaseData sinks

MySQL

Data sources / drivers

DB2

Oracle

PostgreSQL

Generic JDBC

Driver JDBC

Driver JDBC eFast Connector (Driver proprietário)

Netezza

SQL Server

MicroStrategyCouchDB

Connectores JDBCCustomizadosFree (Cloudera)

Connector ODBCCustomizadoFree (Cloudera)

Lê metadados

Lê dados

Grava no data sink

Inicia import

Inicia JobMapReduce

Teradata

Monday, December 10, 12

Page 70: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Apache SqoopSintaxe e formatos

Sintaxe: sqoop tool-name [tool-options]

Dados são importados como SequenceFiles,texto ou binário

$ sqoop import --username admin --password abc123 \ --connect jdbc:mysql://soujava.org.br/socialmedia --table tweets --where "id > 15"

Exemplo:

Formato Descrição-­‐-­‐as-­‐tex6ile Dado  importado  em  formato  CSV  (padrão)

-­‐-­‐as-­‐sequencefile Dado  importado  como  SequenceFiles

-­‐-­‐as-­‐avrodatafile Dado  importado  como  arquivo  Avro

Monday, December 10, 12

Page 71: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Apache SqoopImports incrementais

Dois modelos: append (dados numéricos incrementados e

chaves auto-incremento) lastmodified (timestamp data)

Parâmetros: --check-column (define a coluna) --incremental (append ou lastmodified)

$ sqoop --check-column “date” \ --incremental “lastmodified” --last-value “2011-12-31” \ --connect jdbc:mysql://soujava.org.br/socialmedia \ --table tweets

Exemplo:

Monday, December 10, 12

Page 72: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Apache SqoopExport para RDBMS

Insert (padrão) e Update

Tabela precisa estar criada

--export-dir (diretório a ser exportado)

--update-mode updateonly (update falha se o ID não existe no banco) allowinsert (insere apenas se o ID não existir)

--update-key id$ sqoop --update-mode updateonly \ --update-key id --export-dir tweets \ --connect jdbc:mysql://soujava.org.br/socialmedia \ --table tweets_export

Exemplo:

Monday, December 10, 12

Page 73: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Apache SqoopExport para RDBMS

Se um job falha o dado pode ser parcial

Staging table para garantir idempotência

$ sqoop --export-dir tweets \ --connect jdbc:mysql://soujava.org.br/tweets \ --table tweets_export \ --staging-table tweets_staging --clear-staging-table

Exemplo:

Sqoop

Client

1

2

4

MapReduce

INSERT INTO tweets_export(SELECT * FROM tweets_staging)

Inicia export

Inicia JobMapReduce

tweets_export

tweets_staging

3Escreve na área de staging

Monday, December 10, 12

Page 74: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Bancos NoSQL MongoDB

MongoDB Plugin para Flume

Hadoop Connector Plugin para leitura e escrita Compatível com MapReduce Jobs e Pig MongoInputFormat e MongoOutputFormat

Não suportado no Sqoop

import com.mongodb.hadoop.*;import com.mongodb.hadoop.util.*;import org.bson.*;

job.setInputFormatClass( MongoInputFormat.class );job.setOutputFormatClass( MongoOutputFormat.class );

Monday, December 10, 12

Page 75: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Bancos NoSQL Cassandra e HBase

Compatíveis com MapReduce Jobs

Suportados em scripts PIG

Plugin para Flume (para escrita nos bancos)

Não suportados pelo Sqoop

Parte do ecosistema Hadoop

Monday, December 10, 12

Page 76: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

AgendaBig Data e Hadoop

Definição e características

Cenários de uso e aplicações

Hadoop

Entrada de dados

Serialização

Contexto

MapReduce Patterns

Automatização

Monday, December 10, 12

Page 77: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

Texto plano - cross platform, mas pode ser ineficiente

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

SerializaçãoFormatos “padrão” Hadoop

Formato Binário

SequenceFiles - eficiente mas apenas java

Hadoop é escrito em Java

FileSystem Shell chama Java FileSystem

Dificuldades para interoperabilidade

Monday, December 10, 12

Page 78: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

AvroMecanismo de serialização

Framework para serialização em diversas linguagens

Melhor interoperabilidade que SequenceFiles

Schemas definidos em JSON

Geração de código é opcional

Suporta evolução de schemas e seu versionamento

Integração nativa com MapReduce AvroInputFormat,  AvroOutputFormat,  AvroMapper,  AvroReducer

Dado é convertido em formato binário, compactado e armazenado com o schema (object container format)

Monday, December 10, 12

Page 79: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

Tipos primitivos “null”, “boolean” “int”, “long”, “float”, “double”, “bytes” e “string”

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

AvroSerialização

APIs para serialização (Java, C, C++, Ruby, Python)

Enum Record

{        “type”:  “enum”,        “name”:  “SocialMedia”,        “doc”:  “A  Social  Media  Name”,        “symbols”:  [“TWITTER”,”FACEBOOK”,“LINKEDIN”]}

{        “type”:  “record”,        “name”:  “tweetsRecord”,        “doc”:  “Customer  Tweets”,        “namespace”:  “org.soujava.sociamedia.twi&er”,        “fields”:    [                          “name”:  “customerId”,”type”:  “int”},                          “name”:  “tweet”,”type”:  “string”},          ]}

Tipos complexos “array”, “map”, “record”, “enum” e “fixed”

Monday, December 10, 12

Page 80: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

ThriftMecanismo de serialização

Geração de código

Apis em C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk....

Comunicação RPC entre linguagens diferentes

Não integra diretamente com MapReduce

Pode-se se integrar usando Elephant Bird e ProtocolBuffer Pode ser instalado em um servidor Java e servir como proxy para o HDFS

Monday, December 10, 12

Page 81: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

AgendaBig Data e Hadoop

Definição e características

Cenários de uso e aplicações

Hadoop

Entrada de dados

Serialização

Contexto

MapReduce Patterns

Automatização

Monday, December 10, 12

Page 82: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Apache OozieWorkflow Scheduler

Workflows são coleções de ações

Integrado com outras ferramentas MapReduce, Pig, Hive, Sqoop, Java e Shell Scripts

Control flow node define o fluxo

Action nodes são as taks (MapReduce Job, Pig Job,Java, envio de email API Java para integração

HDFS

SqoopOozie

MapReduceCoordinator

Job

1

3

2

Monday, December 10, 12

Page 83: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Apache OozieFork/Join

<workflow-app name="sample-wf" xmlns="uri:oozie:workflow:0.1"> ... <fork name="forking"> <path start="firstparalleljob"/> <path start="secondparalleljob"/> </fork> <action name="firstparallejob"> <map-reduce> <job-tracker>foo:9001</job-tracker> <name-node>bar:9000</name-node> <job-xml>job1.xml</job-xml> </map-reduce> <ok to="joining"/> <error to="kill"/> </action>

Join aguarda execução concorrente

Fork e Join são usados em pares

Fork divide a execução em fluxos concorrentes

<action name="secondparalleljob"> <sqoop:sqoop> <job-traker>foo:9001</job-tracker> <name-node>bar:9000</name-node> <prepare> <delete path="${sqoopOutput}"/> </prepare> <conf-dir>conf/</conf-dir> <command>import --connect jdbc:mysql://....</command> </sqoop:sqoop> <ok to="myotherjob"/> <error to="errorcleanup"/> </action> <join name="joining" to="nextaction"/> ...</workflow-app>

Monday, December 10, 12

Page 84: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Apache OozieSwitch/Case

<workflow-app name="foo-wf" xmlns="uri:oozie:workflow:0.1"> ... <decision name="mydecision"> <switch> <case to="reconsolidatejob"> ${fs:fileSize(secondjobOutputDir) gt 10 * GB} </case> <case to="rexpandjob"> ${fs:filSize(secondjobOutputDir) lt 100 * MB} </case> <case to="recomputejob">

${ hadoop:counters('secondjob')[RECORDS][REDUCE_OUT] lt 1000000 }

</case> <default to="end"/> </switch> </decision> ...</workflow-app>

<workflow-app name="[WF-DEF-NAME]" xmlns="uri:oozie:workflow:0.1"> ... <decision name="[NODE-NAME]"> <switch> <case to="[NODE_NAME]">[PREDICATE]</case> ... <case to="[NODE_NAME]">[PREDICATE]</case> <default to="[NODE_NAME]"/> </switch> </decision> ...</workflow-app>

Sintaxe Exemplo

Monday, December 10, 12

Page 85: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

AgendaBig Data e Hadoop

Definição e características

Cenários de uso e aplicações

Hadoop

Entrada de dados

Serialização

Contexto

MapReduce Patterns

Automatização

Monday, December 10, 12

Page 86: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

MapReduce PatternsRepartition Join

Após map cada registro tem como chave é o campo para join e os dados

Processo Reducer executa o join (produto cartesiano)

Suporta N número de fontes de dados (N-way join)

Reducer particiona os dados em N partições

Conjuntos grandes de dados

Também conhecido como reduce side join

Monday, December 10, 12

Page 87: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

MapReduce PatternsRepartition Join

AGENCIA_ID NOME1 Alto  da  Boa  Vista

2 Paulista

3 Moema

Tag: Clientes_Erro[Key : 1] { Value: } Record: [10,  A  ,  1]

CONTA TIPO AGENCIA_ID

10 A 1

20 A 2

30 B 2 Tag: Agencias[Key : 2] { Value: } Record: [2,  Paulista]

Tag: Clientes_Erro Tag: Agencias[Key : 1] { Value: } Record: [10,  A  ,  1] Recod: [Alto  da  BoaVista,  1]

Reduce

Map

[Key : 1] [ [10, A , Alto da Boa Vista] ]

[Key : 2] [ [20, A , Paulista], [30, B , Paulista] ]

Tag: Clientes_Erro Tag: Clientes_Erro Tag: Agencias[Key : 2] { Value: } Record: [20,  A  ,  2] Record: [30,  B  ,  2] Recod: [Paulista,  2]

AGENCIAS

CLIENTES_ERRO

Sort & Mergeentre Map e Reduce

Monday, December 10, 12

Page 88: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

MapReduce PatternsReplicated Join

Conjunto replicado para todos os nós que fazem o Map

Hadoop Distributed Cache copia os dados nos nós

Hashtable onde a chave é o parâmetro do Join

Map lê o(s) arquivo(s) maior(es)

Não é necessário fazer sort do arquivo maior e trafega-lo na rede (maior performance)

Um conjunto de dados pode ficar em memória (peq)

Também conhecido como map side join

Monday, December 10, 12

Page 89: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

JOB 2 JOB 3

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

MapReduce PatternsSemi Join

Log de erro no acesso e tabela de clientes

Reduzir o Job Reduce, tempo de processamento e rede

Dois grandes conjuntos de dados que não podem ficar em memória

JOB 1

Reduce

Logsdo site

Mapeiaclientes

Gera conjunto de clientes

Lista de IDs de clientesno log

Distributed CacheMap

Map

Clientes

Clientes que estão no log

Mapeia clientes do log Replicated Join

IDs de clientesno log

Distributed Cache

Logs do site

Resultado

Clientesque estão

no log

Remover clientes que não estão no log na tabela cliente e fazer o Join

Join de clientes com logReplicated Join

Map

Monday, December 10, 12

Page 90: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

HadoopArquitetura integrada

BIG DATA

NoSQLHadoop

NoSQLNão

Hadoop

BancoMPP e RDBMS

BI e Ferramentas

de visualizaçãoAplicações

Monday, December 10, 12

Page 91: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

HadoopArquitetura integrada

BIG DATA

NoSQLHadoop

NoSQLNão

Hadoop

BancoMPP e RDBMS

BI e Ferramentas

de visualizaçãoAplicações

Dados estruturadose não estruturados

1

Monday, December 10, 12

Page 92: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

HadoopArquitetura integrada

BIG DATA

NoSQLHadoop

NoSQLNão

Hadoop

BancoMPP e RDBMS

BI e Ferramentas

de visualizaçãoAplicações

Dados estruturadose não estruturados

1

2

Monday, December 10, 12

Page 93: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

HadoopArquitetura integrada

BIG DATA

NoSQLHadoop

NoSQLNão

Hadoop

BancoMPP e RDBMS

BI e Ferramentas

de visualizaçãoAplicações

Dados estruturadose não estruturados

1

2 3

Monday, December 10, 12

Page 94: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

HadoopArquitetura integrada

BIG DATA

NoSQLHadoop

NoSQLNão

Hadoop

BancoMPP e RDBMS

BI e Ferramentas

de visualizaçãoAplicações

Dados estruturadose não estruturados

1

2 34

Monday, December 10, 12

Page 95: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

HadoopArquitetura integrada

BIG DATA

NoSQLHadoop

NoSQLNão

Hadoop

BancoMPP e RDBMS

BI e Ferramentas

de visualizaçãoAplicações

Dados estruturadose não estruturados

1

2 34

5

Monday, December 10, 12

Page 96: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

HadoopArquitetura integrada

BIG DATA

NoSQLHadoop

NoSQLNão

Hadoop

BancoMPP e RDBMS

BI e Ferramentas

de visualizaçãoAplicações

Dados estruturadose não estruturados

1

2 34

5

Monday, December 10, 12

Page 97: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

Monday, December 10, 12

Page 98: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

OBRIGADO !!!!!

Monday, December 10, 12

Page 99: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

OBRIGADO !!!!!

 [email protected]

@fabiovelloso

Monday, December 10, 12

Page 100: Big Data e Hadoop - fabiovelloso.com.brfabiovelloso.com.br/palestras/BIGDATA_HADOOP_2012_JAVAOneB…7/24/12 JavaOne’’La)n’America 4"6$de$dezembro$de$2012 Agenda Big Data e Hadoop

7/24/12 JavaOne    La)n  America4-­‐6  de  dezembro  de  2012

OBRIGADO !!!!!

 [email protected]

@fabiovelloso

facebook.com/soujava

@soujava

soujava.org.br

Monday, December 10, 12