Apache Doris介绍

Doris 是分布式、面向交互式查询的分布式数据库,主要部分是 SQL,内部用到 MPP 技术。

什么是 MPP?

MPP ( Massively Parallel Processing ),即大规模并行处理,在数据库非共享集群中,每个节点都有独立的磁盘存储系统和内存系统,业务数据根据数据库模型和应用特点划分到各个节点上,每台数据节点通过专用网络或者商业通用网络互相连接,彼此协同计算,作为整体提供数据库服务。非共享数据库集群有完全的可伸缩性、高可用、高性能、优秀的性价比、资源共享等优势。简单来说,MPP 是将任务并行的分散到多个服务器和节点上,在每个节点上计算完成后,将各自部分的结果汇总在一起得到最终的结果 ( 与 Hadoop 相似 )。

Doris 主要解决 PB 级别的数据量(如果高于 PB 级别,不推荐使用 Doris 解决,可以考虑用 Hive 等工具),解决结构化数据,查询时间一般在秒级或毫秒级。

Doris 由百度大数据部研发 ( 之前叫百度 Palo,2018年贡献到 Apache 社区后,更名为 Doris ),在百度内部,有超过200个产品线在使用,部署机器超过1000台,单一业务最大可达到上百 TB。

Apache Doris主要负责京东的广告平台报表业务,京东的广告平台每天支撑了千万级以上的查询量,同时每天有百亿级的增量需要维护。所有的报表级查询需要毫秒级返回数据,场景主要包括报表查询、多维分析、日志分析等。

京东广告平台在京东内部支持了十余个业务线,300+报表,涵盖了270个底层数据。

报表系统下对接包括MySQL、Redis以及自有系统等,在今年年初时遇到一些困难。主要包括:

  1. 性能问题:查询速度慢,满足不了大批量毫秒级返回数据的需求
  2. 运维问题:运维困难,难以保障
  3. 开发成本高
  4. SQL兼容难

于是我们开始调用替代的方案

SQL on Hadoop : 这种方案有几个问题

  1. HDFS / Spark 性能不稳定:对外的业务如果自建hdfs,对于小团队运维挑战很大,如kylin系统,性能和功能都是可以的。但是负责而庞大的外部模块,让我们觉得运维难度太大。而如果使用大数据平台的共用集群,稳定性不好保障,责任也不好划分。
  2. 实时性与性能难兼容:这是整体设计思路决定的。如果是高并发的广告报表业务,hadoop生态实时性无法满足。

ClickHouse方案:ck是目前很流行的解决方案,速度非常彪悍。但是ck也无法避免的有几个问题。

  1. 运维很复杂,分布式做的不完整
  2. 不支持标准的sql,业务迁移难度大
  3. qps低

Why Doris ?

  1. 谷歌Mesa理论支持(Mesa + impala)、百度工程实践
  2. 完善的功能支持,标准mysql协议,可以使用mysql-client直接连接
  3. 高并发、高qps支持
  4. 方便运维,架构清晰,数据迁移门槛低

使用中遇到的问题:

在大规模将系统切入Doris时遇到了下面几个问题:

  1. 产品线众多,甚至包括海外产品线
  2. 对接的业务方众多
  3. 维护集群众多,面临资源隔离和数据隔离的问题
  4. 财务相关数据,数据安全性要求高

在切换时有如下几个诉求:

统一化

  1. 增量可回溯/可查询:对于导入增量进行把控
  2. 更强的抗泄洪能力:因为对接产品线众多,不能因为任务激增而影响到众多产品线
  3. 业务方可自助查数、补数
  4. 可接受秒级的任务延迟

平台化

  1. 数据定时备份
  2. 支持任务优先级
  3. 细化延迟监控

国际化

  1. 支持时区功能
  2. 多集群多环境/同名HDFS NS的区分

于是我们开发了一个外部的Admin模块

数据最开始从Kafka进行导入,经过ETL层。ETL会做一份增量数据,数据批次会取决于业务需求。目前线上大部分是每分钟会有一个批次。通过HTTP的接口调用Admin Server,收到Load的任务后,会写到MySQL的消息队列上,向Doris提交一个Load的任务。Doris收到任务后会提交Broker Load将HDFS的数据导入到Doris中。所有历史数据导入任务存储在MySQL中,通过Admin Server来实现可回溯可查询的功能可。同时可实现定期的Backup。同时Load任务的并发是可控制的,也提供了更强的抗泄洪能力及支持任务优先级的能力。

所有提交的任务会通过HTTP的JSON发送到Admin Server里,主要是Doris的Broker Load需要的字段。Label,Path和Type(目前支持csv和Parquet,ORC)

双11大促期间Doris的表现

稳定性

  1. 整个大促期间Doris的内存、CPU非常平稳,即使11日凌晨也没有出现大规模上涨
  2. 整个集群规模已经的达到了上百台
  3. 整个大促期间没有Bug和事故

导入性能

  1. 双11当天达到了120亿行的增量(聚合后的数据)
  2. 峰值导入在2000万/分钟
  3. 所有事实表基本都可以做到秒级延迟

查询性能

京东只用了40台16核Docker支撑了查询,且最高峰CPU占用率仅30%左右。达到的效果:

  1. 双11当天承载了8000万+的查询
  2. TP99 58毫秒,TP999 164毫秒
  3. 双11当天00:20左右达到峰值QPS达到4500+,压测阶段QPS达到万级以上

