专注新闻资讯的梨视频近来表现亮眼。

梨视频由前澎湃新闻掌门人邱兵创立。

在上线之前,它就获得了黎瑞刚华人文化近1亿美元投资,旗下《微辣》栏目总播放量已经超过4亿,并在上线1个月后获得“年度视频新媒体”大奖。

这样一款脱胎于传统媒体的创业型短视频软件,在视频领域异军突起,不仅让内人士在感叹梨视频内容生产力之强大的同时,也诧异于是谁在为梨视频的庞大用户体量提供技术支撑、保证视频流畅?

今天就和大家分享梨视频如何基于阿里云快速搭建一个套推荐系统。

以下案例分享全部基于实战——梨视频第一代推荐系统。

梨视频在上线初期用户量增长很快,基于阿里云搭建的推荐系统扛住了流量的压力也很出色的完成了初期用户兴趣视频推荐功能。

推荐系统脱离不开数据收集处理系统,数据既是推荐数据来源,也是验证推荐系统重要依据。

选型

对梨视频这样的创业公司来说,技术选型需要考虑的是:快速构建系统,实现业务的快速落地。

我们核心策略是积极拥抱云平台,使用开源系统。

购置物理机,意味着有较大的一次性投入,使用云平台则可以逐渐投入基础IT资源。

对于基础的组件,首选的是开源系统,再次看国内大公司是否有使用。

最终,我们选择的是阿里云的E-MapReduce开源大数据平台(以下简称EMR)。

这个产品在提供开源组件(Hadoop、Spark、HBase)的同时,也提供了非常有价值的运维服务及作业流等基础服务,特别是无缝结合OSS及Logservice,能快速构建数据中心。

数据中心

梨视频的数据包含两大部分: 用户使用的习惯 和 在梨视频中发布的内容。

用户使用习惯主要分布在用户使用的客户端,需要应用一定方式进行收集。后台拍客和编辑生成的内容等结构化数据也需要定时推送到数据处理中心和用户使用习惯一起被清洗,分析,形成各种模型和数据。

梨视频数据中心基于阿里云E-MapReduce 集群进行搭建。用了它,梨视频可以很方便地通过阿里云控制台新建EMR集群,集群提供了HDFS,Hadoop, Spark,Sqoop,HBase,Hive等等基本的大数据处理套件,而且和OSS存储也是无缝打通, 存储在OSS上数据可以使用EMR集群进行分析,使用起来非常方便。

日志收集

梨视频日志收集在APP端进行压缩然后定时上传,压缩为了减少用户的流量使用,定时是为了减少上传次数,避免过多的网络链接,加重App的负担。

服务器端基于ECS搭建Nginx服务器,并结合lua脚本对日志内容进行解压。

日志推送到LogStore。在阿里云服务中有日志服务,logstore是日志服务中的存储单元。下图展示了logstore的全貌

创建logstore, 这里可以制定shard数量,在logstore存储的时长等参数。同时logstore提供日志短时存储,查询索引等功能,可以选择使用,比较方便。只要是阿里云ECS机器上产生的本地文件都可以发送到logstore中进行存储,转储。

创建过程中,还可以指定原始日志的格式,可以指定每个字段在logstore中的名字。

收集的日志可以进行投递,这里梨视频的日志全部推送到oss上进行永久存储。

至此用户适用习惯数据已经从App客户端推送到LogStore和OSS中,可用于后续分析。

业务数据归集

业务数据都存储在云数据库RDS(MySQL)数据库中,利用Sqoop脚本并配合EMR的任务调度定时将数据推送到EMR集群HIVE库中。

Sqoop脚本

EMR任务部署

任务的定时调度由EMR平台自动支持,只需配置就可以方便完成任务调度。

以上是业务数据的推送到数据中心方式。

数据处理

数据完成收集和归集后,都存储在EMR集群上,剩下的工作就是要对数据进行处理。

