Nesta apresentação introdutória, mostramos passo a passo, como criar soluções de Big Data, utilizando os serviços disponíveis na nuvem AWS - EMR, Redshift, Kinesis - e exemplificamos com casos práticos.
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
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
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
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;
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';
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 '"-"';
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