姚键:视频网站的大数据解决之道

本文转载自《程序员》。

优酷作为一家大型视频网站,拥有海量播放流畅的视频。我们秉承注重用户体验这一产品技术理念,将绝大部分存储用在视频资源上。通过建设专用的视频CDN,建立了可自由扩展、性能优异的架构,在提供更好用户体验的同时优化了存储资源。在除视频资源外的其他方面,我们也累积了海量数据:仅运营数据,每天收集到的网站各类访问日志总量已经达到TB级,经分析及压缩处理后留存下来的历史运营数据已达数百TB,很快将会达到 PB级,5年后数据量将会达到几十PB级。

如何更好地处理和分析这些海量数据,以挖掘出其中的价值?

挖掘数据中的价值

对企业来说,尤其是对于为用户提供服务的行业,仅提供基础服务已经越来越难应付日趋细化的商业模式。如何为用户提供差异化的优质服务成为这类企业必须解决的问题。而数据好比灯塔,能为企业指引前进的方向。互联网、电信、金融等行业都在加大数据的探索及应用力度,这为企业创造了可观的经济效益。

对优酷而言,通过用户的每次播放流程,我们都对页面浏览、评论收藏、视频播放以及播放时的各种操作进行了记录。经处理后的分析结果会反馈给不同的业务模块,对包括产品、内容运营、用户的个性化推荐及广告投放等方面的提升,都起到了关键作用。

网站页面、客户端的UI/UE的设计及效果,都需要数据进行支持。通过A/B测试系统,我们收集到用户对不同UI下的操作反馈,进而评估UI的改变对用户的影响。

内容方面,通过对用户网络情况的统计:每次播放是否发生了缓冲,平均下载速度是多少等,进行实时的统计和计算,获取每个地区每个运营商下用户的加载表现,以此来决定CDN节点的分布和分配策略,为不同地区、不同运营商的用户提供清晰流畅的视频服务。

在推荐方面,通过对大量视频播放行为的分析,归纳不同时长、不同类型、不同内容的视频之间的相互关联,挖掘不同人群用户的同质化观看习惯,对每次用户的观看进行有针对性的后续推荐,并借助后续数据的分析,迭代地改善现有服务,为用户提供量身定制的推送服务。

数据对于优酷的广告精准投放也起到了重要作用。优酷的广告系统支持对不同地域、频道、标签及人群等条件的定向投放。在投放策略上,我们本着尽可能不影响用户体验的原则,对于广告长度及投放频次都进行了限制。虽然这给投放造成了较大难度,但通过对各种细粒度的定向条件组合历史数据进行的分析,我们在广告投放方面已经相当准确。在投放阶段,我们实时分析用户属性、访问情况及当前广告投放量,对每次投放动态调整。

video website Big_Data solution
图1 运营数据处理技术架构

  技术架构

下面以优酷的运营数据为例介绍我们的海量数据解决之道。我们的运营数据包括播放、用户交互、搜索、广告等,目前总计达数百TB,它们存储在数百台服务器上。我们主要使用的是内部专门开发的轻量级的分布式存储及数据分析框架,应用于一百台左右的服务器集群,目前仍在使用。另外我们搭建了一个1000个 Slot的Hadoop集群,并还在继续扩展。考虑到维护成本及扩展性,未来我们会将全部业务迁移到Hadoop平台上,以降低维护成本。另外基于 Hadoop及其上层的HBase、Hive等数据存储产品,我们会开发出一套数据处理框架,应用于整个数据处理系统。

如图1所示,根据业务类型的不同,我们收集到日志之后,按照不同时间策略先对数据进行清洗。不失真的原始日志,按规定的格式直接以文件的形式存储在 Hadoop上,数据清洗转换后的中间结果,会存储在Hive数据仓库上;而一些粗粒度的汇总数据,则写到MySQL、HBase等数据库中。

每天优酷的日常数据处理任务多达数百个,对时效性要求不同,任务的执行策略也不同。需要准实时查询的,我们可以提供延迟10分钟的数据;其他任务也根据优先级及紧急程度安排调度,而执行中的资源的分配由系统动态调整。

NoSQL探索之路

层出不穷的NoSQL技术,无疑是现在极其热门的领域,依托高可用性、高水平扩展性、高效存取及支持MapReduce等特性使其在应对Web2.0网站时比关系型数据库更加得心应手。

目前优酷大量数据依然存储在MySQL等平台上,这是考虑到关系型数据库大都经历了长时间的实践检验,比较成熟,遵循相同标准,能获得较好的支持。而且,主流关系型数据库也都积极尝试从海量数据等方面改进产品。此外,NoSQL分Key-Value、document、column、图等多种类型,特性各不相同,这种总称屏蔽了彼此之间的差异;而且各NoSQL产品还在不断变化,甚至API也有所更改,这在技术掌握上及维护上成本较高,毕竟找一个懂 MySQL及SQL的开发工程师比找一个MongoDB专家要容易得多。