目前的问题

  1. SQL优化器能力偏弱
  2. CPU、内存等物理资源无法按需分配
  3. 业务灵活性弱
  4. 数据更新困难

Apache Doris在京东广告的应用相关推荐

  1. 【遇见Doris】Apache Doris 在京东广告平台的应用

    6月29日,Doris有幸得到中国信通院云大所.大数据技术标准推进委员会的支持,在中国信通院举行了0.11.0新版本预览线下沙龙.各位嘉宾都带来了干货满满的分享.关注Doris官方公众号,后台回复&q ...

  2. Apache Doris在京东搜索实时OLAP中的应用实践

    1.前言 本文讨论了京东搜索在实时流量数据分析方面,利用Apache Flink和Apache Doris进行的探索和实践.流式计算在近些年的热度与日俱增,从Google Dataflow论文的发表, ...

  3. 搜狐、美团、小米都在用的Apache Doris有什么好? | BDTC 2019

    [导读]12 月 5-7 日,由中国计算机学会主办,CCF 大数据专家委员会承办,CSDN.中科天玑协办的中国大数据技术大会(BDTC 2019)在北京长城饭店隆重举行.100+ 顶尖技术专家.100 ...

  4. 官宣!Apache Doris 从 Apache 孵化器毕业,正式成为 Apache 顶级项目!

    全球最大的开源软件基金会 Apache 软件基金会(以下简称 Apache)于美国时间 2022 年 6 月 16 日 宣布,Apache Doris 成功从 Apache 孵化器毕业,正式成为 Ap ...

  5. 最全的Apache Doris教程(收藏版)共9万+字【第一篇】由于是typora编写,有部分图片在本地,识别不出来,请细聊我

    1.Doris 简介 1.1 Doris 概述 Apache Doris 由百度大数据部研发(之前叫百度 Palo,2018 年贡献到 Apache 社区后, 更名为 Doris ),在百度内部,有超 ...

  6. 超强总结,用心分享丨大数据超神之路(七):Apache Doris上篇

    文章目录 第 1 章 Doris 简介 1.1 Doris 概述 1.2 使用场景 1.3 技术概述 1.4 元数据结构 1.5 数据分发 1.6 OLAP与OLTP 1.7 环境准备 第2章 编译与 ...

  7. Apache Doris 和 ClickHouse 的选型比较

    背景介绍 Apache Doris是由百度贡献的开源MPP分析型数据库产品,亚秒级查询响应时间,支持实时数据分析:分布式架构简洁,易于运维,可以支持10PB以上的超大数据集:可以满足多种数据分析需求, ...

  8. 大数据Doris(一):深入了解Apache Doris

    深入了解Apache Doris 一.Apache Doris介绍 Apache Doris 是一个基于 MPP 架构的高性能.实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可 ...

  9. 墨天轮访谈 | SelectDB 衣国垒:Apache Doris(incubating)1.0版本特性解析与未来规划

    分享嘉宾:衣国垒 Apache Doris Committer.SelectDB 联合创始人&CTO 整理:墨天轮社区 导读 大家好,我是来自Apache Doris社区的衣国垒,也是Sele ...

  10. 官宣!Apache Doris 从 Apache 孵化器毕业,正式成为 Apache 顶级项目

    官宣!Apache Doris 从 Apache 孵化器毕业,正式成为 Apache 顶级项目! 全球最大的开源软件基金会 Apache 软件基金会(以下简称 Apache)于美国时间 2022 年 ...

最新文章

  1. 補丁文件patch制作流程
  2. fseek获取大于4G的文件大小的问题
  3. 一个JavaBean和DTO转换的优秀案例
  4. ubuntu16.04 安装jdk
  5. 案例:用户登录界面最全详解(JavaWeb)
  6. Android开发之刷新图片到相册 | 刷新视频到相册的方法区分发广播刷新方法
  7. qt android文件读写文件,qt android 开发之写入xml配置文件篇
  8. WebService传输DataSet的一点想法和实践-.NET教程,Web Service开发
  9. 剑指offer面试题42. 连续子数组的最大和(动态规划)
  10. checkstyle配置文件说明
  11. notes ExcelHome-excel2010应用大全
  12. 什么是网站死链?如何查询网站死链?网站死链怎么解决?
  13. Antd 修改 Table 悬浮颜色、表头背景色
  14. 恢复SVN的Replacing操作
  15. 机器学习常用数学符号及读法大全
  16. Oracle 12c 数据库可插拔体系结构
  17. 实验一 网络流量捕获实验
  18. 字符型数据与数值型数据之间的转换
  19. 论文阅读:Recurrent Neural Networks for Time Series Forecasting Current Status and Future Directions
  20. 结构体中使用冒号对位的操作

热门文章

  1. 「津津乐道播客」#301 这是一期价值3000元的当代社畜科学点餐指南
  2. python操作jira修改status及写入comment
  3. 如何让计算机显示隐藏的文件夹,隐藏的文件夹如何显示 win7与xp系统显示隐藏文件夹的设置方法...
  4. 关于魔兽的电脑优化配置方法
  5. java.util.MissingResourceException: Can‘t find resource for bundle java.util.PropertyResourceBundle
  6. 机器学习之logistic 回归
  7. mysql怎么打开db文件_mysql的db文件怎么打开?
  8. csdn前200的大牛
  9. java中的java.lang.RuntimeException异常怎么解决?
  10. docker镜像完全卸载