primeira aplicacao big data

Post on 25-Jul-2015

288 Views

Category:

Software

3 Downloads

Preview:

Click to see full reader

TRANSCRIPT

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 durabilidadeAmazon S3

Processamento real-time

Alta desempenho, elástico

Fácil de usar

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

Kinesis

Banco de dados NoSQL

Fácil escalabilidade

Administração zero

Latência de único dígitoAmazon

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

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

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

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✔

✔ ✔ ✔

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

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

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

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✔

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

top related