+海量用户数据处理及其在一淘广告和推荐中的应用2012-04-16一淘+第14期:《海量数据挖掘与应用》-e淘专场个性化的广告+Etao推荐+主要的挑战每天新增几十亿条+的Log,几TB的数据需要处理3个月甚至更多的数据复杂的离线算法模型处理准实时的轻量快速算法数据更新高并发,高容量,快速响应的实时对外服务+架构+海量数据分析-离线处理2000+nodehadoop集群20000+Map,10000+reduce计算资源存储容量PB级别高可用性,很好的扩展性,方便管理运维实效性不好,每天1次或者每小时1次的离线处理+如何有效降低数据的延迟?Map-ReduceStreamProcessing+流上的数据处理TimeTunnelStorm+TimeTunnelTT(TimeTunnel)是一个企业消息交换平台,提供可靠的、高效的、安全的消息交换服务。TT遵循AMQP(AdvancedMessageQueueProtocol)协议,基于TT可以搭建消息系统、日志收集系统、实时计算框架。特点灵活配置的日志收集方案无需编写脚本实时高可靠收集日志高性能的分布式消息队列完善的监控体系和错误自动恢复机制+TimeTunnel+使用TT来做实时计算+TT做实时计算的不足计算能力的扩展性不适合复杂业务逻辑编码比较复杂+TimeTunnel目前TT已经开源类似的开源项目Facebook的scribeCloudera的flumeLinkedin的Kafka+Storm流计算分布式RPC持续计算Twitter类似项目Yahoo的s4Facebook的puma(尚未开源)+Storm的特点水平扩展,并行计算,动态增删节点可靠的消息处理事务机制,解决重复计算问题容错性+StormNimbus:主控节点,用于任务分配,集群任务监控等,与hadoopJobtracker类似Zookeeper:集群中协调,共有数据的存放(如心跳信息)Supervisor:对应一台物理机,用于启动worker,类似hadoop的tasktracker。Worker:工作进程,负责启动task,以及通过zeromq进行tuple的分发,与接收。Task:工作线程,任务的处理。+Storm-ConceptTupleStreamSpoutBoltTopology+Storm-Tuple一个tuple表示流中一个基本的处理单元,例如一条访问日志,它可以包括多个field,每个field表示一个属性Field1Field2Field3Field4+Storm-Stream一个没有边界的连续的tuples他们在分布式的系统中可以被并行的处理与创建,但不保证处理顺序+Storm-spout类似hadoop的map。Spout是一个stream的源头。通常spout会从外部数据源读取数据并发送tuple到stream。KestrelqueuekafkaspoutTTspout+Storm-Bolt处理输入的流并产生新的输出流.Bolt可以用来做简单的stream转换,复杂的流处理/转换一般会分解为多步完成,所以会使用多个bolt级联起来,每个bolt完成一些较简单的功能一个bolt可以产生多个输出流。类似hadoopreduce,而且可以bolt后可以继续有其他的bolt+Storm-Topology由spout和bolt构成的网状图实时处理程序在逻辑上构成一个storm的拓扑Storm拓扑与传统任务的区别:storm拓扑不终止的,除非被杀死,它一直运行+Storm-Task每个Spout和bolt都作为很多task在集群中运行每个task对应OS中的一个线程Streamgroupings定义如何把tuple从一个task发向另一个task+Storm+数据的存储HDFSHbaseOceanBase/Tair+Tair+Tair-DataServer+TaoCodeTairTTOceanBaseTengine(taobao定制版本的nginx)…..+Q&AThanks@淘白白