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

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云创新产品与应用项目征集,欢迎研发者、团队和创业企业参加! 

Google Glass从X labs“毕业”,更换项目负责人 不进化,则消亡——互联网时代企业管理的十项实践 RedMonk 2015年1月编程语言排行榜:进击的Swift! 微信开放JS SDK,这场web巨变意味着什么? 盘点一些iOS开发技巧:Swift和Objective-C 2014年,那些“颜值”爆表的UI动画 《近匠》爱加密:谁说iOS应用不需要保护? SwiftColorArt:开源易用的Swift图片类库 人气爆棚 干货满满 中国电信天翼开放平台开放日圆满落幕 必须Mark!43个优秀的Swift开源项目推荐 治拖延、疗懒癌!安利12款提高工作效率工具 把ES6带进Node社区 Io.js 1.0.0正式发布 Java 2014:10个最热门、最具争议性的话题 回顾:2014年最流行前端开发框架对比评测 实例讲解SQL注入攻击 调试大规模服务器集群的五大策略 .NET编译平台Rosly将迁移到Github Wasai虚拟现实头盔与体验馆发布:虚拟现实的线下经济 订票系统不再瘫痪 阿里云确认与12306合作 Apple前工程师Warren Moore:Swift中Metal使用初体验 手把手教学:详解Swift中的iOS设计模式 见微知著,那些触动人心的应用细节设计(一) 设计优秀API七大要诀 需求 细节 BI项目成功的五大要素 BI项目成功的五大要诀 最受程序员欢迎的公司榜单发布:2015 IT人才招聘趋势分析 Swift中的指针操作及使用 Android性能优化典范 专访Google涂鸦首席设计师Ryan Germick:为什么世界需要Doodle? 不炒作就会死!小米乐视生态布局的那些爱恨情仇 100个iOS开发/设计面试题汇总,你将如何作答? 如何获取DropDownlist的SelectedItem.Text? lirun(笨笨狗)请进来领分 怎么得到数据库中的id值。 有点痛,不知道是什么病,大家帮忙看看 GOOGLE被中国"冷处理" 请介绍一本好一点的Winsock函数编程的书,电子书或者纸书都可以 关于全局CDatabase; mysqldump备份数据库时总是出错? 谁有http://211.100.6.72的源代码最好有附带的数据库连接说明。200 在2000server上安装oracle的问题,求教! 怎样深层理解delphi的类变量 数据库中日期范围怎么比较? 如何将Access的数据导入SQL-server 散分了,高手请进---.net不能够bug ???怎样在Delphi中对导出到Excel文件单元格进行划线???? 在VB中如何进行程序的数据输入有效性验证? 请上次回答我NT问题的同志进来拿分,上次只给了100 如何学winzip那样,在弹出菜单中增加一个新的项目 英国有好点的软件公司吗? 高分求救水晶报表问题? 从数据库中取最新的第10~第20条纪录的sql语句如何写啊?各位大侠帮忙啊 记录集问题 sco unix下可以运行tcpdump吗? 无法启动X,出现cound not init font path element unix:7100,removing from list...could not open default font 'fixed' 请问是否可以在VC++下编写一个声音程序,如何编写?(只要能发出一个或两个音符就可以了) 程序员今年还可以报吗? 在flash里面,用什麼命令,可以把gif變成矢量圖?? 怎么用TC编写一个显示320*240的16色位图的程序? 用什么函数可以得到msflexgrid的行号(row的值)? 请朋友们帮忙推荐几本PB8的关于B/S和三层结构编程的书 网上邻居的问题! 在ASP.NET中,控件好像不能被设置成控件数组,请高手回答 Word文章被锁定了! 非常奇怪的数据连接问题 乐晕了,散分! 数据库问题 韩国公司展示防性侵袭的贞操内裤(图文) asp+oracle中关于字符串相加的问题。 各位大哥,我对sybase很陌生,有几个简单的问题想请教,很急,在线等待!!! 有msdn的请进! 杭州程序员一个月多少钱啊 网上邻居求救啊 有没有DOM方面的资料呀 VC的Maximize Speed优化到底优化了什么? 动态建表 向各位高人求救 页面转移的问题,轻松拿分 问一个困扰我很长很长时间的问题(关于类库的)!! 名词解释!!!! vb程序打包,第一次!!!问题啊!!!?????(第二次提问!!!!) java的WEB应用中是否能够调用其他本地的客户端 ? 肠炎病人身体脱水后必须采取静脉注射生理盐水为什么复习生物是的问题,谢谢··肠炎病人身体脱水后必须采取静脉注射生理盐水是因为( ) A 生理盐水有利于组织细胞利用 B 生理盐 高中政治如何理解唯物辩证法的辩证否定观?它要求我们应该怎样做如何理解唯物辩证法的辩证否定观?它要求我们应该怎样做 化学平衡题中的恒容和恒压的区别,在平衡时两者导致什么不变?变量又是什么? 患了肠胃炎的病人,医生往往要给他注射生理盐水,是为了( )A 维持体内水分的代谢平衡 B 维持体内水和无机盐的代谢平衡 C 维持体内无机盐的代谢平衡 D 调节体内血糖的浓度 可持续发展观的主要要求(政治题)可持续发展观的主要要求是什么?(政治题)不确定的请不要回答,要求权威回答,谢谢.这是一道政治题,请按照政治题的答题格式答题,按照政治课本的要求 电烙铁可以焊比较精密的电路吗!我mp4 usb 接口脱焊想DIY 不知一把电烙铁能否搞定,我怕搞短路!我坚决不找维修人员.DIY 一向是我的态度:: KMnO4氧化kI实验中H2So4的作用 世界上最大的洲是亚洲最小的洲是大洋洲亚洲的面积比大洋洲面积的4倍还多812万平方千米大洋州的面积是多少 没有烙铁怎么焊接 有什么 东方小故事 亚洲的面积比大洋洲面积的4倍还多812万平方米千米问大洋洲的面积是多少万平方千米 人体产生的代谢废物为什么必须及时排出体外急急急急急急急急急急急急急急急急急急急急急急 有关08年我国发生过的重大事件作文,如四川地震、北京奥运会、北京残奥会及神舟七号发射成功 亚洲的面积比大洋洲面积的四倍还多812万平方千米求大洋洲(简单方程) 八大行星内有水分的星球 铁离子、亚铁离子、氯离子、氢离子、硫酸根离子是否能共存?为什么?在线等… 人体中有多少必需元素,多少微量元素,失去平衡会得什么疾病? 世界上最大洲是亚洲亚洲是面积比大洋洲面积的4倍还多812万平方千米,大洋洲的面 铝有那些性质(要求设计实验证明,说清实验现象) 东方时事评论2010年8月20日 世界上最大的洲是亚洲,亚洲的面积比大洋洲的面积的4倍还多812万平方千米,大洋洲的面积是多少万平方千米要算数方法 方程我会 学完方程把算术方法忘了 汽轮机水冲击的危害有哪些如题,汽轮机水冲击的危害主要有哪些呢 墙里一共二根线,以前是单独控制一个灯的,现在想换成五孔带开关插座,开关控制灯,插座独立使用问了一下人,说不能这接,只能要么控制灯,要反就插座,不能两全其美,如果能怎么接, 为什么真空高汽机做功能力强 汽轮机发生水冲击时,有哪些象征? 羧酸A(分子式为C5H10O2)可由醇B氧化得到,A和B可以生成酯C.符合这些条件的酯只有四种.请写出结构简式 问一个字~上下结构的,上面有两个“目”下面一个“空”,大家有谁知道叫什么吗~同上~字典真的没有查到目目空 简述汽轮机发生水冲击的象征? 分子式为C5H10O2的酯共有几种如果,先拿出一个官能团酯基,剩C4H10,先碳链异构共2种,然后官能团异构,总共只有4种。这种思路对不对啊? 请问你有制作恒温烙铁的电路图吗?24伏的 CAO2+K2SO4+KI=?应该会有碘生成求具体方程式 化学式为C5H10O2羧酸A可由醇B氧化得到,A和B可生成酯C(相对分子质量为172),符合此条件的酯有几种希望写得详细点儿 为什么最近频频发地震?是不是世界末日要到来了? 我应该装多大的漏电保护器和空气开关?我家电表是2.5(10)A,电线是4平方毫米单股铜线.室内线分为两路:一路接有电磁炉(最大1900W)、电饭煲(650W)、洗衣机(450W)、冰箱(100W)、电视(120W)计3220W;另 KI溶液与H2SO4酸化的H2O2反应的方程式 八大行星中,离地球最近的行星是什么? 当正常人体感觉到冷时,通过神经和体液调节,可使:当正常人体感觉到冷时,通过神经和体液调节,可使 A.促甲状腺激素分泌减少 B.汗腺分泌量增加 C.皮肤毛细血管血流速度加快 D.有机物氧化分 化学式为C5H10O2的羧酸A可由醇B氧化剂得到,A和B可生成酯C(相对分子质量为172)化学式为C5H10O2羧酸A可由醇B氧化得到,A和B可生成酯C(相对分子质量为172),符合此条件的酯有几种?A.1种 B.2种 八大行星中离地球轨道最近的两颗行星是( )和( ). [关于物质的量浓度]V L Fe2(SO4)3 溶液中含a g 硫酸根离子V L Fe2(SO4)3 溶液中含a g 硫酸根离子,取此溶液 V/2,用水稀释成V /L ,则稀释后的溶液的 三价铁离子 的 物质的量浓度为 ( )A.a/576 mol/L B.125a/ 硫酸根离子和H离子和Cl离子和次氯酸根离子能共存吗 八大行星中体积最大的是什么星球 V 升Fe2(SO4)3溶液中汗Fe3+ m 克,则溶液中硫酸根离子的物质的量浓度为? 急!求各位高手 [例1]下图是一种分子式为C4H8O2的有机物的红外光谱谱图,则该有机物的结构简式为:红外光谱谱图 怎么看 化学平衡的移动如何理解 急性肠胃炎患者严重脱水是,为什么要注射生理盐水是为了维持身体什么的代谢平衡 在强酸溶液中亚铁离子,典离子,硝酸根离子和次氯酸根离子能不能大量共存 怎么理解化学平衡移动? 烘箱实验的原理和目地是什么 人体大量饮入生理盐水,尿量怎样变化,为什么会这样?机制是什么? 汽轮机除了用水蒸汽外还可以用其他低沸点液体吗? 得了急性肠胃炎为什么要通过静脉注射生理盐水? 快速注射生理盐水后尿量的变化 图中那个电路图我要用电路板和电烙铁把它焊出来,第一次做,请问那几个地该接哪里啊?这个我只要用几根导线把芯片和电阻电容电感连接起来就行了吧?求指导, 要做一个土壤微生物实验,如何取其土样? 大量饮用清水,大量静脉注射生理盐水,大量静滴甘露醇,尿量分别有何变化,为什么? 如图所示的四个电路中,R为电烙铁,为了使电烙铁在不焊接时烙铁头不致过热,但又 急性肠胃炎的患者严重脱水时,为什么要注射0.9%的生理盐水A维持体内蛋白质代谢平衡 B维持体内水代谢平衡C维持体内糖类代谢平衡 D维持体内盐代谢平衡 太阳系八大行星中,体积最大的行星是 关与化学平衡的恒压与恒容的区别,细致,需要非常细致的讲解,麻烦了.谢谢.
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