【遇见 Doris】4.13 线下开发者沙龙分享 -- 微博团队
这次的 Apache Doris (incubating) 0.10.0 开发者沙龙在中关村国际会议中心圆满结束,各位嘉宾都带来了干货满满的分享。近期小编会给大家带来精彩的现场回顾和视频录像,敬请期待!现场录像请见文章最后链接分享。
今天是马骎同学代表微博团队带来的关于 Doris 在微博的应用和分享。
本次 Doris 开发沙龙迎来了来自微博平台研发 Feed 组的工程业务团队,微博上的关注流和转评赞互动背后都有他们的技术支持。基于对业务数据关注的希望,他们从 17 年初开始做数据方面的建设。目前系统已经应用了 Kafka、HDFS、Spark 等,当然还有 Doris 在其中起到重要的作用。本次分享将从业务工程的方向给大家带来不一样的视角和应用分享。
微博团队在 2018 年 1 月开始调研 Doris,进行功能、性能方面的评估;2019 年初正式引入生产环境。微博目前总共部署两个 Doris 集群,部署规模在 40+节点。上图展示了 Doris 在微博部署的具体规模,可以看到服务器除了磁盘容量上的差别外,配置基本同构。
部署方法上,微博团队采用 Docker 容器的方式部署 Doris,同时也给 Doris 建立了服务池,保持其他业务运维管理的一致。
Doris 目前在微博主要承接了阅读互动相关方面的数据支持的需求,单天写入规模大致维持在 4~5 亿条这个量级。
Doris 在微博的应用场景主要分为 3 类。
首先是存储微博阅读数等历史数据。微博上实时展示的阅读数据,经常面临来自不同媒体的质疑。为消除质疑,需按分钟存储各条微博的互动状态以及阅读量等数据,以便查询审计之用。引入 Doris 存储此类数据,可大大提高查询效率。
应用于多维分析和监控。之前的业务监控使用 graphite,但是想做一些多维分析的时候比较困难。后来应用 Doris 做存储,可以实时看到数据上的刷新和变化,对掌握业务的情况有许多的帮助。
热点内容的实时统计。每分钟导入评论最多的 2000 条微博进入 Doris,实时统计一段时间区间内的微博热点。
目前微博数据流可以分为实时和离线两条处理方向。实时和离线数据流的起点皆是 Kafka,实时数据流经过 Spark/Flink 的流处理,实时灌入 Doris,以供查询;离线数据流经 Spark/Flink 计算之后,写入分布式文件系统 HDFS,再以例行任务的形式经 Spark 写入 Doris。
至于 A/B Test 的计算数据也可以通过类似方式随时导入 Doris 中,为后续评估提供数据。
应用实例-微博阅读数
微博互动日志以分钟粒度现在 Spark 中进行计算,而后以 Mini Load 任务的方式推送到 Doris 中,进行实时的微博阅读数据展示。这种追踪粒度也可以为热点应对提供数据支持。
应用实例-多维分析
在业务中需要支持多维分析,恰巧这也是 Doris 最擅长的。于是微博团队开发了一个基于 Doris 的多维分析工具。把日志导入到 Doris,定义一个表,将多个维度作为 key 并预留多个 value 列,应对不同维度数量需求,然后在外部维护。通过这个工具,不论是离线分析的还是实时的分析都非常方便,这都依赖于 Doris 快速查询的性能。
应用实例-简单计算
想了解当前一段时间区间内,评论互动最多的微博,就需要倚赖此项计算功能。图中的事例就是 5 分钟内,受到评论最多的微博列表。每分钟将评论最多的 2000 条微博导入 Doris 中,再辅以 SQL 查询,即可轻松得到相关信息。分钟级别时效性分析也能有效帮助平台方监控微博的实时流量动态。
Mini Loadd 队列机
Mini Load 队列机的由来
微博引入 Doris 的时间比较早了,之前版本在导入时总会遇到一些问题,稳定性差、主要任务卡死、不便于导入太多任务,因此便开发了 Mini Load 队列机来增强导入性能。
Doris 0.9 的开源版本中提供 Broker Load 和 Mini Load 两种导入方式。Broker Load 用以解决大批量离线文件的导入,Mini Load 针对小批量文件的快速加载需求。微博数据分析对时效性比较敏感,数据写入都采用 Mini Load 方式予以进行。
微博平台计算采用的 Spark/Flink 都是纯流式接口,为了弥补 Spark/Flink 的 streaming 和 Doris Mini Batch 之间的差异,平台方特别提供了 Mini Load 队列机的机制。通过 Mini Load 队列机,大幅减少 Doris 的扇入扇出,提高整体吞吐。
微博数据先落到 Kakfa 中,随后 Flink 逐段读取 kakfa,并写入到 HDFS 中。当文件按分钟粒度进行合并之后,写入相应任务到队列机中,进行调度、消费数据。
Doris 在 0.10.0 版本中,会发布 Streaming Load 的功能,届时即可使用此功能接收 Spark/Flink 的数据流。
现场录像指路⬇️
百度网盘:
https://pan.baidu.com/s/1N6kIHVmk1vbHyZns_ZpL2Q
提取码: crah
有关其他嘉宾的详细分享内容会陆续发出,敬请期待。欢迎关注 Apache Doris 官方公众号!
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源创计划”,欢迎正在阅读的你也加入,一起分享。
版权声明: 本文为 InfoQ 作者【ApacheDoris】的原创文章。
原文链接:【http://xie.infoq.cn/article/2be3519babf5f1c528a33823c】。文章转载请联系作者。
评论