小红书推荐阿里云上的大数据
作者:小红书推荐工程负责人 郭一
小红书推荐业务架构
首先这个图上画了一些比较典型的推荐业务,使用大数据的主要模块,其中最左边是线上推荐引擎,一般推荐引擎会分成召回、排序、后排等几步,在这里就不细说了。主要是从大数据的角度来说,推荐引擎主要是运用预测模型来预估用户对每个候选笔记的喜欢程度。根据一定的策略来决定给用户推荐哪些笔记。推荐模型在运用时需要抓取笔记特征,这些特征又会回流到我们的训练数据中,来训练新的模型。推荐引擎返回笔记之后,用户对笔记的消费行为,包括展示、点击、点赞等行为,会形成用户的行为流。这些用户行为流结合了特征流,从而产生了模型训练的数据来迭代模型。结合用户和笔记的信息之后,就会产生用户和笔记画像和推荐业务所用到的一些分析报表。
经过一年多的改造,小红书在推荐场景中,除了从分析数据到策略这一块,需要人为参与迭代策略之外,其他的模块的更新基本上是做到了实时或近实时的进行。
推荐业务的实时计算应用
这里稍微展开讲一下特征和用户行为的数据回流之后的实时计算,以及我们怎么使用他们产生的数据。在推荐引擎产生特征流的时候,特征流因为量特别大,包括了所有推荐返回的笔记,大概有近百篇,以及这些笔记的所有特征,所以这些特征总共大概有大几百个。目前我们的做法是把特征写到一个我们自研的高效的kv中缓存几个小时,然后用户行为数据是从客户端打点回流,然后我们就开始了数据流的处理。
我们第一步是把客户端打点的用户行为进行归因和汇总。这里讲一下什么是归因和汇总。因为在小红书的APP上面,客户端的打点是分页面的,比如说用户在首页推荐中看了笔记并进行了点击,点击之后用户就会跳转到笔记页,然后用户在笔记页上浏览这篇笔记并进行点赞。同时用户可能会点击作者的头像进入作者的个人页,并在个人页中关注了作者。归因是指把这一系列的用户行为都要算作首页推荐产生的行为,而不会和其他的业务混起来。因为搜索用户,在搜索中看到同样一篇笔记,也可能返回同样的结果。所以我们要区分用户的行为到底是由哪一个业务所产生的,这个是归因。
然后汇总指的是用户的这一系列行为,关于同一篇笔记,我们会产生一条汇总的记录,汇总的记录可以便于后续的分析。然后归因之后,会有一个实时的单条用户行为的数据流。而汇总这边,因为有一个窗口期,所以汇总的数据一般会延迟目前大概是20分钟左右。当我们产生归因和汇总的数据流之后,我们就会补充上一些维表的数据,我们会根据用户笔记来找当时我们推荐产生的特征,同时我们也会把一些用户的基础信息和笔记的基础信息加到数据流上。这里面其实主要有4个比较重要的用户场景,第一个场景是产生分业务的Breakdown的信息,这个主要是能知道某一个用户在不同的笔记维度,他的点击率和一些其他的业务指标,同时我也可以知道某一篇笔记针对不同的用户,它产生的点击率,这个是我们在实时推荐当中一个比较重要的特征。另外一个很重要的是我们实时分析的一个宽表,宽表是我们把用户的信息、笔记信息和用户笔记交互的汇总信息,都变成了一个多维度的表,进行实时分析,这个后面会更加详细的和大家讲述。然后还有两个比较重要的,一个是实时训练的信息,训练的信息就是我把用户和笔记交互的信息扩充了,当时排序的时候抓起的特征,这特征加上一些我们汇总出来的标签,就给模型进行训练来更新模型。然后另外一个就是我所有的汇总信息都会进入离线数据数仓,然后会进行后续的一些分析和报表的处理。
流计算优化—Flink批流一体
然后我这里讲一下我们怎么运用Flink的一些新功能来优化流计算的过程。这里面我主要讲两点,其中第一点就是批流一体化。
刚才说了我们把一个用户的行为根据笔记的行为汇总之后进行分析,这里的汇总的信息其实很多的,汇总信息当中,除了最简单的,比如说用户有没有点赞收藏这篇笔记,其实还有一些比较复杂的标签,比如说用户在笔记页上停留了多长时间,或者是说这篇笔记之前的点击是不是一个有效点击,我们对于某些广告场景或者有些场景下面,我们需要知道如果用户点击之后停留了比如说超过5秒,那么这个点击是有效的。那么像这种复杂的逻辑,我们希望在我们的系统当中只被实现一次,就可以同时运用在实时和批的计算当中。那么在传统意义上这点是很难的,因为大多数的实现中,批和流是两个版本,就是我们在Flink上面,比如说实现了一个版本的有效点击的定义,我们同时也会需要实现一个离线版本的有效点击的定义,这个可能是一个SQL写的版本。那么小红书是运用了FLIP-27里面的一个新的功能,日志文件是一个批的形式,它可以转换成一个流的形式,这样的话我就可以做到代码意义上的批流统一。
流计算优化—Multi-sink Optimization
那么还有一个Flink的功能就是一个在Flink 1.11上的Multi-sink Optimization。它的意思是我一份数据会写到多个数据应用上去,比如我会同时需要做张用户行为的宽表,同时也生成一份离线的数据。那么Multi-sink Optimization做的是,你只需要从Kafka里面读一次,如果是同一个key的话,他只需要去Lookup一次kv就可以产生多份数据,同时写到多个sink,这样可以大大减少我们对Kafka的压力和对 kv查询的压力。
小红书OLAP典型场景
最后我讲一下我们的OLAP场景和阿里云MaxCompute、Hologres的一个合作。小红书在推荐业务下面有很多OLAP场景,这里我讲4个比较常见的场景应用,最常见的其实就是根据用户的实验组分组进行比较的一个实时分析。因为我们在推荐业务上面需要大量的调整策略或者是更新模型,然后每次调整策略和更新模型我们都会开一个实验,把用户放到不同的ABtest里面来比较用户的行为。那么一个用户其实在推荐当中会同时处于多个实验,在每一个实验里面是属于一个实验组,我们按实验分组做的实验分析,主要就是把一个实验拿出来,然后把用户的行为和汇总数据,根据这个实验当中的实验组进行分维度的分析,看看不同的实验组它的用户指标有什么差别。然后这个场景是一个非常常见的场景,但是也是计算量非常大的场景,因为它需要根据用户的实验tag进行分组。
然后另外一个场景就是我们小红书的推荐其实是跑在了多个数据中心上面,不同的数据中心经常有一些变动,比如说是运维的变动,我们要起一个新的服务,或者是我们可能有些新的模型需要在某个计算中心先上线,那么我们需要一个端到端的方案去验证不同的数据中心之间的数据是不是一致,用户在不同数据中心的体验是不是一样。这个时候就需要我们根据不同的数据中心进行比较,比较用户在不同的数据中心当中产生的行为,他们最终的指标是不是一致,同样我们也用到了我们的模型和代码的发布当中。我们会看一个模型发布或者一份代码发布的老版本和新版本,他们产生的用户的行为的指标对比,看他们是不是一致。同样我们的OLAP还用在了实时业务指标的告警,如果用户的点击率和用户的点赞数突然有一个大幅的下降,也会触发我们的实时的告警。
小红书OLAP数据的规模
在高峰时候我们大概每秒钟有35万条用户行为被记入我们的实时计算当中。然后我们大宽表大概有300个字段,然后我们希望能够保持两周多大概15天左右的数据,因为我们在做实验分析的时候,经常需要看本周和上一周的数据的对比,然后我们大概每天有近千次的查询。
小红书+Hologres
我们在7月和阿里云的MaxComputer和Hologres进行了一个合作。Hologres其实是新一代的智能数仓的解决方案,它能够把实时和离线的计算都通过一站式的方法来解决。同时它的应用主要可以用在实时大屏、Tableau和数据科学当中,我们研究下来是比较适合我们的推荐场景的。
小红书Hologres应用场景
Hologres做的事情主要是对离线的数据进行了查询和加速,然后对离线的数据做表级别的交互查询响应,他就无须再做从离线把数据搬到实时数仓的这么一个工作,因为它都在里面了。整个实时数仓,它是通过搭建用户洞察体系,实时监控平台的用户数据,可以从不同的角度对用户进行实时诊断,这样可以帮助实施精细化的运营。这个其实对于我们用户大宽表来说也是一个非常适合的场景。然后它的实时离线的联邦计算可以基于实时计算引擎和离线数仓MaxCompute交互分析,实时离线联邦查询,构筑全链路精细化运营。
Hologres VS Clickhouse
在和阿里云MaxCompute合作之前,我们是自建了Clickhouse的集群,当时我们也是一个很大规模的集群,一共用了1320个core,因为Clickhouse它不是一个计算存储分离的方案,所以当时我们为了节约成本,只存放了7天的数据,然后因为Clickhouse对于用户实验tag这个场景其实没有很好的优化,所以说我们当时查询超过三天的数据就会特别慢。因为是个OLAP场景,我们希望每次用户的查询能在两分钟之内出结果,所以是限制了我们只能查过去三天的数据。同时另外还有一个问题就是Clickhouse对于组件的支持是有些问题的,所以我们没有在Clickhouse集群上面配置组件,如果上游的数据流有些抖动,数据造成一些重复的情况下,下游的Clickhouse里面其实会有一些重复的数据。同时我们也是派了专人去运维Clickhouse,然后我们通过调研发现,Clickhouse如果你要做成集群版的话,它的运维成本还是很高的。所以我们在7月份的时候和阿里云合作,把我们推荐的一个最大的用户宽表迁移到了MaxCompute和Hologres上面,然后我们在Hologres上面一共是1200个core,因为它是计算存储的方案,所以1200个core就足够我们使用了。但是我们在存储的方面是有更大的需求的,我们一共存了15天的数据,然后因为Hologres对于用户根据实验分组这个场景是做了一些比较定制化的优化,所以说我们现在可以轻松地查询7天到15天的数据,在这个根据实验组分组的场景下面,其查询的性能与Clickhouse相比是有大幅提升的。Hologres它其实也支持Primary Key,所以我们也是配置了Primary Key,我们在这个场景下面是用了insert or ignore这个方法,然后因为配置了Primary Key,它就天然具有去重的功能,这样的话我们上游只要保证at least once,下游的数据就不会有重复。 然后因为我们是放在阿里云上面,所以说是没有任何的运维的成本。
原文链接
本文为阿里云原创内容,未经允许不得转载。
下一篇: 小红书 19 个面试问题汇总(错题整理)
推荐阅读
-
小红书推荐阿里云上的大数据
-
小红书大产品部架构 小红书产品概览--经过性能、稳定性、成本等多个维度的详细评估,小红书最终决定选择基于腾讯云星海自研硬件的SA2云服务器作为主力机型使用。结合其秒级的快速扩缩、超强兼容和平滑迁移能力,小红书在抵御上亿次用户访问、保证系统稳定运行的同时,也实现了成本的大幅降低。 星海SA2云服务器是基于腾讯云星海的首款自研服务器。腾讯云星海作为自研硬件品牌,通过创新的高兼容性架构、简洁可靠的自主设计,结合腾讯自身业务以及百万客户上云需求的特点,致力于为云计算时代提供安全、稳定、性能领先的基础架构产品和服务。如今,星海SA2云服务器也正在为越来越多的企业提供低成本、高效率、更安全的弹性计算服务。 以下是与小红书SRE总监陈敖翔的对话实录。 问:请您介绍一下小红书及其主要商业模式? 小红书是一个面向年轻人的生活方式平台,在这里,他们发现了向上、多元的真实世界。小红书日活超过 3500 万,月活跃用户超过 1 亿,日均笔记曝光量达 80 亿。小红书由社交平台和在线购物两大部分组成。与其他线上平台相比,小红书的内容基于真实的口碑分享,播种不止于线上,还为线下实体店赋能。 问:围绕业务发展,小红书的系统架构经历了怎样的变革和演进? 系统架构变化不大,影响最深的是资源开销。过去三年,资源开销大幅增加,同比增长约 10 倍。在此背景下,我们努力进行优化,包括很早就开始使用 K8S 进行资源调度。到 18 年年中,绝大多数服务已经完全实现了容器化。 问:目前小红书系统架构中的计算基础设施建设和布局是怎样的? 我们目前的建设方式可以简单描述为星型结构。腾讯云在上海的一个区是我们的计算中心,承载着我们的核心数据和在线业务。在外围,我们还有两个数据中心进行计算分流,同时承担灾备和线上业务双活的角色。 与其他新兴电子商务互联网公司类似,小红书的大部分计算能力主要用于线下数据分析、模型训练和在线推荐等平台。随着业务的发展,对算力的需求也在加速增长。
-
小红书如何实现高效推荐?解密背后的大数据计算平台架构
-
云服务器+家用电脑(无公网 IP)Pinode 节点部署教程--理论上,无论你身在何处,只要能上网,就能运行一个固定 IP 的 Pi 节点节点!(注:不能直接部署独立云服务器)本方案相对运营商公网 IP 有以下优势:拥有稳定的固定 IP(阿里云 IP),解决了运营商不分配公网 IP 或分配动态 IP 的问题 ②节点部署在本地电脑上,相对安全。因为是使用阿里云的专网,稳定性也很强。希望对大家有用,帮助大家解决没有公网的节点部署问题。第一步:环境准备 1、本地电脑配置: ①操作系统:推荐 WIN10 专业版(目前节点容器只支持 2004 专业版) ②内存:推荐 4G 及以上 建议:https://item.taobao.com/item.htm?spm=a2126o.success.0.0.61 b94831SbZESt&id=6346663414282,阿里云服务器租用:阿里云(推荐1核2G以上,ECS共享s6,带宽3-5M即可,以下两个链接都可以,选择一个合适的即可)https://www.aliyun.com/minisite/ goods?userCode=is7i4iav
-
反传销网8月30日发布:视频区块链里的骗子,币里的韭菜,杜子建骂人了!金融大V周召说区块链!——“一小帮骗子玩一大帮小白,被割韭菜,小白还轮流被割,割的就是你!” 什么区块链,统统是骗子 作者:周召(知乎金融领域大V,毕业于上海财经大学,目前任职上海某股权投资基金合伙人) 有人问我,区块链现在这么火,到底是不是骗局? 我的回答是: 是骗局。而且我并不是说数字货币是骗局,而是说所有搞区块链的都是骗局。 -01- 区块链是一种鸡肋技术 人类社会任何技术的发明应用,本质都是为了提高社会的生产效率。而所谓区块链技术本质不过是几种早已成熟的技术的大杂烩,冗余且十分低效,除了提高了洗钱和诈骗的效率以外,对人类社会的进步毫无贡献。 真正意义上的区块链得包含三个要素:分布式系统(包括记账和存储),无法篡改的数据结构,以及共识算法,三者互为基础和因果,就像三体世界一样。看上去挺让人不明觉厉的,而经过几年的瞎折腾,稍微懂点区块链的碰了几次壁后都已经渐渐明白区块链其实并没有什么卵用,区块链技术已经名存实亡,沦为了营销工具和传销组织的画皮。 因为符合上述定义的、以比特币为代表的原教旨区块链技术,是反效率的,从经济学角度来说,不但不是一种帕累托改进,甚至还可以说是一种帕累托倒退。 原教旨区块链技术的效率十分低下,因为要遍历所有节点,只能做非常轻量级的数据应用,一旦涉及到大量的数据传输与更新,区块链就瞎了。 一方面整条链交易速度会极慢,另一方面数据库容量极速膨胀,考虑到人手一份的存储机制,区块链其实是对存储资源和能源的一种极大的浪费。 这里还没有加上为了取得所谓的共识和挖矿消耗的巨大的能源,如果说区块链技术是屎,那么这波区块链投机浪潮可谓人类历史上最大规模的搅屎运动。 区块链也验证不了任何东西。 所谓的智能合约,即不智能,也非合约。我看有人还说,如果有了智能合约,就可以跟老板签一份放区块链上,如果明年销售业绩提升30%,就加薪10%,由于区块链不能篡改,不能抵赖,所以老板必须得执行,说得有板有眼,不懂行的愣一看,好像还真是那么回事。 但仔细一想,问题就来了。首先,在区块链上如何证明你真的达到了30%业绩提升?即便真的达到老板耍赖如何执行? 也就是说,如果区块链真这么厉害,要法院和仲裁干什么。 人类社会真正的符合成本效益原则的是代理制度。之前有人说要用区块链改造注册会计师行业,我不知道他准备怎么设计,我猜想他思路大概是这样的,首先肯定搞去中心化,让所有会计师到链上来,然后一个新人要成为注册会计师就要所有会计师同意并记录在链上。 那我就请问了,我每天上班累死累活,为什么还要花时间去验证一个跟我无关的的人的专业能力?最优做法当然是组织一个委员会,让专门的人来负责,这不就是现在注册会师协会干的事儿吗?区块链的逻辑相当于什么事情都要拿出来公投,这个绝对是扯淡的。 当然这么说都有点抬举区块链了,区块链技术本身根本没有判断是非能力,如果这么高级的人工智能,靠一个无脑分布式记账就能实现的话,我们早就进入共产主义社会了。 虽然EOS等数字货币采用了超级节点,通过再中心化的方式提高效率,有点行业协会的意思,是对区块链原教旨主义的一种修正,但是依然无法突破区块链技术最本质的局限性。有人说,私有链和联盟链是区块链技术的未来,也是扯淡,因为区块链技术没有未来。如果有,说明他是包装成区块链的伪区块链技术。 区块链所涉及的所有底层技术,不管是分布式数据库技术,加密技术,还是点对点传输技术等,基本都是早已存在没什么秘密可言的技术。 比特币系统最重要的特性是封闭性和自洽性,他验证不了任何系统自身以外产生的信息的真实性。 所谓系统自身产生的信息,就是数据库数据的变动信息,有价值的基本上有且只有交易信息。所以说比特币最初不过是中本聪一种炫技的产物,来证明自己对几种技术的掌握,你看我多牛逼,设计出了一个像三体一样的系统。因此,数字货币很有可能是区块链从始至终唯一的杀手应用。 比特币和区块链概念从诞生到今天已经快10年了,很多人说区块链技术在爆发的前夜,但这个前夜好像是不是有点过长了啊朋友,跟三体里的长夜有一拼啊。都说区块链技术像是90年代初的互联网,可是90年代初的互联网在十年发展后,已经出现了一大批伟大的公司,阿里巴巴在99年都成立了,区块链怎么除了币还是币呢? 正规的数字货币未来发展的形式无外乎几种,要么就是论坛币形式,或者类似股票的权益凭证等。问题是论坛币和股票之前,本来也都电子化了,区块链来了到底改变了什么呢? 所有想把TOKEN和应用场景结合起来的人最后都很痛苦,最后他们会发现区块链技术就是脱裤子放屁,自己辛苦搞半天,干嘛不自己作为中心关心门来收钱?最后这些人都产生了价值的虚无感,最终精神崩溃,只能发币疯狂收割韭菜,一边嘴里还说着我是个好人之类的奇怪的话。 因此,之前币圈链圈还泾渭分明,互相瞧不起,但这两年链圈逐渐坐不住了,想着是不是趁着泡沫没彻底破灭之前赶快收割一波,不然可能什么都捞不着了。 前段时间和一个名校毕业的链圈朋友瞎聊天,他说他们“致力于用区块链技术解决数字版权保护问题”,我就问他一个问题,你们如何保证你链的版权所有权声明是真实的,万一盗版者抢先一步把数据放在链上怎么办。他说他们的解决方案是连入国家数字版权保护中心的数据库进行验证…… 所以说区块链技术就是个鸡肋,研究到最后都会落入效率与真实性的黑洞,很多人一头扎进链圈后才发现,真正意义上的区块链技术,其实什么都干不了。 -02- 不是蠢就是坏的区块链媒体 空气币和区块链的造富神话,让区块链自媒体也开始迎风乱扭。一群群根本不知道区块链为何物的妖魔鬼怪纷纷进驻区块链自媒体战场,开始大放厥词胡编乱造。 任何东西,但凡只要和区块,链,分,分布式,记账,加密,验证,可追溯等等这些个关键词沾到哪怕一点点,这些所谓的区块链媒体人就会像狗闻到了屎了一样疯狂地把区块链概念往上套。 这让我想起曾经一度也是热闹非凡的物联网,我曾经去看过江苏一家号称要改变世界的“物联网”企业,过去一看是生产路由器的,我黑人问号脸,对方解释说没有路由器万物怎么互联,我觉得他说得好有道理,竟无言以对。 好,下面让我们进入奇葩共赏析时间,来看看区城链媒体经常有哪些危言耸听的奇谈怪论 区块链(分布式记账)的典型应用是*?? 正如前面所说,真正意义上的区块链分布式记账,不光包括“记”这个动作,还包括分布式存储和共识机制等。而*诞生远远早于区块链这个词的出现,勉强算是“分布式编辑”吧,就被很多区块链媒体拿来强行充当区块链技术应用的典范。 其实事实恰恰相反,*恰恰是去中心化失败的典范,现在如果没有精英和专业人士的编辑和维护,*早就没法看了。 区块链会促进社会分工?? 罗振宇好像就说过类似的话,虽然罗振宇说过很多没有逻辑的话,但这句话绝对是最没逻辑思维的。很多区块链自媒体也常常用这句话来忽悠老百姓,说分工代表效率提高社会进步,而区块链“无疑”会促进分工,他们的理由仅仅是分工和分布式记账都共用一个“分”字,就强行把他们扯到一起。 实际情况恰恰相反,区块链是逆分工的,区块链精神是号召所有人积极地参与到他不擅长也不想掺合的事情里面去。 区块链不能像上帝一样许诺他的子民死后上天国,只能给他们许诺你们是六度人脉中的第一级,我可以赚后面五级人的钱,你处于金字塔的顶端。
-
小红书如何实现高效推荐?解密背后的大数据计算平台架构
-
跟随阿里巴巴的大数据脚步:实操案例探索大数据之旅" | 每日一书阅读推荐
-
揭秘小红书高效推荐的秘密:大数据计算平台架构解析
-
阿里云和StarRocks联手打造的实战营深圳站,邀你亲身体验云上的高效数据存储和处理!
-
大道至简,提升企业上云的网络体验 | 2023阿里云峰会·粤港澳大湾区