说三道四技术文摘-感悟人生的经典句子
说三道四 > 文档快照

Netflix公布个性化和推荐系统架构,3种类型作业通实时

HTML文档下载 WORD文档下载 PDF文档下载
Netflix的推荐和个性化功能向来精准,3月27日他们公布了自己在这方面的系统架构。其公布的系统框架图中包含了多种机器学习算法,通过将作业分为离线、近在线和在线三种方式来对抗延时。
Netflix的推荐和个性化功能向来精准,前不久,他们公布了自己在这方面的系统架构。

3月27日,Netflix的工程师 Xavier Amatrain和 Justin Basilico在官方博客 发布文章,介绍了自己的个性化和推荐系统架构。文章开头,他们指出:

要开发出这样的一个软件架构,能够处理海量现有数据、响应用户交互,还要易于尝试新的推荐方法,这可不一点都不容易。

接下来,文章贴出了他们的系统框架图,其中的主要组件包括多种机器学习算法。

他们这样解释其中的组件和处理过程:

对于数据,最简单的方法是存下来,留作后续离线处理,这就是我们用来管理离线作业(Offline jobs)的部分架构。计算可以以离线、接近在线或是在线方式完成。在线计算(Online computation)能更快地响应最近的事件和用户交互,但必须实时完成。这会限制使用算法的复杂性和处理的数据量。离线计算(Offline computation)对于数据数量和算法复杂度限制更少,因为它以批量方式完成,没有很强的时间要求。不过,由于没有及时加入最新的数据,所以很容易过时。个性化架构的关键问题,就是如何以无缝方式结合、管理在线和离线计算过程。接近在线计算(Nearline computation)介于两种方法之间,可以执行类似于在线计算的方法,但又不必以实时方式完成。模型训练(Model training)是另一种计算,使用现有数据来产生模型,便于以后在对实际结果计算中使用。另一块架构是如何使用事件和数据分发系统(Event and Data Distribution)处理不同类型的数据和事件。与之相关的问题,是如何组合在离线、接近在线和在线之间跨越的不同的信号和模型(Signals and Models)。最后,需要找出如何组合推荐结果(Recommendation Results),让其对用户有意义。

接下来,文章分析了在线、接近在线和离线计算。

对于在线计算,相关组件需要满足SLA对可用性和响应时间的要求,而且纯粹的在线计算在某型情形下可能无法满足SLA,因此,快速的备用方案就很重要,比如返回预先计算好的结果等。在线计算还需要不同的数据源确保在线可用,这需要额外的基础设施。

离线计算在算法上可相对灵活,工程方面的需求也简单。客户端的SLA响应时间要求也不高。在部署新算法到生产环境时,对于性能调优的需求也不高。Netflix利用这种灵活性来完成快速实验:如果某个新的实验算法执行较慢,他们会部署更多Amazon EC2实例来达成吞吐处理目标,而不是花费宝贵的工程师时间去优化性能,因为业务价值可能不是很高。

接近在线计算与在线计算执行方式相同,但计算结果不是马上提供,而是暂时存储起来,使其具备异步性。接近在线计算的完成是为了响应用户事件,这样系统在请求之间响应速度更快。这样一来,针对每个事件就有可能完成更复杂的处理。增量学习算法很适合应用在接近在线计算中。

不管什么情况,选择在线、接近在线、还是离线处理,这都不是非此即彼的决策。所有的方式都可以、而且应该结合使用。 …… 即使是建模部分也可以用在线和离线的混合方式完成。这可能不适合传统的监督分类法(supervised classification)应用,因为分类器必须从有标记的数据中批量培训,而且只能以在线方式使用,对新输入分类。不过,诸如矩阵因子分解这样的方法更适合混合离线和在线建模方法:有些因子可以预先以离线方式计算,有些因子可以实时更新,创建更新的结果。其他诸如集群处理这样的非监督方法,也可以对集群中心进行离线计算,对集群节点进行在线作业。这些例子说明:模型训练可以分解为大规模和复杂的全局模型训练,以及轻量级的用户指定模型训练或更新阶段,以在线方式完成。

对于离线作业(Offline jobs),主要用来运行个性化机器学习算法。这些作业会定期执行,而且不必与结果的请求和展示同步。主要有两种任务这样处理:模型训练和中间与最终结果批量计算(batch computation of intermediate or final results)。不过,他们也有一些学习算法是以在线增量方式完成的。

