vlambda博客
学习文章列表

让美团、京东、搜狐都说好的数据仓库,牛在哪?

守着金山讨饭吃,乍听有些不可思议,但不少企业正遭遇这样的窘况。


数据被誉为“新石油”,如何管理并洞悉数据的价值,是企业未来发展的核心竞争力。进入大数据时代,数据规模与日俱增,如果没有一款性能强大的数据仓库,企业不仅难以抵挡海量数据带来的各种挑战,还会在瞬息万变的市场环境中迷失方向。



而有些企业在面对海量数据时却能从容应对,他们又有哪些制胜法宝?今天,就让我们一起回顾下,美团、京东、搜狐等企业,如何应对大数据带来的各种挑战。


美团——节约计算资源,提升开发效率


作为国内领先的生活服务电子商务平台,美团每时每刻都需要处理大量的订单及商品信息。而在2017年年底,美团已经维护了Kylin和Druid两个开源系统,Kylin主要满足离线固化多维分析的需求,Druid主要满足实时多维分析的需求。


但由于Kylin和Druid都是基于预计算的系统,没有保留明细数据,无法进行明细查询。为此,美团于2018年初,开始调研当时开源的ROLAP系统,并进行落地。


美团当初主要调研了SQL on Hadoop、TiDB、SnappyData、ClickHouse和Doris等系统,这些都是优秀的开源系统,且都有其实用场景,选型主要从功能、架构、性能、易用性、运维成本等几个维度来分析。


让美团、京东、搜狐都说好的数据仓库,牛在哪?

为什么没有选择这些系统的简要说明


通过综合对比,美团技术团队最终选择Apache Doris(Incubating)。对用户而言,Apache Doris(Incubating)功能强大,易用性好;对于平台侧而言,Apache Doris(Incubating)易运维、易扩展和高可用:

  • 易运维指Apache Doris(Incubating)无外部系统依赖,部署和配置都很简单;

  • 易扩展指Apache Doris(Incubating)可以一键加减节点,并自动均衡数据;

  • 高可用指Apache Doris(Incubating)的FE 和BE 都可以容忍少数节点挂掉。


让美团、京东、搜狐都说好的数据仓库,牛在哪?

    美团点评2018年Doris服务现状


变化维表的Join是外卖业务很典型的一个应用,为了满足个别历史数据查询的需求,就必须重刷几百天的历史。这带来大量计算资源的浪费,且数据冗余比较严重,开发效率低下。


在应用Apache Doris(Incubating)之后,只需要按天同步事实表和维表,查询现场Join就可以。不需要每天重刷历史数据,开发效率提升明显。在保持查询性能不变的前提下,Apache Doris(Incubating)在导入速度和存储效率上都有了很大的提升。


京东——圆满完成618大促期间的报表业务


每年的618大促,都是对京东技术团队的一次“大阅兵”。京东广告平台有上百张报表,每日百亿级别的聚合结果增量,需要保证查询效率与实时性的统一。


过去主要的开源解决方案是SQL on Hadoop 生态,但Hadoop方案整体依赖模块过多,对业务团队来说,运维成本高;如果使用公司大数据平台提供的Hadoop环境,难免与其他团队共用,查询效率与稳定性难以保证,对查询延迟要控制在毫秒级的报表需求更是无法满足;如果自建Hadoop环境,自己维护,又会出现运维压力太大的问题。


通过多方对比选型,京东最终选择了Apache Doris(Incubating),主要有以下几个关键优势:

  • 谷歌Mesa理论支持,百度工程实践。并且已经进入Apache基金会孵化,未来可期,并且后续开发维护有保障。

  • 完善的功能支持,标准MySQL协议。因为Apache Doris支持MySQL协议,现存的很多外围MySQL功能模块都可以使用,整体使用都很方便。并且原有的MySQL数据库的用户迁移成本很低。

  • 高并发、高QPS支持因为核心代码全部使用C++实现,性能方面要优于其他语言。另一方面良好设计也保证Apache Doris在应对高并发时性能要优于其他开源产品。

  • 方便运维,架构清晰只有FE和BE两个模块,外部依赖少。可以专心维护Doris系统,其他ETL的工作可以交给业务部门处理,解放了人力。



在618大促期间,Doris提供了非常稳定的线上服务。在线进行了稳定的schema change,全程无事故。在导入方面,支撑100亿行/日的增量,导入峰值达到2000w/分钟,秒级导入延迟。


在查询方面,支撑了4000w+的每日查询,TP99仅为150ms。大促期间QPS峰值3000+,压测阶段峰值达到1w+。


搜狐——开发流程极大简化,数据查询非常方便


作为四大门户之一,搜狐在国内是家喻户晓的名字。搜狐智能媒体,主要是对搜狐主站的文章进行管理、展示和推荐。其数据业务分为两部分:一是传统的BI业务,包括数据报表、多维分析、数据挖掘等;另一部分主要是和文章相关,包括文章搜索、DMP、打标签等。


根据业务需要,数据处理计算范型主要分为两大部分:Batch层和实时处理层,实际上就是目前典型的Lambda架构。为此,搜狐团队希望找到一个开源工具可以满足交互式查询和实时数据统计。


搜狐对主流开源产品做了比较


通过综合对比,Apache Doris(Incubating)最终走进了搜狐团队的视野,显著优势如下:

  • 首先是元信息管理和存储,部署简单,自依赖;

  • 对于存储层,数据分区比较完善,支持Range分区和Hash分区,有强大的rollup功能,支持Stream load和Batch load,可以针对实时和离线数据场景,可对接Mysql、HDFS;

  • 对于查询层,支持MySQL协议,可以说是使用零成本,方便迁移,查询功能也很完善。


根据搜狐现有业务需要,统计每5分钟粒度的PV UV汇总数据;统计每个5分钟时间点的当日累计PV UV;查询当日及历史30天内数据,作为对比;查询需要秒级响应;数据延迟要求控制在5分钟内;原始数据约2000万/5分钟;业务需求特点-统计分析维度固定:a/b/c/d ; a/b/c。


过去原始方案是通过Spark Streaming + Redis + MongoDB来实现的。但该方案存在诸多问题:如针对每个查询维度组合,生成一个Spark处理任务,对用户后续的需求不能很好满足;Redis压力很大,导入任务运行不稳定,经常延迟;流程复杂,依赖多个系统,调了很长时间都难以稳定下来;时间维度只能使用Processing Time,无法使用实践真实发生的时间Event Time,数据计算无法保证准确性等等。


在将其迁移到Doris后,查询时就简单很多,只需导入一份数据,就可以支持多种维度组合查询。目前,根据业务情况,批量导入约10万行/秒,总共两千万行数据可以快速导入,线上使用以来未遇到延迟问题;聚合后数据800万行/天,单日查询延迟约2秒。开发流程极大简化,数据查询得到巨大提升。


以上就是美团、京东、搜狐等大厂在数据处理方面的实践运用。


自2008年第一个版本发布至今,从过去只为解决百度凤巢报表的专用系统,已经成长为目前国内唯一的分析型数据库孵化项目,Apache Doris (incubating) 已经陪伴所有用户走过了12个年头。一路走来,Apache Doris (incubating)初心未改。

推荐阅读