primeira aplicacao big data

42
SÃO PAULO

Upload: amazon-web-services-latin-america

Post on 25-Jul-2015

288 views

Category:

Software


3 download

TRANSCRIPT

Page 1: Primeira aplicacao big data

SÃO PAULO

Page 2: Primeira aplicacao big data

Sua Primeira Aplicação de

Big Data na AWS

Regis Gimenis

AWS

Robson Rodrigues

Hotel Urbano

Page 3: Primeira aplicacao big data

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

Page 4: Primeira aplicacao big data

Amazon

S3

Amazon

Kinesis

Amazon

DynamoDB

Amazon

Redshift

Amazon

Elastic

MapReduce

Serviços de Big Data na AWS

Page 5: Primeira aplicacao big data

Armazenamento de objetos

Qualquer tipo de arquivo

Escalabilidade

99.999999999% de durabilidadeAmazon S3

Page 6: Primeira aplicacao big data

Processamento real-time

Alta desempenho, elástico

Fácil de usar

Integração com EMR, S3, Redshift, DynamoDBAmazon

Kinesis

Page 7: Primeira aplicacao big data

Banco de dados NoSQL

Fácil escalabilidade

Administração zero

Latência de único dígitoAmazon

DynamoDB

Page 8: Primeira aplicacao big data

Data Warehouse relacional

MPP – processamento paralelo massivo

Escalabilidade em PB

Completamente gerenciado

Custo de $1.000 / TB / ano

Amazon

Redshift

Page 9: Primeira aplicacao big data

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

Page 10: Primeira aplicacao big data

Amazon

KinesisLo

gs d

os S

erv

ido

res

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

ConnectorSQL Query

Kinesis Log4j

Appender

Page 11: Primeira aplicacao big data

Exemplo do arquivo de log

Page 12: Primeira aplicacao big data

Criação de stream no Amazon Kinesis

aws kinesis create-stream \

--stream-name AccessLogStream \

--shard-count 2

Page 13: Primeira aplicacao big data

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

Page 14: Primeira aplicacao big data

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:

Page 15: Primeira aplicacao big data

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

Page 16: Primeira aplicacao big data

Criar de bucket no Amazon S3

aws s3 mb s3://BUCKET-NAME

Page 17: Primeira aplicacao big data

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

Page 18: Primeira aplicacao big data

Amazon

KinesisLo

gs d

os S

erv

ido

res

Amazon

EMR

Amazon S3

Amazon

Redshift

Visualização

e Análise

Caso de Uso – Análise de log de acesso

Kinesis Log4j

Appender✔

✔ ✔ ✔

Page 19: Primeira aplicacao big data

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)

Page 20: Primeira aplicacao big data

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;

Page 21: Primeira aplicacao big data

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");

Page 22: Primeira aplicacao big data

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”;

Page 23: Primeira aplicacao big data

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';

Page 24: Primeira aplicacao big data

Configurar Hive para particionar arquivos

hive>

hive>

Page 25: Primeira aplicacao big data

Configurar Hive para compactar arquivos

hive>

hive>

hive>

hive>

Page 26: Primeira aplicacao big data

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;

Page 27: Primeira aplicacao big data

Amazon

KinesisLo

gs d

os S

erv

ido

res

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✔ ✔

Page 28: Primeira aplicacao big data

Listar os arquivos no Amazon S3

aws s3 ls s3://BUCKET-NAME/emroutput/

Page 29: Primeira aplicacao big data

Conectar ao Amazon Redshift

Page 30: Primeira aplicacao big data

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);

Page 31: Primeira aplicacao big data

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;

Page 32: Primeira aplicacao big data

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 '\"-\"';

Page 33: Primeira aplicacao big data

Visualizar os dados do Amazon Redshift

Page 34: Primeira aplicacao big data

Amazon

KinesisLo

gs d

os S

erv

ido

res

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✔

Page 35: Primeira aplicacao big data

Hotel Urbano

Page 36: Primeira aplicacao big data

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

Page 37: Primeira aplicacao big data

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

Page 38: Primeira aplicacao big data

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

Page 39: Primeira aplicacao big data

Arquitetura inicial

Page 40: Primeira aplicacao big data

Desafios da primeira arquitetura

• Manutenção do cluster

• Suporte a usuários

• Instabilidade de alguns serviços

• Custo

Page 41: Primeira aplicacao big data

Arquitetura atual

Page 42: Primeira aplicacao big data

SÃO PAULO