SlideShare uma empresa Scribd logo
1 de 42
Baixar para ler offline
SÃO PAULO
Sua Primeira Aplicação de
Big Data na AWS
Regis Gimenis
AWS
Robson Rodrigues
Hotel Urbano
Big Data
Tecnologias e técnicas para trabalhar
produtivamente com dados em qualquer escala
Geração
de Dados
Captura
&
Armazenamento
Computação
&
Análise
Visualização
Amazon
S3
Amazon
Kinesis
Amazon
DynamoDB
Amazon
Redshift
Amazon
Elastic
MapReduce
Serviços de Big Data na AWS
Armazenamento de objetos
Qualquer tipo de arquivo
Escalabilidade
99.999999999% de durabilidade
Amazon S3
Processamento real-time
Alta desempenho, elástico
Fácil de usar
Integração com EMR, S3, Redshift, DynamoDB
Amazon
Kinesis
Banco de dados NoSQL
Fácil escalabilidade
Administração zero
Latência de único dígito
Amazon
DynamoDB
Data Warehouse relacional
MPP – processamento paralelo massivo
Escalabilidade em PB
Completamente gerenciado
Custo de $1.000 / TB / ano
Amazon
Redshift
Hadoop como serviço
Hive, Pig, Impala, HBase
Fácil de usar, gerenciado
Uso de On-demand e Spot
Integração com S3, DynamoDB e Kinesis
Amazon
Elastic
MapReduce
Amazon
Kinesis
LogsdosServidores
Amazon
EMR
Amazon S3
Amazon
Redshift
Visualização
e Análise
Caso de Uso – Análise de log de acesso
Log4J
Map Reduce
Parallel
Copy
EMR-Kinesis
Connector
SQL Query
Kinesis Log4j
Appender
Exemplo do arquivo de log
Criação de stream no Amazon Kinesis
aws kinesis create-stream 
--stream-name AccessLogStream 
--shard-count 2
Configurar o Amazon Kinesis Log4J Appender
Baixar o Amazon Kinesis Log4j Appender:
http://emr-kinesis.s3.amazonaws.com/publisher/
Configurar arquivo awscredentials.properties:
accessKey=IAM-ACCESS-KEY
secretKey=IAM-SECRET-KEY
Capturar logs em um stream no Amazon Kinesis
Baixar o arquivo de exemplo de log Apache:
http://elasticmapreduce.s3.amazonaws.com/samples/
Executar o Amazon Kinesis Log4J Appender:
Criação de cluster no Amazon EMR
aws emr create-cluster 
--name ”CLUSTER-NAME" 
--instance-type m3.xlarge 
--instance-count 3 
--region=AWS-REGION
--ami-version 3.7.0 
--ec2-attributes KeyName=KEY-NAME
--no-auto-terminate 
--applications Name=Hive
Criar de bucket no Amazon S3
aws s3 mb s3://BUCKET-NAME
Criar de cluster no Amazon Redshift
aws redshift create-cluster 
--cluster-identifier CLUSTER-NAME
--db-name DB-NAME
--node-type dw2.large 
--cluster-type single-node 
--master-username MASTER-USER 
--master-user-password PASSWORD
--publicly-accessible 
--port PORT-NUMBER
Amazon
Kinesis
LogsdosServidores
Amazon
EMR
Amazon S3
Amazon
Redshift
Visualização
e Análise
Caso de Uso – Análise de log de acesso
Kinesis Log4j
Appender✔
✔ ✔ ✔
✔
Amazon EMR’s Hive
• Software para rodar consultas SQL-like (HiveQL) no Hadoop
• Schema on read: mapeia tabela para dados de entrada
• Acessa dados no Amazon S3, DynamoDB e Kinesis
• Consultar formatos complexos usando SerDe
• Transformar dados com User Defined Functions (UDF)
Configurar Hive para acessar Amazon Kinesis
> hive
hive> SET kinesis.accessKey=IAM-ACCESS-KEY;
hive> SET kinesis.secretKey=IAM-SECRET-KEY;
hive> SET kinesis.nodata.timeout=1;
hive> SET kinesis.endpoint.region=REGION;
hive> SET kinesis.retry.interval=1000;
hive> SET kinesis.retry.maxattempts=3;
Criar tabela Hive usando Amazon Kinesis
hive> CREATE TABLE apachelog_from_kinesis(
host STRING, identity STRING, user STRING,
request_time STRING, request STRING, status STRING,
size STRING, referrer STRING, agent STRING
)
ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe'
WITH SERDEPROPERTIES (
"input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-|[[^]]*]) ([^
"]*|"[^"]*") (-|[0-9]*) (-|[0-9]*)(?: ([^ "]*|"[^"]*") ([^
"]*|"[^"]*"))?"
)
STORED BY 'com.amazon.emr.kinesis.hive.KinesisStorageHandler'
TBLPROPERTIES("kinesis.stream.name"="AccessLogStream");
Testar Amazon EMR lendo do Amazon Kinesis
-- return the first row in the stream
hive> SELECT * FROM apachelog_from_kinesis LIMIT 1;
-- return count all items in the Stream
hive> SELECT COUNT(1) FROM apachelog_from_kinesis;
-- return count of all rows with given host
hive> SELECT COUNT(1) FROM apachelog_from_kinesis
WHERE host="66.249.67.3”;
Criar uma tabela externa no Amazon S3
hive> CREATE EXTERNAL TABLE apachelog_to_s3 (
request_time STRING, host STRING,
request STRING, status INT,
referrer STRING, agent STRING
)
PARTITIONED BY (hour STRING)
ROW FORMAT DELIMITED FIELDS TERMINATED BY 't'
STORED AS TEXTFILE
LOCATION 's3://BUCKET-NAME/emroutput';
Configurar Hive para particionar arquivos
hive>
hive>
Configurar Hive para compactar arquivos
hive>
hive>
hive>
hive>
Rodar consulta Hive e gravar no Amazon S3
hive> INSERT OVERWRITE TABLE apachelog_to_s3 PARTITION (hour)
SELECT
from_unixtime(unix_timestamp(request_time,
'[dd/MMM/yyyy:HH:mm:ss Z]')),
host,
request,
status,
referrer,
agent,
hour(from_unixtime(unix_timestamp(request_time,
'[dd/MMM/yyyy:HH:mm:ss Z]'))) as hour
FROM apachelog_from_kinesis;
Amazon
Kinesis
LogsdosServidores
Amazon
EMR
Amazon S3
Amazon
Redshift
Visualização
e Análise
Caso de Uso – Análise de log de acesso
✔ ✔ ✔
✔
Kinesis Log4j
Appender✔
Map Reduce
EMR-Kinesis
Connector✔ ✔
Listar os arquivos no Amazon S3
aws s3 ls s3://BUCKET-NAME/emroutput/
Conectar ao Amazon Redshift
Criar tabela no Amazon Redshift
CREATE TABLE apachelog (
request_time timestamp,
host varchar(50),
request varchar(1024),
status int,
referrer varchar(1024),
agent varchar(1024)
)
DISTKEY(host)
SORTKEY(request_time);
Carregar dados no Amazon Redshift
COPY apachelog
FROM 's3://BUCKET-NAME/emroutput'
CREDENTIALS
'aws_access_key_id=IAM-ACCESS_KEY;
aws_secret_access_key=IAM-SECRET-KEY'
DELIMITER 't' IGNOREHEADER 0
MAXERROR 0
GZIP;
Consultar dados no Amazon Redshift
-- mostrar requests de um determinado endereço IP
SELECT host, request FROM apachelog
WHERE host = '66.249.67.3';
-- contar todos requests de um determinado dia
SELECT COUNT(1) FROM apachelog
WHERE request_time LIKE '2009-07-21%';
-- mostrar requests encaminhados de outros sites
SELECT * FROM apachelog
WHERE referrer NOT LIKE '"-"';
Visualizar os dados do Amazon Redshift
Amazon
Kinesis
LogsdosServidores
Amazon
EMR
Amazon S3
Amazon
Redshift
Visualização
e Análise
Caso de Uso – Análise de log de acesso
✔ ✔ ✔
✔
Kinesis Log4j
Appender✔
Map Reduce
EMR-Kinesis
Connector✔ ✔
SQL Query✔
✔
Hotel Urbano
Sobre o Hotel Urbano
• A maior agência de viagens
online do Brasil
• 1 diária a cada 8 segundos
• 180 mil hotéis, 35 mil destinos
em 183 países
• 18 milhões de clientes
“Poder e
Confiabilidade
Com a AWS podemos
focar no nosso negócio e
Confiar”
- Bruno Pereira ex-CTO
do Hotel Urbano
Oportunidades em Big Data
• Entender os nossos viajantes
• Ajudar os nossos parceiros (Hotéis /
Pousadas/ Resorts)
• Recomendar a viagem certa para o
Viajante certo
• Predizer demandas
• Analisar dados brutos: Insights
Conversão
Desafios
• Processar logs de acesso e iterações com
email
• Gerar recomendações para milhões de
clientes
• Cruzar dados de diversas fontes
• Disponibilizar dados
Arquitetura inicial
Desafios da primeira arquitetura
• Manutenção do cluster
• Suporte a usuários
• Instabilidade de alguns serviços
• Custo
Arquitetura atual
SÃO PAULO

Mais conteúdo relacionado

Mais procurados

Mais procurados (20)

Infraestrutura como código
Infraestrutura como códigoInfraestrutura como código
Infraestrutura como código
 
Deep dive com Amazon Aurora
Deep dive com Amazon AuroraDeep dive com Amazon Aurora
Deep dive com Amazon Aurora
 
Raising the bar #2 - Explorando o poder do banco de dados com Amazon Aurora
Raising the bar #2 - Explorando o poder do banco de dados com Amazon AuroraRaising the bar #2 - Explorando o poder do banco de dados com Amazon Aurora
Raising the bar #2 - Explorando o poder do banco de dados com Amazon Aurora
 
Deep dive de Amazon Redshift
Deep dive de Amazon RedshiftDeep dive de Amazon Redshift
Deep dive de Amazon Redshift
 
Começando com Amazon Redshift
Começando com Amazon RedshiftComeçando com Amazon Redshift
Começando com Amazon Redshift
 
Construindo um Data Lake na AWS
Construindo um Data Lake na AWSConstruindo um Data Lake na AWS
Construindo um Data Lake na AWS
 
Raising the bar #5 - Melhores práticas de workloads Microsoft
Raising the bar #5 - Melhores práticas de workloads MicrosoftRaising the bar #5 - Melhores práticas de workloads Microsoft
Raising the bar #5 - Melhores práticas de workloads Microsoft
 
Bancos de Dados gerenciados na nuvem AWS
Bancos de Dados gerenciados na nuvem AWSBancos de Dados gerenciados na nuvem AWS
Bancos de Dados gerenciados na nuvem AWS
 
AWS Meetup Rio - Qual banco usar e quando?
AWS Meetup Rio - Qual banco usar e quando?AWS Meetup Rio - Qual banco usar e quando?
AWS Meetup Rio - Qual banco usar e quando?
 
DynamoDB - Uma Introdução
DynamoDB - Uma IntroduçãoDynamoDB - Uma Introdução
DynamoDB - Uma Introdução
 
Path to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
Path to the future #5 - Melhores práticas de data warehouse no Amazon RedshiftPath to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
Path to the future #5 - Melhores práticas de data warehouse no Amazon Redshift
 
Raising the bar #4 - Economize utilizando instâncias Spot no Amazon EC2
Raising the bar #4 - Economize utilizando instâncias Spot no Amazon EC2Raising the bar #4 - Economize utilizando instâncias Spot no Amazon EC2
Raising the bar #4 - Economize utilizando instâncias Spot no Amazon EC2
 
Bancos de Dados Relacionais e NoSQL na Nuvem da AWS
Bancos de Dados Relacionais e NoSQL na Nuvem da AWSBancos de Dados Relacionais e NoSQL na Nuvem da AWS
Bancos de Dados Relacionais e NoSQL na Nuvem da AWS
 
Melhores práticas de workloads Microsoft na AWS
Melhores práticas de workloads Microsoft na AWSMelhores práticas de workloads Microsoft na AWS
Melhores práticas de workloads Microsoft na AWS
 
Começando com aplicações serverless na AWS
 Começando com aplicações serverless na AWS Começando com aplicações serverless na AWS
Começando com aplicações serverless na AWS
 
Arquitetura Serverless e AWS Lambda - Demo Session
Arquitetura Serverless e AWS Lambda - Demo SessionArquitetura Serverless e AWS Lambda - Demo Session
Arquitetura Serverless e AWS Lambda - Demo Session
 
Fazendo seu DR na AWS de maneira prática
Fazendo seu DR na AWS de maneira práticaFazendo seu DR na AWS de maneira prática
Fazendo seu DR na AWS de maneira prática
 
Explorando o poder do banco de dados com Amazon Aurora
Explorando o poder do banco de dados com Amazon AuroraExplorando o poder do banco de dados com Amazon Aurora
Explorando o poder do banco de dados com Amazon Aurora
 
Amazon emr cluster hadoop pronto para usar na nuvem aws
Amazon emr   cluster hadoop pronto para usar na nuvem awsAmazon emr   cluster hadoop pronto para usar na nuvem aws
Amazon emr cluster hadoop pronto para usar na nuvem aws
 
Webinar: Primeiros Passos na Amazon Web Services
Webinar: Primeiros Passos na Amazon Web ServicesWebinar: Primeiros Passos na Amazon Web Services
Webinar: Primeiros Passos na Amazon Web Services
 

Semelhante a Primeira aplicacao big data

Construindo seu Data Lake na AWS
Construindo seu Data Lake na AWSConstruindo seu Data Lake na AWS
Construindo seu Data Lake na AWS
Amazon Web Services LATAM
 

Semelhante a Primeira aplicacao big data (20)

Migrando seu banco de dados para a AWS - Deep Dive em Amazon RDS e AWS Databa...
Migrando seu banco de dados para a AWS - Deep Dive em Amazon RDS e AWS Databa...Migrando seu banco de dados para a AWS - Deep Dive em Amazon RDS e AWS Databa...
Migrando seu banco de dados para a AWS - Deep Dive em Amazon RDS e AWS Databa...
 
Introduçãoo aws, escalando uma aplicação Web
Introduçãoo aws, escalando uma aplicação WebIntroduçãoo aws, escalando uma aplicação Web
Introduçãoo aws, escalando uma aplicação Web
 
Migrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMRMigrando seu workload de Big Data para o Amazon EMR
Migrando seu workload de Big Data para o Amazon EMR
 
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
Seu banco de dados na nuvem: Opções de bancos de dados na AWS e padrões de...
 
Desenvolvendo aplicações móveis na Nuvem
Desenvolvendo aplicações móveis na NuvemDesenvolvendo aplicações móveis na Nuvem
Desenvolvendo aplicações móveis na Nuvem
 
Escalando para os primeiros 10 milhões de usuários
Escalando para os primeiros 10 milhões de usuáriosEscalando para os primeiros 10 milhões de usuários
Escalando para os primeiros 10 milhões de usuários
 
Aws summit arquitetura big data-v1.2
Aws summit arquitetura big data-v1.2Aws summit arquitetura big data-v1.2
Aws summit arquitetura big data-v1.2
 
Construindo Data Lakes e Analytics na AWS
Construindo Data Lakes e Analytics na AWSConstruindo Data Lakes e Analytics na AWS
Construindo Data Lakes e Analytics na AWS
 
Arquiteturas de Software para o Século XXI
Arquiteturas de Software para o Século XXIArquiteturas de Software para o Século XXI
Arquiteturas de Software para o Século XXI
 
Copa do mundo no brasil interagindo com os torcedores em tempo real
Copa do mundo no brasil   interagindo com os torcedores em tempo realCopa do mundo no brasil   interagindo com os torcedores em tempo real
Copa do mundo no brasil interagindo com os torcedores em tempo real
 
Os benefícios de migrar seus workloads de Big Data para a AWS
Os benefícios de migrar seus workloads de Big Data para a AWSOs benefícios de migrar seus workloads de Big Data para a AWS
Os benefícios de migrar seus workloads de Big Data para a AWS
 
Mobile Back end as a Service na AWS
Mobile Back end as a Service na AWSMobile Back end as a Service na AWS
Mobile Back end as a Service na AWS
 
Construindo seu Data Lake na AWS
Construindo seu Data Lake na AWSConstruindo seu Data Lake na AWS
Construindo seu Data Lake na AWS
 
Visualizando dados de Big Data com Amazon QuickSight
Visualizando dados de Big Data com Amazon QuickSightVisualizando dados de Big Data com Amazon QuickSight
Visualizando dados de Big Data com Amazon QuickSight
 
Construindo um data lake na nuvem aws
Construindo um data lake na nuvem awsConstruindo um data lake na nuvem aws
Construindo um data lake na nuvem aws
 
Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final
Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +finalEscalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final
Escalando+na+aws+para+os+primeiros+10+milhões+de+usuários+ +final
 
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
Rio Cloud Computing Meetup 25/01/2017 - Lançamentos do AWS re:Invent 2016
 
Amazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e BeneficiosAmazon Aws - Tecnologias e Beneficios
Amazon Aws - Tecnologias e Beneficios
 
Otimizacao de custo summit 2015
Otimizacao de custo summit 2015Otimizacao de custo summit 2015
Otimizacao de custo summit 2015
 
Construindo Data Lakes e Analytics na AWS - BDA301 - Sao Paulo Summit
Construindo Data Lakes e Analytics na AWS -  BDA301 - Sao Paulo SummitConstruindo Data Lakes e Analytics na AWS -  BDA301 - Sao Paulo Summit
Construindo Data Lakes e Analytics na AWS - BDA301 - Sao Paulo Summit
 

Mais de Amazon Web Services LATAM

Mais de Amazon Web Services LATAM (20)

AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
 
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvemAWS para terceiro setor - Sessão 1 - Introdução à nuvem
AWS para terceiro setor - Sessão 1 - Introdução à nuvem
 
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e BackupAWS para terceiro setor - Sessão 2 - Armazenamento e Backup
AWS para terceiro setor - Sessão 2 - Armazenamento e Backup
 
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
AWS para terceiro setor - Sessão 3 - Protegendo seus dados.
 
Automatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWSAutomatice el proceso de entrega con CI/CD en AWS
Automatice el proceso de entrega con CI/CD en AWS
 
Automatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWSAutomatize seu processo de entrega de software com CI/CD na AWS
Automatize seu processo de entrega de software com CI/CD na AWS
 
Cómo empezar con Amazon EKS
Cómo empezar con Amazon EKSCómo empezar con Amazon EKS
Cómo empezar con Amazon EKS
 
Como começar com Amazon EKS
Como começar com Amazon EKSComo começar com Amazon EKS
Como começar com Amazon EKS
 
Ransomware: como recuperar os seus dados na nuvem AWS
Ransomware: como recuperar os seus dados na nuvem AWSRansomware: como recuperar os seus dados na nuvem AWS
Ransomware: como recuperar os seus dados na nuvem AWS
 
Ransomware: cómo recuperar sus datos en la nube de AWS
Ransomware: cómo recuperar sus datos en la nube de AWSRansomware: cómo recuperar sus datos en la nube de AWS
Ransomware: cómo recuperar sus datos en la nube de AWS
 
Ransomware: Estratégias de Mitigação
Ransomware: Estratégias de MitigaçãoRansomware: Estratégias de Mitigação
Ransomware: Estratégias de Mitigação
 
Ransomware: Estratégias de Mitigación
Ransomware: Estratégias de MitigaciónRansomware: Estratégias de Mitigación
Ransomware: Estratégias de Mitigación
 
Aprenda a migrar y transferir datos al usar la nube de AWS
Aprenda a migrar y transferir datos al usar la nube de AWSAprenda a migrar y transferir datos al usar la nube de AWS
Aprenda a migrar y transferir datos al usar la nube de AWS
 
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWS
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWSAprenda como migrar e transferir dados ao utilizar a nuvem da AWS
Aprenda como migrar e transferir dados ao utilizar a nuvem da AWS
 
Cómo mover a un almacenamiento de archivos administrados
Cómo mover a un almacenamiento de archivos administradosCómo mover a un almacenamiento de archivos administrados
Cómo mover a un almacenamiento de archivos administrados
 
Simplifique su BI con AWS
Simplifique su BI con AWSSimplifique su BI con AWS
Simplifique su BI con AWS
 
Simplifique o seu BI com a AWS
Simplifique o seu BI com a AWSSimplifique o seu BI com a AWS
Simplifique o seu BI com a AWS
 
Los beneficios de migrar sus cargas de trabajo de big data a AWS
Los beneficios de migrar sus cargas de trabajo de big data a AWSLos beneficios de migrar sus cargas de trabajo de big data a AWS
Los beneficios de migrar sus cargas de trabajo de big data a AWS
 

Primeira aplicacao big data

  • 2. Sua Primeira Aplicação de Big Data na AWS Regis Gimenis AWS Robson Rodrigues Hotel Urbano
  • 3. Big Data Tecnologias e técnicas para trabalhar produtivamente com dados em qualquer escala Geração de Dados Captura & Armazenamento Computação & Análise Visualização
  • 5. Armazenamento de objetos Qualquer tipo de arquivo Escalabilidade 99.999999999% de durabilidade Amazon S3
  • 6. Processamento real-time Alta desempenho, elástico Fácil de usar Integração com EMR, S3, Redshift, DynamoDB Amazon Kinesis
  • 7. Banco de dados NoSQL Fácil escalabilidade Administração zero Latência de único dígito Amazon DynamoDB
  • 8. Data Warehouse relacional MPP – processamento paralelo massivo Escalabilidade em PB Completamente gerenciado Custo de $1.000 / TB / ano Amazon Redshift
  • 9. Hadoop como serviço Hive, Pig, Impala, HBase Fácil de usar, gerenciado Uso de On-demand e Spot Integração com S3, DynamoDB e Kinesis Amazon Elastic MapReduce
  • 10. Amazon Kinesis LogsdosServidores Amazon EMR Amazon S3 Amazon Redshift Visualização e Análise Caso de Uso – Análise de log de acesso Log4J Map Reduce Parallel Copy EMR-Kinesis Connector SQL Query Kinesis Log4j Appender
  • 12. Criação de stream no Amazon Kinesis aws kinesis create-stream --stream-name AccessLogStream --shard-count 2
  • 13. Configurar o Amazon Kinesis Log4J Appender Baixar o Amazon Kinesis Log4j Appender: http://emr-kinesis.s3.amazonaws.com/publisher/ Configurar arquivo awscredentials.properties: accessKey=IAM-ACCESS-KEY secretKey=IAM-SECRET-KEY
  • 14. Capturar logs em um stream no Amazon Kinesis Baixar o arquivo de exemplo de log Apache: http://elasticmapreduce.s3.amazonaws.com/samples/ Executar o Amazon Kinesis Log4J Appender:
  • 15. Criação de cluster no Amazon EMR aws emr create-cluster --name ”CLUSTER-NAME" --instance-type m3.xlarge --instance-count 3 --region=AWS-REGION --ami-version 3.7.0 --ec2-attributes KeyName=KEY-NAME --no-auto-terminate --applications Name=Hive
  • 16. Criar de bucket no Amazon S3 aws s3 mb s3://BUCKET-NAME
  • 17. Criar de cluster no Amazon Redshift aws redshift create-cluster --cluster-identifier CLUSTER-NAME --db-name DB-NAME --node-type dw2.large --cluster-type single-node --master-username MASTER-USER --master-user-password PASSWORD --publicly-accessible --port PORT-NUMBER
  • 18. Amazon Kinesis LogsdosServidores Amazon EMR Amazon S3 Amazon Redshift Visualização e Análise Caso de Uso – Análise de log de acesso Kinesis Log4j Appender✔ ✔ ✔ ✔ ✔
  • 19. Amazon EMR’s Hive • Software para rodar consultas SQL-like (HiveQL) no Hadoop • Schema on read: mapeia tabela para dados de entrada • Acessa dados no Amazon S3, DynamoDB e Kinesis • Consultar formatos complexos usando SerDe • Transformar dados com User Defined Functions (UDF)
  • 20. Configurar Hive para acessar Amazon Kinesis > hive hive> SET kinesis.accessKey=IAM-ACCESS-KEY; hive> SET kinesis.secretKey=IAM-SECRET-KEY; hive> SET kinesis.nodata.timeout=1; hive> SET kinesis.endpoint.region=REGION; hive> SET kinesis.retry.interval=1000; hive> SET kinesis.retry.maxattempts=3;
  • 21. Criar tabela Hive usando Amazon Kinesis hive> CREATE TABLE apachelog_from_kinesis( host STRING, identity STRING, user STRING, request_time STRING, request STRING, status STRING, size STRING, referrer STRING, agent STRING ) ROW FORMAT SERDE 'org.apache.hadoop.hive.serde2.RegexSerDe' WITH SERDEPROPERTIES ( "input.regex" = "([^ ]*) ([^ ]*) ([^ ]*) (-|[[^]]*]) ([^ "]*|"[^"]*") (-|[0-9]*) (-|[0-9]*)(?: ([^ "]*|"[^"]*") ([^ "]*|"[^"]*"))?" ) STORED BY 'com.amazon.emr.kinesis.hive.KinesisStorageHandler' TBLPROPERTIES("kinesis.stream.name"="AccessLogStream");
  • 22. Testar Amazon EMR lendo do Amazon Kinesis -- return the first row in the stream hive> SELECT * FROM apachelog_from_kinesis LIMIT 1; -- return count all items in the Stream hive> SELECT COUNT(1) FROM apachelog_from_kinesis; -- return count of all rows with given host hive> SELECT COUNT(1) FROM apachelog_from_kinesis WHERE host="66.249.67.3”;
  • 23. Criar uma tabela externa no Amazon S3 hive> CREATE EXTERNAL TABLE apachelog_to_s3 ( request_time STRING, host STRING, request STRING, status INT, referrer STRING, agent STRING ) PARTITIONED BY (hour STRING) ROW FORMAT DELIMITED FIELDS TERMINATED BY 't' STORED AS TEXTFILE LOCATION 's3://BUCKET-NAME/emroutput';
  • 24. Configurar Hive para particionar arquivos hive> hive>
  • 25. Configurar Hive para compactar arquivos hive> hive> hive> hive>
  • 26. Rodar consulta Hive e gravar no Amazon S3 hive> INSERT OVERWRITE TABLE apachelog_to_s3 PARTITION (hour) SELECT from_unixtime(unix_timestamp(request_time, '[dd/MMM/yyyy:HH:mm:ss Z]')), host, request, status, referrer, agent, hour(from_unixtime(unix_timestamp(request_time, '[dd/MMM/yyyy:HH:mm:ss Z]'))) as hour FROM apachelog_from_kinesis;
  • 27. Amazon Kinesis LogsdosServidores Amazon EMR Amazon S3 Amazon Redshift Visualização e Análise Caso de Uso – Análise de log de acesso ✔ ✔ ✔ ✔ Kinesis Log4j Appender✔ Map Reduce EMR-Kinesis Connector✔ ✔
  • 28. Listar os arquivos no Amazon S3 aws s3 ls s3://BUCKET-NAME/emroutput/
  • 29. Conectar ao Amazon Redshift
  • 30. Criar tabela no Amazon Redshift CREATE TABLE apachelog ( request_time timestamp, host varchar(50), request varchar(1024), status int, referrer varchar(1024), agent varchar(1024) ) DISTKEY(host) SORTKEY(request_time);
  • 31. Carregar dados no Amazon Redshift COPY apachelog FROM 's3://BUCKET-NAME/emroutput' CREDENTIALS 'aws_access_key_id=IAM-ACCESS_KEY; aws_secret_access_key=IAM-SECRET-KEY' DELIMITER 't' IGNOREHEADER 0 MAXERROR 0 GZIP;
  • 32. Consultar dados no Amazon Redshift -- mostrar requests de um determinado endereço IP SELECT host, request FROM apachelog WHERE host = '66.249.67.3'; -- contar todos requests de um determinado dia SELECT COUNT(1) FROM apachelog WHERE request_time LIKE '2009-07-21%'; -- mostrar requests encaminhados de outros sites SELECT * FROM apachelog WHERE referrer NOT LIKE '"-"';
  • 33. Visualizar os dados do Amazon Redshift
  • 34. Amazon Kinesis LogsdosServidores Amazon EMR Amazon S3 Amazon Redshift Visualização e Análise Caso de Uso – Análise de log de acesso ✔ ✔ ✔ ✔ Kinesis Log4j Appender✔ Map Reduce EMR-Kinesis Connector✔ ✔ SQL Query✔ ✔
  • 36. Sobre o Hotel Urbano • A maior agência de viagens online do Brasil • 1 diária a cada 8 segundos • 180 mil hotéis, 35 mil destinos em 183 países • 18 milhões de clientes “Poder e Confiabilidade Com a AWS podemos focar no nosso negócio e Confiar” - Bruno Pereira ex-CTO do Hotel Urbano
  • 37. Oportunidades em Big Data • Entender os nossos viajantes • Ajudar os nossos parceiros (Hotéis / Pousadas/ Resorts) • Recomendar a viagem certa para o Viajante certo • Predizer demandas • Analisar dados brutos: Insights Conversão
  • 38. Desafios • Processar logs de acesso e iterações com email • Gerar recomendações para milhões de clientes • Cruzar dados de diversas fontes • Disponibilizar dados
  • 40. Desafios da primeira arquitetura • Manutenção do cluster • Suporte a usuários • Instabilidade de alguns serviços • Custo