小红书大数据在推荐中的应用

小红书大数据在推荐中的应用
• 实时计算在推荐业务中的场景
• 实时归因: 一个推荐业务的Flink实时计算任务的实践
• Red Flink实时流计算平台
• Red ML平台
• 总结和展望

展开查看详情

1.小红书大数据在推荐中的应用 郭一 小红书推荐架构负责人

2.小红书: 找到你想要的生活 8500万 300% 30亿 月活 年同比增长 每天笔试展示

3. 目录 • 实时计算在推荐业务中的场景 • 实时归因: 一个推荐业务的Flink实时计算任务的实践 • Red Flink实时流计算平台 • Red ML平台 • 总结和展望

4.推荐 & 实时计算

5.线上推荐过程 分页显示, 有交互之后重排 笔记位置多样性调整 给每个笔记打分 Score = pCTR * (pLike * Like权重 + pCmt * Cmt权重 … ) 根据用户画像从笔记池中召回(多种策略)

6. 推荐系统架构 用户消费笔记 产生交互 用户/笔记 笔记索引 训练样本 分析报表 画象 实时 算法推荐 离线 预测模型 策略

7. 离线批处理 客户端用户交互 LogServer 用户笔记画象 (T+1) Hive 报表 (T+1) BI工具 训练样本 (T+1) 模型训练

8. 实时流处理 客户端用户交 互 实时用户/笔记 LogServer 画象 实时用户/ 笔记画象 Kafka 实时归因 实时指标 ClickHouse BI工具 Kafka Hive 训练样本 Hive 模型训练 数据接入 数据计算 数据落地 数据应用

9.实时归因

10. 实时流计算:实时归因 曝光笔记 有无点击 1 2 2. 点击 用户行为流: 1 No 2 Yes 笔记1 曝光 3 No 笔记2 曝光 笔记3 曝光 4 Yes 笔记4 曝光 点击模型数据标签 3. 点赞 笔记2 点击 笔记2 点赞 笔记2 回退, 时长20s 3 4 笔记4 点击 4. 点击 笔记4 回退, 时长10s 点击笔记 有无点赞 停留时长 … 2 Yes 20s 4 No 10s 点赞和时长模型数据标签 1. 曝光

11. Flink Job – Session Labeler • Flink任务 • SessionStateProcesser • Kafka Source => Kafka Sink • 创建一个定时的20分钟窗口 • keyBy (user_id, note_id, 曝光/点击) • 创建维护ValueState<SessionState>状态 • 使用Process Function API • 窗口结束的时候 (SessionStateProcesser) • 根据SessionState输出下游记录 • 清除ValueState<SessionState>

12.实际生产需要解决的问题 • Flink集群管理 • Checkpoint & 状态持久化 • Backfill

13.Flink集群部署 on K8s (Standalone)

14. Checkpoint和State持久化 FsStateBackend RocksDBStateBackend • state 存储在HDFS • state 存储在RocksDB on HDFS • 不支持增量checkpoint • 利用RocksDB的compaction机制合并, 支持增量Checkpoint • 适用于state比较大的情况

15. RocksDB参数挑优 • 磁盘I/O高,反压上游 • 本地 HDD => SSD • 内存OOM • 堆外内存 = MemTable * #Parallelism • Checkpoint频率 1min = > 10 min • RocksDB Compaction Threshold => 1G

16. Backfill • Source流控 • 支持Kafka Source和文件 • 期待Flink 1.9 对批的支持加强

17.Red Flink实时流计算平台

18.

19. 配置目的地 自动产成Flink SQL ETL命令 自动识别格式

20.Red ML平台

21. 小红书推荐预测模型的演近 • 9个预测任务 (click, hide, like, fav, comment, share, follow, …) • Click模型规模: 5亿样本/天, 1T数据/天 12/2018 07/2019 Coming soon GBDT GBDT GBDT GBDT Online Training (SparkML) + LR(TensorFlow) + + Deep & Wide Sparse D&W (TensorFlow) (Tensorflow on KubeFlow)

22. Red ML on KubeFlow • 开源社区支持 • TFJob支持TensorFlow的分布式训练

23. 总结与展望 • 依赖开源社区 • 期待Flink 1.9新功能 • 模型训练算力需求增加, 效率敏感 • Flink + AI

24. 扫码加入社群 与志同道合的码友一起 粘贴二维码 Code Up 阿里云开发者社区

25.谢谢!