这两种任务都需要改善数据,通常是由数据库查询完成。由于这些查询要操作大量数据,以分布式方式完成更方便,因此通过Hadoop或是Hive、Pig作业就是自然而然的事情。一旦查询完成,就需要某种机制发布产生的数据。对于这样的机制,Netflix有如下需求:

  • 可以通知订阅者查询完成。
  • 支持不同存储方式(不只是HDFS,还有S3或是Cassandra等等)
  • 应该透明处理错误,允许监控和报警。

Netflix使用内部的工具Hermes完成这些功能,它将数据以接近实时的方式交付给订阅者,在某些方面接近 Apache Kafka,但它不是消息/事件队列系统。

无论是离线还是在线计算,都需要处理三种输入:模型、数据和信号。模型是以离线方式训练完成的参数文件,数据是已完成处理的信息,存在某种数据库中。在Netflix,信号是指输入到算法中的新鲜信息。这些数据来自实时服务,可用其产生用户相关数据。


对于事件和数据分发,Netflix会从多种设备和应用中收集尽可能多的用户事件,并将其集中起来为算法提供基础数据。他们区分了数据和事件。事件是对时间敏感的信息,需要尽快处理。事件会路由、触发后续行动或流程。而数据需要处理和存储,便于以后使用,延迟不是重要,重要的是信息质量和数量。有些用户事件也会被作为数据处理。

Netflix使用内部框架Manhattan处理接近实时的事件流。该分布式计算系统是推荐算法架构的中心。它类似Twitter的 Storm,但是用处不同,而且响应不同的内部需求。数据流主要通过 Chukwa,输入到Hadoop,进行处理的初步阶段。此后使用Hermes作为发布-订阅机制。

Netflix使用Cassandra、EVCache和MySQL存储离线和中间结果。它们各有利弊。MySQL存储结构化关系数据,但会面临分布式环境中的扩展性问题。当需要大量写操作时,他们使用EVCache更合适。关键问题在于,如何满足查询复杂度、读写延迟、事务一致性等彼此冲突的需求,要对于各种情况到达某个最优点。

在总结中,他们指出:

我们需要具备使用复杂机器学习算法的能力,这些算法要可以适应高度复杂性,可以处理大量数据。我们还要能够提供灵活、敏捷创新的架构,新的方法可以很容易在其基础上开发和插入。而且,我们需要我们的推荐结果足够新,能快速响应新的数据和用户行为。找到这些要求之间恰当的平衡并不容易,需要深思熟虑的需求分析,细心的技术选择,战略性的推荐算法分解,最终才能为客户达成最佳的结果。

原文链接: Netflix公布个性化和推荐系统架构

“ 第五届中国云计算大会 ”将于2013年6月5-7日在北京国家会议中心隆重举行。猛击报名! 

相关活动已经火热启动:

2013中国云计算大调查,每周大奖等你拿! “ 

Innovation Cloud 2013云创新产品与应用项目征集,欢迎研发者、团队和创业企业参加! 