尽管如此,仍阻挡不住我们对NoSQL产品进行尝试的热情:一方面对不同业务应用适合的产品,另一方面对同类产品也在做评估对比。目前优酷的在线评论业务已部分迁移到MongoDB,运营数据分析及挖掘处理我们在使用Hadoop/HBase;在Key-Value产品方面,我们也在寻找更优的 Memcache替代品,如Redis,相对于Memcache,除了对Value的存储支持三种不同的数据结构外,同一个Key的Value进行部分更新也会更适合一些对Value频繁修改的在线业务;同时我们在搜索产品中应用了Tokyo Tyrant;对于Cassandra等产品我们也进行过研究。可以说,我们会一直持续关注NoSQL技术,未来可能会根据需要选择合适的产品应用到实际业务中。

目前NoSQL技术依然处于发展阶段,只有少数蕴涵优秀的技术,并最终幸免淘汰,与其他数据解决方案一起生存下来,未来也许会有新的NoSQL产品出现。开发人员,尤其是各大公司的技术团队在使用NoSQL项目的同时,根据使用经验,会对一些针对特定使用场景的特性及服务加以抽象并实现,形成类似于基于Hadoop平台的Pig这类衍生项目。在这方面未来的发展潜力是巨大的,比如在BI领域,目前的NoSQL产品与现有BI产品几乎没有交集。将来一些NoSQL产品应该能够通过现有主流BI产品直接访问,或者提供自己的BI模块。类似的功能也许会形成新的标准,颠覆现有开发模式。

机遇大于挑战

海量数据时代对企业的影响,并非直接来自数据,而在于社会的飞速进步及不断涌现的商业模式。2007年,微软CEO鲍尔默说,Google公司现在几乎是每年翻一番。优酷从起步,到刷新5年多来美国IPO最大涨幅纪录,只用了短短4年时间。而随着变革速度不断加快,各企业掉队落伍的可能性已明显增大。从海量数据中挖掘潜在价值,分析行业趋势,在短时间内更新业务模式,优化产品和服务,提升核心竞争力,将是企业需要持续解决的课题。

随着数据量越来越大,并行计算得到了越来越普遍的应用,新技术的产生使得技术选择多元化,学习成本有所提高;同时,在学习之后的应用阶段,开发、测试及维护成本都大大降低,数据分析、挖掘及BI领域依旧会得到成型软件的支持。因此,海量数据时代的技术人员,机遇反而大于挑战:一方面需要从关注开发细节,转而关注各种新技术的特性;另一方面应该具备更深的业务抽象能力。只有具备这样的综合能力,才能让技术发挥更大的价值。

展望

目前,企业所掌握的数据,还远没有达到最细的粒度,随着技术的发展和设备的廉价化,未来企业能够收集到的数据还将呈非线性增长。能够为运营提供支持的新维度、新指标也会被继续发掘出来。分析的难度随着维度和指标的增多不断加大,传统的数据挖掘及BI产品将越来越难满足需求。

在应对海量数据的计算模型方面,目前MapReduce成为主流,大多数平台和产品都在应用MapReduce。而未来,也许会有更好的或者针对特定领域更好的计算模型出现。目前Google在图处理方面,已在使用Pregel模型;Yahoo!也在开发新一代的MapReduce模型,以期从可靠性、可用性、可扩展性、向后兼容、延迟及集群利用等方面,对现有模型进行改进。这类改进会进一步提高海量数据的计算效率。

并行计算及分布式系统未来的产品线应会不断丰富。风靡一时的Hadoop并非完美,高吞吐量造成的高延迟、处理时的资源浪费等,也都会是使用者需要考虑的问题。会不会有替代品出现,让我们拭目以待。

对于具体企业,不同企业可能选用不同的解决方案。一些中小企业,通过购买SaaS服务,将数据提供给第三方服务商处理。服务商通过对多家同行企业的数据分析,寻找共性,再反馈给企业为其创造更大价值,实现了平台提供者和使用者的双赢。另外一些企业会通过租用PaaS及IaaS服务的方式,将相对不敏感的数据放到公有云上处理,以节约设备采购及维护成本。对于企业的敏感数据,会通过建立私有数据中心,搭建私有云来处理,而同时也会考虑用公有云平台进行互补。最终结果,数据会向一些大的节点集中,而大的节点也更有能力从掌握的海量数据中挖掘有用信息。这些信息通用性强的部分会被共享出来,服务于社会。

对于优酷来说,仍处于飞速发展阶段,已经在考虑未来自建数据中心,提高数据处理能力,从网站的运营中发掘出更多信息,为用户提供更好的视频服务。

作者姚键,优酷CTO。2006年加入优酷,带领技术团队自建CDN网络,同时在产品设计、WEB开发、底层研发、广告系统、无线业务、运营维护等方面全面发力。曾在ChinaRen、搜狐、新东方在线、51Credit等互联网站任技术管理职位。

1 收藏 1 评论

相关文章

可能感兴趣的话题



直接登录
最新评论
跳到底部
返回顶部