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

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

英特尔CEO:EUV光刻技术或助力芯片突破摩尔定律 从微软大数据日看到的,银行、交通、医疗实践之路 IDC:iPad市场份额遭Android平板蚕食 滑至29.6% [TUP第30期]直击移动应用开发难点 探讨跨平台最佳解决方案 用动态语言编写程序,命名更重要 命中率80%,磁盘I/O减半,Flashcache的发展史 这次它很低调:谷歌正式发布Android4.4和Nexus 5 iPhone 5S来了,iPhone 6还会远吗?概念机来袭 [开源推荐]PhysicsJS:基于JavaScript的强大的物理引擎 望虚窥实!专访Oculus Rift创始人Palmer Luckey 利益至上,开源也不免于此 开发者必备,超实用的PHP代码片段! 福利来了!AngularJS资源大集锦 移动周报:“360儿童卫士”手环的是与非 Ion Stoica和他的数据故事(上) 开发者必备:测试网站速度的五个免费在线工具 谷歌员工曝光在谷歌工作那些最糟糕的事情 MDCC 2013全民移动 玩转智能硬件展 如何降低白噪声对网站用户体验的影响? 谁才是真正的资深开发者? 东软董事长刘积仁阐述三大战略 构建以知识资产驱动的商业模式 一切皆为 JavaScript 黑莓:弃私有化任命华人为临时CEO 卖给联想的节奏? 谁说WP仍然不行?意大利WP份额已超iOS MDCC之移动娱乐游戏峰会:百家手游齐逐金玩奖 专访Mozilla宫力:基于Web是Firefox OS最大的资本 如何设计一款Java框架? AngularJS优化最佳实践:从1200ms缩减到35ms Linus Torvalds宣布Linux kernel3.12正式发布! 硅谷的技术文化——渴求独处! MDCC为移动开发者服务:一看、一聊、一聚 Oracle8i Release 8.1.5 原版电子文档(pdf)--- 谁要!!!!! 如何用delphi实现图像网络传输与存储?请高手介绍方法,包括用什么库,通过TCP/IP怎么办? 请教打印问题 一个菜鸟的提问 在BEAN中,System.out.println("yyy")为什么不能输出呀? 局域网接ADSL,如何限制用户上互联网? 如何不安装oracle的客户端用来连接服务器上的oracle数据库 请问哪有VC关于ADO编程的书籍下载? 关于组件的问题? 用DAO连接数据库,在我的机器上运行没问题,但在其它机器上一运行就挂 谁能告我liulee的个人网页地址呀?? 关于在浏览器中直接运行VB程序的问题 十万火急,我遇上两个奇怪的问题。答者重谢。 请问:如何使用toString? 各位,期待已久的简单任务来了!又是100分!(SQL Server 2000) 好累啊,想放弃了,但又无法回头! Java中,Inner class可不可以使用final修饰符? 谁能告我liulee的个人网页地址呀??急 请教如何在程序运行时修改dbgrid控件options属性中的关于多选控制和整行选择的两个属性? 请推荐UNIX方面的书籍 如何使用toString()方法,谢谢 菜鸟系列:一个简单的编译错误,但我不明白!救命啊!!!! 这就是标准?SJ/T11234 SJ/T11235培训纪实 在哪里看我现在linux系统中用的应用软件的版本号?比如wu-ftp sendmail等等! 操作系统版本不同问题 BCB下怎么调用WINDOWS API函数,急 cpu风扇不转的问题…… 游戏开发的高手或者3维建模的高手,是怎样开发人物模型的呢? 今天下午有没有去微软发布会的????马上回答 关于字体问题!请教会者不难者!!!!!!!! 請問怎麼定義小一點得符點數???? ReadFile超时返回什么? 我的机器装了2000server,2000profession 和NT4.0,现在机器空间不够想把nt4.0和2000profession 卸载,请问应该如何进行?? 怎样用PB代码实现在MDI窗口里的 Ctrl + Tab 的功能 ? 如何将静态库加入项目中,有头文件,SETING出也加入,为何说和系统的库重复定义 如何调用非mfc的程序调用mfc下开发的动态连接库, 请问谁有监测图片变化的部分代码?(在线等待) GetCurrentDirectory()?? 用ADo更新图片(bmp,jpg)难道只能将原来的数据记录删除后在添加吗?不能直接更新吗? 请大家帮忙解决一下循环体的问题!!:) 请问oracle 自己带的http server(实际上是apache)如何配置class path 给你100分(OLE) 我在制作一个网络浏览器时遇到一个问题,在线等你的帮助 公司不做软件了,失业了,高兴送分 JNI 中内存管理的问题 ehlib控件的问题,如何在表中的一字段显示一个列表?分可以加,,,在线等 大家帮我 c# 的一大难题? 一定加分! 十万火急~~谁有完整的网站计划书? 能不能给我一份,万分感谢! 高分求教不用ActiveSkin实现金山词霸类窗体和按钮效果。 用delphi编写的dll结果不能调用,谢谢你的回答!!! 碳酸钠和碳酸溶液中水的电离程度比较 关于自然界中霜雨露雾的形成,说法错误的是A云中有小水滴,他们是水蒸气升入高空时遇冷液化而成的B雾是漂浮在空气中的大量的水蒸气C露是地面附近的水蒸气液化成的小水珠D霜是空气中的 成长中的一件事作文600字 当光线垂直于水面射入水中,光的传播方向是什么,折射角为多少度,在折射现象中光路是什么的光的传播方向变吗在折射现象中光路是可逆的吗 光从空气中射入斜射入另一种介质中,入射光线会发生偏折,入射角大于折射角. 如果光从空气中射入真空中,入射角是不是会小于折射角.入射角和折射角的关系和介质的密度有没有关系?(请详 如何由实验证明该碱性由co3^2-水解引起 提供试剂包括na2co3 bacl2 naclthanks 当光线从空气中射入水中,光的传播方向会发生改变,这就是光的折射现象.(前面的都是废话,与题目无关)问题:图中的∠1和∠2是对顶角吗(这个我知道)试比较∠1与∠2大小.(∠1大∠2小 盛过石灰水的试剂瓶内壁有一层白膜,形成白膜原因? 怎样证明Na2CO3溶液呈碱性是由CO3,水解引起的 当光线从空气射入水中时,光的传播的方向发生了改变,这就是折射现象.图中∠1=∠ 长期存放石灰水的试剂瓶内壁上往往形成一层不溶于水的白色物质,要洗去该物质可选用A 水 B纯碱溶液 C洗衣粉 D稀盐酸 如何用一个实验来证明纯碱水溶液呈碱性是由碳酸根离子引起的,而不是因为钠离子可以选用仪器和试剂:试管 胶头滴管 酚酞试液 5%纯碱溶液 5%碳酸钾溶液 5%氯化钠溶液实验结论: 当光线从空气中射入水中,光的传播方向会发生改变,这就是光的折射现象∠1=43°,∠2=108°,试问光的传播方向改变了多少度?写错了,∠2=27° 长期盛放澄清石灰水的试剂瓶内壁往往附着一层白色固体.这层白色固体是怎样形成的? 碳酸氢钠和碳酸钠的碱性哪个强?请从水解角度说明 长期存放石灰水的试剂瓶壁有一层白色的固体物质,它是( ),形成白色固体的 化学方程式为( );清洗长期存放石灰水的试剂瓶壁有一层白色的固体物质,它是( 形成白色固体的 化学方程式为( ) 盛放石灰水的试剂瓶壁上有一层白色固体,该固体是?写出形成这种白色固体的文字表达式______,要洗去这层白色固体的物质可先加入______溶解,再用水冲洗. 为什么碳酸钠中的碳酸根离子显碱性?其他含碳酸根的化合物也显碱性吗? 盛放石灰水的试剂瓶放置时间长了,在瓶口会形成一些白色粉末.用化学方程式如何表示?(急) 下面关于物态变化的说法判断不正确是( )A.霜是水蒸气凝华而成的 B.冰是水凝固形下面关于物态变化的说法判断不正确是(  )A.霜是水蒸气凝华而成的 B.冰是水凝固形成的C.雾是水汽 水结冰时——体积如何变化? 盛放石灰水的试剂瓶放置了,瓶口会形成一些白色粉末少打字了,"放置久了" 关于阳光经过大气层的折射既然阳光经过大气层会向下偏折,那么为什么当太阳在水平面以下时就可以被看见呢?应该是在水平面以上还看不见.而且所有地区看到的日出都是提前的吗?应该是有 为什么光从空气射入水中时,折射光线向法线偏折? 长期盛放石灰水的试剂瓶壁上有一层白色固体物质,它是—— 光透过大气层时,会发生折射 这句话对吗 为什么激光从空气射入水中,折射光线向法线偏折,而固体(如一只筷子)从空气放入水中看,筷子是远离法线偏折的? 长期存放石灰水的玻璃试剂瓶内壁有一层白色物质,它是?形成原因是【用化学方程式表示】? 如果没有大气层对太阳光的折射 我们将晚看到太阳 为什么?如果没有大气层对太阳光的折射 早晨,我们将晚看到太阳 为什么? 光从空气进入水中为什么是向法线靠近而不是远离?最好具体一些,麻烦提一下原理, 在盛满三分之二水的杯子里放入5克盐,再放入鸡蛋,为什么鸡蛋会浮起来? 冰怎样转化成水蒸气/水蒸气怎样转化成冰/水怎样转化成水蒸气/水蒸气怎样转化成水? 一杯水,加盐后,鸡蛋是不是浮在水面上?一个杯子,放了盐,再加水,鸡蛋是不是在杯子的中间? 重100牛的水可以产生多大的浮力 为什么水的蒸汽压低于冰的蒸汽压冰就转化为水蒸汽压有减小的趋势吗?还是什么,.....我不知道 水结冰时——体积如何变化? 盛装有石灰水的试剂瓶,日久内壁会附着一层白色固体,要想清洗掉这层白色固体,常用的试剂是A用水洗 B热的纯碱溶液 C稀硫酸 D稀盐酸 乐可斯冰淇淋加盟天气预报就是应用大气变化的规律,根据当前及近期的天气形势,对未来一定时期内的天气状天气预报就是应用大气变化的规律,根据当前及近期的天气形势,对未来一定时期内 折射现象中,光在空气、玻璃、水中的角度大小关系是:______、______、______ 盛放石灰水的试剂瓶内壁会有一圈白色物质,这是应为什么?宜用什么清洗?CaCO3是什么 光在真空中的速度是[]米/秒,光线空气射入水中其速度将[] 自然光以布儒斯特角有由空气入射到一玻璃表面上,反射光是在入射面内振动的完全线偏振光.这句话为什自然光以布儒斯特角有由空气入射到一玻璃表面上,反射光是在入射面内振动的完全线 我身边的正能量 征文400字左右 久置的装石灰水的试剂瓶用盐酸清洗化学方程式 美居雅阁 天气预报就是应用大气变化的规律,根据当前及近期的天气形势,对未来一定时期内的天气状况进行天气预报就是应用大气变化的规律,根据当前及近期的天气形势,对未来一定时期内 谁能给我些正能量啊?我希望每天能量满满的活着 盛石灰水的试剂瓶壁上的白膜用盐酸清除的化学方程式 天气预报说明大气的什么情况 水结冰体积变大会产生什么危害?水结冰体积变大这种现象会产生什么危害?越快越好噢!^=^ 水结冰时——体积如何变化? 除去CACL2中的HCL用CACO3可不可以产生的H2O和CO2反应怎么办 水结冰体积变大有什么危害 实验室放石灰水的瓶中常有不溶于水的CaCO3,可加 除去,化学方程式为 酸碱溶液中水电离出的氢离子浓度怎么算图 Na2co3溶液中水电离的氢离子个数为什么大于Nahco3同体积同物质的量 注意是氢离子个数 解释自然界中:雨 云 雪 露 雾 霜的形成依次是 我身边的正能量作文600有具体事例 水结冰,体积变大,有什么危害? 自然界中“霜”、“雾”、“露”是怎样形成的,它们的形成过程有什么不同? 我身边的正能量 作文600
备案号:鲁ICP备13029499号-2 说三道四 www.s3d4.cn 说三道四技术文摘