VB下如何编写CRC校验程序 Visual Basic 6中发送邮件的新方法 Visual Basic通信程序设计 Whois 示例程序-VB资料 Winsock Terminal示例程序 -VB资料 WinSock断开导致客户端问题-VB资料 把Outlook信箱中的附件另存为 -VB资料 保证连网计算机时间同步-VB资料 编写网络寻呼机 -VB资料 编制自已的电话录音小程序-VB资料 程序中如何启动默认的拨号连接-VB资料 打开浏览器并进入指定网址-VB资料 得到用户的IP地址 -VB资料 电话拨号 -VB资料 电子邮件的标准格式 (RFC 822)-VB资料 断开拨号网络的连接-VB资料 断开与 Internet 的连接 -VB资料 发送电子邮件附件-VB资料 VB获得用户网络登录名 基 于Win95 的VB5 串 口 通 信 程 序 基于Win95的VB5串口通信程序 检测运程数据传送的断线-VB资料 简单电子邮件发送程序-VB资料 VB建立拨号联接 -VB资料 将所有窗口最小化-VB资料 VB利用IE控件访问Internet VB利用IE控件设计简易浏览器 VB利用Mscomm32控件判断MODEM是否打开,或者正在工作,并且判断拨号时是否遇忙音 VB利用TAPI进行电话拨号 利用VB访问Internet 利用VB设计聊天室 char型怎么转换成String型?(答对结帖) 请问 哪位大侠有loadrunner的中文测试资料提供一下,非常感谢! JS和ASP的问题????? 高手指点 这样划分vlan可不可以???? 数据库超时 VB+SQl 2000 如何实现在程序运行时加减代码? 各位高手给我个提示有关手动添加消息映射的 关于EjbOBJECT和EJBLOCALOBJECT在使用上的区别?? 寻找中俄文转换的工具软件!急! 请问怎么把CLASS程序打包成JAR程序? 如何在VC中嵌入对Access表tableApp中纪录个数的统计(在线等)? 学习java到底有没有前途?? 关于ie6和ie5下使用javascript的问题??? 自定义函数返回值的问题 小问题:如何在VC中嵌入对Access表tableApp中纪录个数的统计(在线等)? 怎么没人理我啊?我好可怜!linux下线程池谁知道怎样实现,在哪里可以找到资料? 请教高手:如何把 Office Word 中的字(包括字体、字色、字类型等)复制到 java 中。急!在线... 挂双硬盘在CMOS中怎么设置? 沾边就给分,请问各位前辈,我想画一个框,并据一定的条件使它以两种颜色交替显示,退出时将其释放 不能用右键来另存图片 关于J2EE问题? 有没有这么一个函数:将一个double型变量按科学计数法的格式显示出来 升级的问题 难!请教关于随机分段计算并判断的问题。 请教:QT库怎么配?怎么看装没装上?里面都有什么? 请推荐一个国外的(英文)网站,类似与csdn的程序员网站!想提高英语水平 请问jsp程序在运行时出现的这个错误是什么原因引起的? ASP对字符串加密后,就认不到路径了,,, 如何在VSS中建立软件运行平台。 如何接收附件 学习java有什么好的资料,书,网站!! 一个简单问题,在线等待! 设计模式疑问,偶都快晕了~~~ 当前账户被禁用 歌词NO-18 爱上别人是快乐的事 吴俊霖 tomcat4中更新bean后需要重起,我受不了这种开发方式,以前3.2时就没有这个问题? 关于颜色的问题 有没有办法使对话框在一个指定的位置弹出来 当前时间的前一天怎么可以求算出来? 一天我把电脑上空余的空间合成一个盘(在98上运行),在98上很正常,但是我在xp里原来的e盘变成了i盘!!!郁闷!! 请问这样写对吗? function checkform() 上网小问题,全给分 请教:一个关于远程数据服务(RDS.DataSpace)的问题!急!急!急!问题解决即结帐。谢谢! 关于删除多个表的记录的问题? byte a; a = a + 1不对是可以理解的,但a++, 或者a += 1为什么是对的呢? 那位大哥告诉一下PL/SQL developer5 正式版的下载地址(全的),和注册码! 100分 SENTINEL SYSTEM DRIVER是什么东东啊? 有没有局域网控制每个客户打印多少的打印机软件? 在pb中如何运行pb自带的同步器,急急急急急急 钓鱼台国宾馆选拔服务人员 阵势犹如选香港举行“枕头大战”场面壮观习近平在海南会见多国总统 彭丽媛出席8岁男孩娶61岁老妇 南非男孩为已去窦靖童on the beach素颜自丽江大火铺天盖地 彩云之南遍地狼藉(郑州一超市女售货员被劫持 劫匪被控制记者暗访快捷酒店真相惊人 用洗脸毛巾南国花开艳 赏樱正当时上海虹桥LV大厦被称“靴子楼” 远观贵州西部局地发生春旱 41万余人临时北京风沙有多猛?竟吹动飞机美国现实版吸血鬼现身 现场炮制鲜血饮90后大学生毕业一个月后成千万富翁(周楚楚全裸透视装露半臀被批没节操 个2013国际旅游小姐特训营美丽蜕变[沈阳9级大风刮落高楼墙体 被砸轿车面上海:樱花树下旗袍秀 风情pk清纯各彭丽媛参观俄罗斯孤儿学校:代表母亲来“炒房客”撤离 温州楼市“高台跳水”上海首创在废弃深坑建五星级酒店P2P网贷企业踏上了烧用户的不归路小叶紫檀手串盘玩千万别这样,不然就惨能猜出三个以上的!!!你老了!李彦宏为什么要在30多岁的时候请员工钱袋躺着缩水后果很严重 如何保卫收益测试 | 什么是你的职场“毒药”这些年中国都结交了哪些“小伙伴”?做不到所谓的“正确”又怎样下一轮明星城市 这十个最有戏!【千年老成都,活力新少城】成都少城旧公募基金、私募基金的区别看这8个方面印度知名手机厂商山寨小米,出电商品牌微软:Mac可折价300美元换购Wi八妹上榜凤凰新闻客户端自媒体英雄榜,能力不如我,长得不如我,却挣得比我多我所知的股票真相(压了一年半,读后可上市公司频频出手P2P 并购现对赌协庞氏骗局的前世今生:美国史上最大欺诈俞敏洪:马云在专科与校花恋爱,我却在别人不会知道,你如何成了今天的你让银行破产的神器出现了!
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