作者:吴瑞诚
斗鱼是时下国内最大的游戏直播平台,日活用户达2000万,主播日活达40,000人,ALEXA全球排名约200名、国内约20名(高于优酷、Bilibili等站)。本文作者吴瑞诚,目前负责斗鱼数据平台部,本文中他将分享斗鱼大数据这块的玩法儿,包括斗鱼大数据平台的整体架构、斗鱼数据仓库、斗鱼个性推荐系统以及斗鱼风控系统。
这是一个典型的斗鱼直播间,是斗鱼最主要的内容形态:左边是视频区,上面飘过的文字就是弹(dàn)幕,直播网站上用户和主播互动的最主要形式。弹幕服务是性能压力最大的服务之一,相当于是需要百万人群聊时的消息推送量;视频区下面是礼物赠送区;右侧是弹幕区,Tab页上是排行榜,用户对该直播间的贡献值,土豪喜闻乐见。
1斗鱼大数据平台整体架构
14年加入斗鱼,当时负责的第一个业务是用shell脚本,从主站服务器上拉Nginx log到Hive集群中,统计产生报表。随着网站数据量的增长和配备约来越完备,从最开始的小系统越做越大,做到现在这个架构。
这个架构差不多是在16年初的时候成型的,主要包括:数据源层,用户行为打点、服务日志、Nginx/PHP日志(离线和实时两条数据流)、线上MySQL库、MongoDB、Redis存储数据接入层,包括了Kafka,负责接入打点上报(最大吞吐量约200w TPS)、Canal/Sqoop(主要解决数据库数据接入问题)、Flume/Logstash/rsyslog等实时日志;数据预处理层,简单的清洗和聚合计算;存储层,典型的系统HDFS(文件存储)、HBase(KV存储)、Kafka(消息缓存);计算层,主要包含了典型的所有计算模型的计算引擎,包含了MR、Hive、Storm、Spark以及深度学习平台比如Tensorflow等等再往上就是数据服务层,主要提供对外数据服务。这一块现在主要是基于Docker实现的一整套微服务环境来支撑。
大数据管理平台
下面先简单介绍一下各个组件的玩法,首先是大数据管理平台,承载所有的元数据管理、统一监控系统、报表展示、任务调度、发布系统等所有配套功能。
基础集群架构:
可以看到,清晰地区别了online 和offline 集群。
机器配置:
- 现负责约300台高配服务器,Dell 730xd,32Cores 128/256G内存,16*6T Sata Disk。
- Hadoop大集群150台物理机,5PB数据,日增量约20T。
实时离线集群分离,避免资源竞争造成业务处理抖动。集群分离后也可以更安全的对集群进行运维操作;使用Kafka作为MQ,更确切说是消息通道。
OLAP查询引擎Impala
Impala之前,我们有使用Presto的经验,后来因为运维上的问题,暂时下线了。Kylin15年很早的时候,在北京和kylingence官方有过一次深入沟通,仔细评估后发现斗鱼的场景不能发挥他的优势。最近Kylin重大版本之后,准备再评估一次。这方面应该有不少同学都有相关的经验,最后讨论阶段,大家可以一起聊一下。
可能对大数据组件不太熟悉的同学,可能对OLAP概念不太熟悉&#x