海量用户数据处理及其在一淘广告和推荐中的应用

30
+ 海量用户数据处理及其在一 淘广告和推荐中的应用 2012-04-16 一淘

Upload: shaoning-pan

Post on 02-Jul-2015

3.069 views

Category:

Technology


0 download

DESCRIPTION

#LAMP人#第14期《海量数据挖掘与应用 – e淘专场》 之 《海量用户数据处理及其在一淘广告和推荐中的应用》- 夏辉(赤霞)

TRANSCRIPT

Page 1: 海量用户数据处理及其在一淘广告和推荐中的应用

+

海量用户数据处理及其在一淘广告和推荐中的应用

2012-04-16 一淘

Page 2: 海量用户数据处理及其在一淘广告和推荐中的应用

+

第14期: 《海量数据挖掘与应用 》- e淘专场 www.LAMPER.cn http://weibo.com/lampercn

Page 3: 海量用户数据处理及其在一淘广告和推荐中的应用

+ 个性化的广告

Page 4: 海量用户数据处理及其在一淘广告和推荐中的应用

+ Etao推荐

Page 5: 海量用户数据处理及其在一淘广告和推荐中的应用

+ 主要的挑战

每天新增几十亿条+的Log,几TB的数据

需要处理3个月甚至更多的数据

复杂的离线算法模型处理

准实时的轻量快速算法数据更新

高并发,高容量,快速响应的实时对外服务

Page 6: 海量用户数据处理及其在一淘广告和推荐中的应用

+ 架构

Page 7: 海量用户数据处理及其在一淘广告和推荐中的应用

+ 海量数据分析-离线处理

2000+ node hadoop集群

20000+Map ,10000+reduce计算资源

存储容量PB级别

高可用性,很好的扩展性,方便管理运维

实效性不好,每天1次或者每小时1次的离线处理

Page 8: 海量用户数据处理及其在一淘广告和推荐中的应用

+ 如何有效降低数据的延迟?

Map-Reduce

Stream Processing

Page 9: 海量用户数据处理及其在一淘广告和推荐中的应用

+ 流上的数据处理

TimeTunnel

Storm

Page 10: 海量用户数据处理及其在一淘广告和推荐中的应用

+ TimeTunnel

TT(TimeTunnel)是一个企业消息交换平台,提供可靠的、高效的、安全的消息交换服务。TT遵循AMQP(Advanced

Message Queue Protocol)协议,基于TT可以搭建消息系统、日志收集系统、实时计算框架。

特点

灵活配置的日志收集方案无需编写脚本

实时高可靠收集日志

高性能的分布式消息队列

完善的监控体系和错误自动恢复机制

Page 11: 海量用户数据处理及其在一淘广告和推荐中的应用

+ TimeTunnel

Page 12: 海量用户数据处理及其在一淘广告和推荐中的应用

+ 使用TT来做实时计算

Page 13: 海量用户数据处理及其在一淘广告和推荐中的应用

+ TT做实时计算的不足

计算能力的扩展性

不适合复杂业务逻辑

编码比较复杂

Page 14: 海量用户数据处理及其在一淘广告和推荐中的应用

+ TimeTunnel

目前TT已经开源

http://code.taobao.org/p/TimeTunnel/src/

类似的开源项目

Facebook的scribe

Cloudera的flume

Linkedin的Kafka

Page 15: 海量用户数据处理及其在一淘广告和推荐中的应用

+ Storm

流计算

分布式RPC

持续计算

Twitter https://github.com/nathanmarz/storm/

类似项目

Yahoo的s4

Facebook的puma(尚未开源)

Page 16: 海量用户数据处理及其在一淘广告和推荐中的应用

+ Storm的特点

水平扩展,并行计算,动态增删节点

可靠的消息处理

事务机制,解决重复计算问题

容错性

Page 17: 海量用户数据处理及其在一淘广告和推荐中的应用

+ Storm

Nimbus: 主控节点,用于任务

分配,集群任务监控等,与hadoop Jobtracker类似

Zookeeper:集群中协调,共有

数据的存放(如心跳信息)

Supervisor:对应一台物理机,

用于启动worker,类似hadoop的task tracker。

Worker:工作进程,负责启动

task,以及通过zeromq 进行tuple的分发,与接收。

Task:工作线程,任务的处理。

Page 18: 海量用户数据处理及其在一淘广告和推荐中的应用

+ Storm-Concept

Tuple

Stream

Spout

Bolt

Topology

Page 19: 海量用户数据处理及其在一淘广告和推荐中的应用

+ Storm-Tuple

一个tuple表示流中一个基本的处理单元,例如一条访问日志,它可以包括多个field,每个field表示一个属性

Field 1 Field 2 Field 3 Field 4

Page 20: 海量用户数据处理及其在一淘广告和推荐中的应用

+ Storm-Stream

一个没有边界的连续的tuples

他们在分布式的系统中可以被并行的处理与创建,但不保证处理顺序

Page 21: 海量用户数据处理及其在一淘广告和推荐中的应用

+ Storm-spout

类似hadoop的map。Spout是一个stream的源头。通常spout会从外部数据源读取数据并发送tuple到stream。

Kestrel queue

kafka spout

TT spout

Page 22: 海量用户数据处理及其在一淘广告和推荐中的应用

+ Storm-Bolt

处理输入的流并产生新的输出流.

Bolt可以用来做简单的stream转换,复杂的流处理/转换一般会分解为多步完成,所以会使用多个bolt级联起来,每个bolt完成一些较简单的功能

一个bolt可以产生多个输出流。

类似hadoop reduce,而且可以bolt后可以继续有其他的bolt

Page 23: 海量用户数据处理及其在一淘广告和推荐中的应用

+ Storm- Topology

由spout和bolt构成的网状图

实时处理程序在逻辑上构成一个storm的拓扑

Storm 拓扑与传统任务的区别:

storm拓扑不终止的,除非被杀死,它一直运行

Page 24: 海量用户数据处理及其在一淘广告和推荐中的应用

+ Storm-Task

每个Spout和bolt都作为很多task在集群中运行

每个task对应OS中的一个线程

Stream groupings定义如何把tuple从一个task发向另一个task

Page 25: 海量用户数据处理及其在一淘广告和推荐中的应用

+ Storm

Page 26: 海量用户数据处理及其在一淘广告和推荐中的应用

+ 数据的存储

HDFS

Hbase

OceanBase/Tair

Page 27: 海量用户数据处理及其在一淘广告和推荐中的应用

+ Tair

Page 28: 海量用户数据处理及其在一淘广告和推荐中的应用

+ Tair-DataServer

Page 29: 海量用户数据处理及其在一淘广告和推荐中的应用

+ TaoCode

http://Code.taobao.org

Tair

TT

OceanBase

Tengine(taobao定制版本的nginx)

…..

Page 30: 海量用户数据处理及其在一淘广告和推荐中的应用

+ Q&A

Thanks

http://weibo.com/grisword @淘白白