首先会对数据进行分层设计,底层部分是日志清洗后的数据和推送到EMR的业务数据,中间层是结合用户行为和业务数据的总和视图。最上层是各种报表和模型。

数据的处理过程全部基于EMR集群,由实时的分析,通过Spark streaming消费logstore的实时流,将分析结果写入Redis供查询,可以实时统计性能,用户量等。

离线的分析主要通过 Spark的离线任务进行,可以进行数据统计也可以进行模型训练。

推荐系统

下图为梨视频第一期推荐系统的概貌

梨视频推荐系统主要由三部分组成:Online、Near Online、Offline。该推荐系统是基于阿里云提供的组件搭建而成,主要涉及了LogStore、EMR、Redis、RDS等。

下面来具体看一下每部分的工作方式。

Online召回和排序

Online主要用于相应用户请求,其中主要包含两大功能:召回和排序。

Online部分是采用两个模块实现的:底层是基础搜索模块,主要完成的是工作是构建索引,依据基础排序模型排序;上层是高级搜索模块,通过响应上层请求,获取用户画像数据,如用户ID,标签,根据请求,将画像数据转化为召回条件。

高级搜索模块将召回条件下发到基础搜索模块,基础搜索模块会提供与这才召回条件相关的内容,返回给高级搜索模块。高级搜索模块获得召回结果后,对其进行排序,通常会根据语义模型排序、效果排序以及规则排序(保证多样性)。

基础搜索模块读取阿里云RDS DTS数据流,该数据流可以实时反馈数据库更改,当编辑在后台更新了内容数据库后,DTS会自动将数据流推送到基础搜索模块,然后构建索引。DTS 接收服务器采用主从同步,保证一台失败,另一台能替代。DTS接收服务还负责向多台基础服务分发增量信息,保证每个基础服务实例都能及时更新到增量信息。

Near Online:实时反馈系统

Near Online部分利用EMR中Spark Streaming实时消费日志搜集系统Log Store中的日志,分析的内容分为两个部分:

一是用户24小时内兴趣分布的状况,24小时以前的数据通过离线的方式按天反馈到线上,用户24小时之内的内容通过实时的方式反馈,构建成用户兴趣分布图;

二是用户24小时看过和不喜欢的内容会在三到五秒内反馈给模型,下一次推荐时不再出现该类内容。

Spark Streaming的作业基于python spark 编写, 阿里云提供了loghub.py接口, 可以非常方便的进行streaming编写。

只需要指定日志服务logstore信息,定义好应用逻辑,就可以创建streaming处理日志流。

Offline:用户兴趣画像

用户画像是推荐系统中的重中之重,推荐系统可以根据用户画像给用户推荐其可能感兴趣的内容。

新闻趋势和其他领域略有不同,它是随着时间、事件不断变化的,如八月份的奥运会、刚刚结束的美国大选等。

那么该如何把握新闻的趋势呢?

一是根据自身发布的内容,在某一趋势到来时,发布的内容必然会偏向该趋势;

二是整站的用户表现,多数用户会关注目前最火的新闻,两者相综合,既可以形成新闻趋势。

另外一点是个人长期兴趣,比如长期关注娱乐、体育版块,通过分析用户长期在整站的行为,形成用户长期兴趣分布。

新闻趋势和个人长期兴趣通过贝叶斯模型,整体再结合时间的分布构建出用户长期兴趣模型(即用户画像)。

用户画像任务涉及到用户行为,也涉及到内容的信息,该任务较为复杂,阿里云EMR系统提供了按照计划调度的模式, 每个计划可以有多个任务, 多任务串行执行,可以方便完成复杂任务的调度。

offline的内容质量评估

在Offline部分,还需要对内容进行质量评估。之所以对内容进行评估,是因为在基础搜索模块需要对内容进行排序。

目前,梨视频引进了基于人类记忆遗忘模型对质量进行评估,该模型遵循具有以下三个原则:

时效性强的内容,热度分衰减更快;

时效性弱的内容,热度分衰减慢;

最近发布的内容较历史稿件更有优势,更容易被用户发现。

