天天看点

实时离线平台Pora介绍@2015

      pora是personal offline realtime analyze的简称。

      几年前,淘宝的搜索结果已经不再千人一面的商品排序,而是深度融合了用户的个性化偏好的搜索结果。而实时变化的用户行为,能帮助算法更好地预测用户接下来的个性化偏好。为此需要一个系统能实时地获取用户行为,并支持算法实时修改用户或商品的个性化信息。这个系统开始了,叫做pora。

      整个搜索pipeline上看,pora位于引擎的离线部分。设计pora的一个目标是实时处理流数据。因此pora必须同时具备海量数据处理(高吞吐)和实时(低延迟)。除此之外,pora还需要成为一个平台。众多算法模块可以运行、灵活调整和实时生效。

      pora在搜索实时计算体系的位置,见图1:

实时离线平台Pora介绍@2015

图1.搜索实时计算体系

     从诞生以来,pora经过了多次演变。 最初是storm集群上开发的应用。2014年迁移到yarn集群,istream作为流计算框架。2015年,pora做了tec重构。业务不断扩展,从简单的用户维度性别个性化到商品维度个性化,再到如今同时支持用户和商品两个维度多个场景的个性化,支持实时反作弊、推荐、赛马等业务。2015年开始有在线学习框架,现有lr/ftrl算法和实时矩阵分解算法。

     目前的pora总体架构,如下图2:

实时离线平台Pora介绍@2015

图2.pora总体架构

2015年pora的重要改动

       原有pora的核心层独立出来,称为tec项目。pora定位业务逻辑和算法接口,开发更简洁。tec是轻量级实时计算框架,支持快速开发高吞吐、低延迟的实时应用。例如aliexpress(ae)搜索的离线数据库dump业务,基于tec实现了小时批量到秒级实时的跨越。

实时离线平台Pora介绍@2015

图3. pora的技术堆栈

      数据和模型是算法的两大核心,14年基于pora,实现了数据的实时更新。15年在pora上开发了基于parameter server架构的在线学习框架,实现了模型的实时更新。

      图3是pora内部的在线学习框架,工作机理参考google的downpour sgd。特点是异步,并行,平台化。parameter server由feature worker和hbase model storage实现。

      在线学习的算法,详见文章《搜索双链路实时计算体系@双11实战》[5]

实时离线平台Pora介绍@2015

图3. 在线学习框架

      istream0.9版本开始支持热切换配置,不用重启应用。主搜dump在2015年实现了24小时增量。这两个基础完备后,pora之前的凌晨停顿去掉了,用户个性化,推荐数据等都是24小时运行无延迟。在日常运行,处理数据延迟在秒级,算法改动配置只需要执行热切换命令。

      pora整体qps,2014年双11峰值94万。到了2015年双11期间,峰值达到501万。2015年双11当晚的零点流量高峰,pora各应用无延迟,完成整条链路处理是秒级。整体qps的提升,看着只有5倍多点,如果考虑业务的增长,性能的提升是不止的。

     性能的提升,离不开离线组和莫问团队在yarn/hdfs/istream/hqueue/hbase的重要优化,以及cm8/et2集群的资源优化。这里节约篇幅,就讲一下pora上的业务优化和系统优化。

业务优化:搜索pv日志的处理链精简和存储io优化。直接读取htable,避开hsf限流的超时。auctionprofile表的usertag维度统计,去掉不需要的业务日志。

系统优化:htable的client端增加cache,双十一当天高峰时段cache的平均命中率达到85%。优化hqueue和htable的配置,提高io性能。解决auction/user/sync应用混合运行的机器热点。

     今后有新的目标,敬请期待2016年。

1. 搜索双链路实时计算体系@双11实战:http://yq.aliyun.com/articles/2699

2. google downpour参考:http://research.google.com/archive/large_deep_networks_nips2012.html

上一篇: java踩坑
下一篇: [C语言] sizeof

继续阅读