【遇见Doris】Apache Doris在一点资讯自媒体平台的应用

6月29日,Doris有幸得到中国信通院云大所、大数据技术标准推进委员会的支持,在中国信通院举行了0.11.0新版本预览线下沙龙。各位嘉宾都带来了干货满满的分享。关注Doris官方公众号,后台回复“0629”即可获取各位嘉宾分享PPT及现场录像。



 

今天是王迎信同学代表一点资讯自媒体平台带来的关于Apache Doris (incubating)的应用介绍。

 

9d97776d-4cab-41a1-b877-b00ae5e261cd.jpg


一点资讯自媒体平台的主要业务内容与自媒体、内容、审核、MCN、CPM、profile相关。本次,迎信将从工程业务的角度来分享使用Doris的经验。

 

需求背景


5163720e-1041-43cc-9d6e-ab947c6fd9b5.png


2018年年中,一点资讯自媒体平台接到了历史多维动态分析的需求。


所谓动态,是指维度表是有可能实时变化的。比如在自媒体场景下,自媒体有领域属性,此刻是科技领域,下一刻有可能会变成教育领域。


所谓历史,是指业务方需要知道任何一个时刻的具体值。例如需要知道某个自媒体在历史所由时刻的领域属性来进行业务分析。


所谓多维,是指在真实的业务场景中,自媒体维度可能达到大几十个。


而在此基础之上的
分析,需要支撑任何时间段、任意指定的属性的查询,并结合自媒体指标数据进行分析。


f81a574c-3c90-4320-84da-c5b4ed1625f2.png


自媒体平台遇到的主要困难包含这6个方面。原有的解决方案均表现欠佳。于是自媒体平台开始寻找新的OLAP系统解决这一需求。


Why Doris


01faafa7-1d4c-42a1-a9d2-eb2e20e106d3.png


选择Doris的主要原因是Doris提供良好的join查询,在多维、历史的动态查询情境下join是难以避免的计算操作。


Doris不仅支持明细数据,并且在响应时间、运维、学习成本等方面都有着很出色的表现。

 

应用Doris 到Nebula


6071e510-72d7-499f-9d0c-277edfa93c33.png


这是一张Nebula自媒体数据平台的架构图。整体来看可以粗略地将平台分为数据的同步查询两个方面。首先先对平台做一个简要介绍。

 

数据同步主要有四条线:

   MySQL

   导出全量数据的基础库,解析成响应的事实表和维度表

   订阅数据库变更日志(Canal,保证数据的有序性和一致性),并发送到Kafka以便适应多个消费者。

   Stream

   处理来自kafka的指标数据(百亿)

   来自MySQL产生的数据(千万)

   Hive

   利用hive同步HDFS数据到Doris中间表

   Doris:例如打标签)利用Doris统计出的维度数据再对Doris中的数据打标签

 

数据落地的结构和目的地

   落地结构

   多表、多源实时映射多维结果表(ETL)

   映射为中间表,供insert into select使用(某些不需要实时映射的数据,减少资源消耗)

   目的地

   Redis(近实时同步的数据,可最为其他表的参照表)

   Doris(本地文件使用Mini Load命令导入Doris)

   HDFS(备份数据到HDFS,使用Broker Load导入Doris作为Mini Load的补充)

   Kafka(可供其他系统处理)

   导入到其他库ES,Druid,MySQL,HBase

 

8b05060b-0953-4834-b5f6-c67cecffb7da.png


在这个过程中,一点资讯的同学也对数据同步的方案进行了优化。


原始的处理方案使用增量数据处理方案,使用多消费终端消费,并解析、join其他参照表的数据。这样的缺点是需要大量的机器进行数据处理,对于对于后续的扩展有硬性要求(扩展机器节点)。

 

经过改进,根据业务逻辑,把Topic分为两种,一种为实时性要求高的,对其他参照表数据维度实时性要求高的(如实时数据监控,每条数据均需要实时的维度数据)。对于这类需求使用原始的处理方案。


另一类需求为对实时性要求不高的业务,则选择始终Hive + Doris Join & Insert的方案。即使用Topic延时写入HDFS的数据,利用Hive预聚合(一些定任务),在Doris建立临时表,使用Broker Load导入Doris临时表,按照小时级别对表进行Join & Insert的方式导入到数据表中。


数据查询:

90e0435a-fdfd-4af9-b21a-f3b3b0c3bfeb.png


查询架构如图,在查询层一点资讯的同学也做了很多工作:

 

设计了Nebula查询协议

  • 抽象出查询字段、过滤字段、聚合字段、结果字段等信息,进行虚拟化

  • 扩展信息(比如前端页面显示结果的信息)


Logic Table虚拟表

  • 定义根据业务场景定义Logic Table,包括表字段,类型,取值范围等等。

  • 挂载多种实现的DataSource

  • route 、load balance、retry


Nebula编译器

  • 根据不同DataSource编译成不同的执行过程


特点

  • 解耦数据源、灵活切换、对上层透明


例子

  • Doris实现活跃账号表

 

监控


同时,一点资讯也构建了完整的监控系统。包括对Doris、Nebula流程的基础监控;以及基于异常数据波动、停更账号、异常文章等业务场景的业务监控。完善了整个平台的功能和体验。

 

使用心得


   维度数据尽量用数值类型

   join时子表尽量过滤数据以加快速度

   利用rollup满足各种需求

   缓存count数,当count计算结果不会出现变化且数据量非常大时可以提升效率

   利用冗余value字段:因为value会变化,因此可以利用value冗余来直接进行更新

   join表多副本

   单分区、复合分区并存

 



此次沙龙我们有幸邀请到了来自一点资讯、京东、搜狐、百度智能云的技术大牛带来他们的应用实践和开发分享。



其他嘉宾的分享会在近日放出,欢迎关注Apache Doris(incubating)官方公众号,后台回复“0629”即可获取各位嘉宾分享PPT及现场录像。




欢迎扫码关注:

e8e2fb3e-f2f3-4c87-99ce-80a0b2faf78c.jpg

Apache Doris(incubating)官方公众号


相关链接:

Apache Doris官方网站:

http://doris.incubator.apache.org

Apache Doris Github:

https://github.com/apache/incubator-doris

Apache Doris Wiki:

https://github.com/apache/incubator-doris/wiki

Apache Doris 开发者邮件组:

dev@doris.apache.org


本文分享自微信公众号 - ApacheDoris(gh_80d448709a68)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ApacheDoris

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值