线上用户召回排序评估

计算机领域会有一些策略存在,进而会涉及到优化问题;而优化的前提是必须明确现状,明确现状则就需要对现状进行评估。这里主要介绍下单用户实时评估和多用户批量评估。

单用户实时评估,梨视频是通过自研系统,只需要输入用户ID等信息,就可以在后台看到用户最近的行为、模型建模之后的情况以及系统对应推荐的内容,可以一目了然地看到推荐内容是否和用户相匹配。

多用户批量评估所关注的是给所有用户推荐的内容是否存在偏差,例如想了解内容发布时是不是全部是社会相关信息,可以通过批量查看用户的分类、属性进行判断。

推荐总结

整个推荐系统由两个闭环组成:实时闭环;离线闭环。

实时闭环是指用户的操作3到5秒内可以反馈到SparkStreaming中,之后再快速推到线上,使其能够快速影响到下一次推荐结果。

离线闭环是指日志会推到OSS中,每天对日志进行建模后再推到线上,第二天再回到数据中形成闭环。离线闭环和实时闭环配合实时评估和实验评估实现推荐系统整体可控,研发人员可以有的放矢地优化推荐结果。

总结

最后简单进行一下总结,梨视频整体架构主要由数据处理系统和推荐系统构成:

数据处理系统方面,首先需要进行日志收集,在客户端压缩传输,基于阿里云组件搭建日志搜集系统;同时以EMR为中心构建数据处理中心;此外,对数据进行逻辑分层,基础数据全面支撑业务需求。

推荐系统方面,召回模块按照兴趣召回候选集合;排序模块可根据需求和目标进行调整和融合;通过用户行为实时反馈提升用户体验;根据新闻趋势和个人长期兴趣建立用户画像。

此外,引进基于人类记忆遗忘模型建模内容基础质量打分体系;通过评估系统让整体推荐系统变得可控。

`如果对E-mapreduce感兴趣,欢迎加入钉钉群交流`

梨视频:基于阿里云E-MapReduce搭建视频推荐系统的实践相关推荐

  1. 基于阿里云服务器环境搭建到项目上线系列文章之三——安装git

    基于阿里云服务器环境搭建到项目上线系列 前言:最近购买了域名和一台阿里云服务器准备做点东西放上去,所以准备把环境搭建到项目上线的过程记录下来,计划一个系列6篇文章 基于阿里云服务器环境搭建到项目上线系 ...

  2. 基于阿里云服务器环境搭建到项目上线系列文章之六——项目部署

    基于阿里云服务器环境搭建到项目上线系列 前言:最近购买了域名和一台阿里云服务器准备做点东西放上去,所以准备把环境搭建到项目上线的过程记录下来,计划一个系列6篇文章 基于阿里云服务器环境搭建到项目上线系 ...

  3. 基于阿里云服务器环境搭建到项目上线系列文章之四——安装composer

    基于阿里云服务器环境搭建到项目上线系列 前言:最近购买了域名和一台阿里云服务器准备做点东西放上去,所以准备把环境搭建到项目上线的过程记录下来,计划一个系列6篇文章 基于阿里云服务器环境搭建到项目上线系 ...

  4. 基于阿里云服务器环境搭建到项目上线系列文章之一——putty使用秘钥登录远程服务器

    基于阿里云服务器环境搭建到项目上线系列 前言:最近购买了域名和一台阿里云服务器准备做点东西放上去,所以准备把环境搭建到项目上线的过程记录下来,计划一个系列6篇文章 基于阿里云服务器环境搭建到项目上线系 ...

  5. 云上拍客梨视频 基于阿里云的技术实践分享

    摘要: 梨视频大部分的业务都选择了阿里云,其中一个主要原因是阿里云提供基于钉钉群构建的24贴身技术支持,刘隽表示,这种服务模式可以更充分.高效的对接需求,快速得到反馈,这也让梨视频的同学有信心去尝试一 ...

  6. 基于阿里云MQTT物联网平台视频监控

    1.项目介绍   本项目基于物联量平台远程的视频监控项目,通过MQTT协议实现两个设备间的数据上报与订阅.通过这个项目来演示,两个MQTT设备如何互相订阅,进行消息流转.在阿里云服务器上创建2个设备, ...

  7. 基于阿里云部署和搭建私人云笔记完整教程—leanote

    本篇教程主要是带大家在自己的Linux服务器上搭建属于自己的开源云笔记系统. leanote官网 https://leanote.com/ [蚂蚁笔记 = 笔记 + 博客 + 协作 + 私有云] 私有 ...

  8. 云计算学习笔记:基于阿里云ECS服务器搭建云上博客WordPress教程(详细图文版)

    今天使用阿里云免费提供的一台基础环境的 CentOS 6.4 64 位的 ECS(云服务器)实例,完成了安装和部署LAMP 环境并安装 WordPress博客,下面记录下实验过程,和一些小细节上的问题 ...

  9. 比心云平台基于阿里云容器服务 ACK 的弹性架构实践

    作者:韩韬|比心技术 前言 应用容器化改造后,不可避免地会面临这样一个问题:Kubernetes 集群的 Node 资源配置不足会导致 Pod 无法及时运行,购买过多的 Node 又会导致资源的闲置浪 ...

  10. 基于阿里云数加MaxCompute的企业大数据仓库架构建设思路

    摘要: 数加大数据直播系列课程主要以基于阿里云数加MaxCompute的企业大数据仓库架构建设思路为主题分享阿里巴巴的大数据是怎么演变以及怎样利用大数据技术构建企业级大数据平台. 本次分享嘉宾是来自阿 ...

