首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

系统架构设计师:大数据架构设计理论与实践--Lambda架构在某网奥运中的大数据应用

1.系统建设背景

某网作为某电视台在五联网上的大型门户入口,2016年成为里约奥运会中国大陆地区的持权转播商,独家全程直播了里约奥运会全部的赛事,令某网各终端网络播放量屡创新高,同时积累了庞大稳定的用户群,这些用户在使用各类服务过程中产生了大量数据,对这些海量数据进行分析与挖掘,将会对节目的传播及商业模式变现起到重要的作用。

2.数据需求与场景

里约奥运期间需要对增量数据在当日概览和赛事回顾两个层面上进行分析。其中,当日概览模块需要秒级刷新直播在线人数、网站的综合浏览量、页面停留时间、视频的播放次数和平均播放时间等千万级数据量的实时信息,而传统的分布式架构采用重新计算的方式分析实时数据,在不扩充以往集群规模的情况下,无法在几秒内分析出需要的信息。Lambda架构实时处理层采用增量计算实时数据的方式,可以在集群规模不变的前提下,秒级分析出当日概览所需要的信息。赛事回顾模块需要展现自定义时间段内的历史最高在线人数、逐日播放走势、直播最高在线人数和点播视频排行等海量数据的统计信息,由于奥运期间产生的数据通常不需要被经常索引、更新,因此要求采用不可变方式存储所有的历史数据,以保证历史数据的准确性。Lambda架构的批处理层采用不可变存储模型,不断地往主数据集后追加新的数据,恰好可以满足对奥运数据的大规模统计分析要求。

3.系统架构

某网采用以Lambda架构搭建的大数据平台处理里约奥运会大规模视频网络观看数据,具体平台架构设计如图19-13所示。

该平台基于Lambda架构,由数据集成层、数据存储层、数据计算层和数据应用层构成。数据集成层支持将PC端、App端和TV端采集到的用户行为数据进行整理,数据集成层分为离线数据集成和实时数据集成两部分。实时数据集成集群采用Nginx和Flume服务器对实时流数据聚合并传输至Kafka队列中,由Kafka将实时流数据分发至实时流计算引擎中分析。

离线数据集成集群使用开源组件sqoop 将数据不断追加存储到主数据集中,采用分布式列数据库Hbase存储主数据集。两个集群之间通过Kafka的Mirror功能实现同步。本平台利用云存储技术构建平台的存储系统,该存储系统不仅集成了分布式列数据Hbase、内存关系型数据库MemSQL,而且还增加了统一的监控管理功能和开放更多的访问接口。数据存储将结构化数据、半结构化数据以及非结构化数据储存于分布式文件系统中,且数据以三重副本的形式分布在文件系统,支持自动存储容错、系统错误监控、故障自动迁移等技术,确保数据的安全性和接近100%的数据可用性。

数据计算层为了实现I/O的负载分离,通过对实际业务解析,将数据计算层分为离线计算、实时计算和合并计算三部分。

(1)离线计算部分除了存储持续增长的批量离线数据外,还会定期使用 Spark和M-R对离线数据进行简单的预运算,将大数据变小,从而降低资源损耗,提升实时查询的性能,并最终将预运算结果更新到 Batch View。离线计算通过使用最新的Hadoop 节点驱动调度算法来保证数据量大的任务能得到较公平的获取计算资源,同时使用 Impala或者Hive建立数据仓库,将离线计算的结果写入HDFS中。

(2)时效性是大型活动难以解决却不得不面对的问题,在大型活动中的很多场景,数据会不断实时生成并累计,需要系统实时查询处理,实时计算部分正是用来处理这类增量的实时数据。为保证时效性,实时计算采用 Spark Streaming仅处理最近的数据,并将处理后的数据更新到real-timeview,它做的是一种增量的计算,而非重新运算。

(3)合并计算部分用于响应用户的查询请求,合并Batch View和 Real-time View 中的结果到最终的数据集。合并计算将内存关系型数据库MemSQL内的数据与离线预运算后的数据合并,写入分布式列数据库Hbase中,从而为最终的查询提供支撑。

4.应用效果

在数据展现层用户可以通过调用数据计算层的相应接口,简单快速进行算法编程,从而呈现出当日概览、赛事回顾等模块的信息。当日概览模块通过实时计算引擎中的 Spark Streaming,计算直播实时在线人数、地域和频道分布等信息,并实时呈现到前端界面中。在合并计算中查询网站的综合浏览量、页面停留时间、视频的播放次数和平均播放时间等增量数据。而对赛事回顾模块需要呈现的自定义时间段内的历史最高在线人数、逐日播放走势、直播最高在线人数和点播视频排行等数据的统计信息,可以使用离线计算模块查询这种不断追加的离线数据。

整理不易动动你发财的小手点个“在看”哦!

您的支持是我坚持的动力,谢谢

  • 发表于:
  • 原文链接https://page.om.qq.com/page/OGDfuzMCCreKdhzhTQD4O1qg0
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券