视频网站的Big Data解决之道
来自: 技术管理者大本营 - FeedzShare
发布时间:2011年08月12日, 已有 2 人推荐
文/姚键
概述
优酷作为一家大型视频网站,拥有海量播放流畅的视频。我们秉承注重用户体验这一产品技术理念,将绝大部分存储用在视频资源上。通过建设专用的视频CDN,建立了可自由扩展、性能优异的架构,在提供更好用户体验的同时优化了存储资源。在除视频资源外的其他方面,我们也累积了海量数据:仅运营数据,每天收集到的网站各类访问日志总量已经达到TB级,经分析及压缩处理后留存下来的历史运营数据已达数百TB,很快将会达到PB级,5年后数据量将会达到几十PB级。
如何更好地处理和分析这些海量数据,以挖掘出其中的价值?
挖掘数据中的价值
对企业来说,尤其是对于为用户提供服务的行业,仅提供基础服务已经越来越难应付日趋细化的商业模式。如何为用户提供差异化的优质服务成为这类企业必须解决的问题。而数据好比灯塔,能为企业指引前进的方向。互联网、电信、金融等行业都在加大数据的探索及应用力度,这为企业创造了可观的经济效益。
对优酷而言,通过用户的每次播放流程,我们都对页面浏览、评论收藏、视频播放以及播放时的各种操作进行了记录。经处理后的分析结果会反馈给不同的业务模块,对包括产品、内容运营、用户的个性化推荐及广告投放等方面的提升,都起到了关键作用。
网站页面、客户端的UI/UE的设计及效果,都需要数据进行支持。通过A/B测试系统,我们收集到用户对不同UI下的操作反馈,进而评估UI的改变对用户的影响。
内容方面,通过对用户网络情况的统计:每次播放是否发生了缓冲,平均下载速度是多少等,进行实时的统计和计算,获取每个地区每个运营商下用户的加载表现,以此来决定CDN节点的分布和分配策略,为不同地区、不同运营商的用户提供清晰流畅的视频服务。
在推荐方面,通过对大量视频播放行为的分析,归纳不同时长、不同类型、不同内容的视频之间的相互关联,挖掘不同人群用户的同质化观看习惯,对每次用户的观看进行有针对性的后续推荐,并借助后续数据的分析,迭代地改善现有服务,为用户提供量身定制的推送服务。
数据对于优酷的广告精准投放也起到了重要作用。优酷的广告系统支持对不同地域、频道、标签及人群等条件的定向投放。在投放策略上,我们本着尽可能不影响用户体验的原则,对于广告长度及投放频次都进行了限制。虽然这给投放造成了较大难度,但通过对各种细粒度的定向条件组合历史数据进行的分析,我们在广告投放方面已经相当准确。在投放阶段,我们实时分析用户属性、访问情况及当前广告投放量,对每次投放动态调整。
技术架构
下面以优酷的运营数据为例介绍我们的海量数据解决之道。我们的运营数据包括播放、用户交互、搜索、广告等,目前总计达数百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领域依旧会得到成型软件的支持。因此,海量数据时代的技术人员,机遇反而大于挑战:一方面需要从关注开发细节,转而关注各种新技术的特性;另一方面应该具备更深的业务抽象能力。只有具备这样的综合能力,才能让技术发挥更大的价值。