最新文章

  1. 2019年计算机视觉将继续承担哪些作用?
  2. MySQL添加服务、设置密码、修改密码
  3. 对mysql优化关注_MySQL优化看这篇就对了
  4. 【.NET Core项目实战-统一认证平台】第三章 网关篇-数据库存储配置(1)
  5. 《Java 高并发》03 线程的生命周期
  6. linux登录主机命令,linux w命令查询已登录主机的用户信息
  7. 学会这些 Python 美图技巧,就等着女朋友夸你吧!| 原力计划
  8. Emacs设置光标颜色和高亮
  9. 最新最全git使用大全
  10. android电视 怎么调电视机的信号源,电视怎么调信号源
  11. 局域网打印机共享怎么设置_局域网共享精灵 局域网内便节共享文件和打印机...
  12. 【24点】java减治法实现二十四点,输出所有求值结果为24的组合
  13. vue、js onSelect事件 获取选中的值
  14. lwj_C#_泛型使用
  15. 为什么我的计算机不能更新系统,为什么我的电脑重新安装系统建设银行网银不能......
  16. visual studio code下载慢解决办法
  17. 基于C语言设计符号表
  18. JAVA毕业设计高校人事管理系统计算机源码+lw文档+系统+调试部署+数据库
  19. SolidWorks装配模块四连杆运动仿真…
  20. python 删除excel空行_Java 删除 Excel 中的空白行和列

热门文章

  1. 职场中的「尼尔森的十大可用性原则」
  2. el-select下拉框可输入
  3. 冰雹数 任意给定一个整, 如果是偶数,执行: N / 2 如果是奇数,执行: N * 3 + 1 生成的新的数字再执行同样的动作,循环往复。 通过观察发现,这个数字会一会儿上升到很高,
  4. iOS Layer 图层圆角、边框 、底纹其他操作
  5. 玩转Windows(快捷键)
  6. Slicer学习笔记(三十七)slicer增加分割节点并显示
  7. 华为P30:一场优等“偏科生”的战争
  8. 联想笔记本e480恢复出厂设置_联想e480进入bios设置_thinkpade480进入bios的方法
  9. mac 在 terminal 终端快速打开 vscode
  10. 利用 Excel 当中的 MATCH 和 XLOOKUP 函数实现集合与字典(映射)访问