【开发实践】美团为什么开发 Kylin On Druid(下)?

2023-11-04

前言

在上篇文章里,我们比较了 Kylin 和 Druid 这两个重要的 OLAP引擎的特点,也分析了 Kylin on HBase 的不足,得出了使用 Druid 代替 HBase 作为 Kylin 存储的方案,最后介绍了美团开发的 Kylin on Druid 的架构和流程。在这篇文章中,我们接着上篇文章,将介绍如何使用 Kylin on Druid,Kylin on Druid 的性能表现,以及在使用过程中总结的一些经验。

01

如何使用Kylin on Druid

准备阶段

  1.   准备一个 Druid 集群,并且注意以下几点:

    a) 使用 MySQL 作为元数据存储

    b) 使用 HDFS 作为 Deep Storage

    c) Druid 版本至少为 0.11

    d) 因为数据存储和聚合都在 Historical 执行,需要将主要的资源分配给 Historical(Middle Manager 和 Overload 在 KOD 中并不被使用)

  2. 从 Kylin 的 Github 仓库获取 kylin-on-druid 分支的最新代码并打包。

  3. 修改 kylin.properties,增加配置项。

    请参考:

    https://github.com/apache/kylin/blob/kylin-on-druid/storage-druid/README.md,以下仅列举主要配置

    a) kylin.storage.druid.coordinator-addresses 指定了 Druid 的 coordinator 节点地址

    b) kylin.storage.druid.broker-host 指定了 Druid 的 Broker 节点地址

    c) kylin.storage.druid.mysql-url 指定了作为 Druid 元数据存储的 MySQL 的 JDBC url

    d) kylin.storage.druid.mysql-seg-table 指定了 Druid 元数据存储 segment 信息的 MySQL 表名

    e) kylin.storage.druid.hdfs-location 指定了 Druid Segment 文件在 HDFS 的存储路径

    以下是测试环境的配置:

    图 1 Kylin 配置文件

  4. 按照正常的启动方式启动Kylin。

构建 Cube 阶段

1. 在 Cube Design 界面的第五步(高级设置)设置 Cube Engine 和 Cube Storage 分别为 MapReduce 和 Druid。Cube 设置全部完成后,选择“ Build Cube ”。

图 2 高级设置中的 Cube Storage 选项

2. 观察 Cube 构建过程,等待构建完成,以下展示了构建 Cube 各个新增步骤的说明和步骤运行成功时的输出信息:

a) “Calculate Shards Info”根据配置项,计算出 Druid Segment File 的数量。

图 3 Calculate Shards Info

从 Output 看出这里设置为 2 个 Segment File,每个约 500 MB。

图 4 Calculate Shards Info 输出

b)  “Update Druid Tier” 更新 Druid Tier 的 Rule

图 5 Update Druid Tier

图 6 Update Druid Tier 输出

c) “Convert Cuboid to Druid” 启动一个 MapReduce Job,将 Cuboid 文件转为 Druid 的列式存储格式,生成数据放到 HDFS 的指定目录

图 7 Convert Cuboid to Druid

MapReduce Job 的统计数据

图 8 Convert Cuboid to Druid 输出

该步骤结束时可以检查到文件已经存在于 HDFS 上。

图 9 Convert Cuboid to Druid 生成文件

d) “Load Segment to Druid” 通过 MySQL 来向 Druid 集群 announce 新的 Druid Segment,等到 Segment 已经完全被分发到各个 Druid Historical 才结束该 step。

图 10 Load Segment to Druid

从 Output 看到,首先修改 MySQL 元数据信息花费了 0.11 秒,然后等待 Druid 集群将上步生成的两个 segment 文件 download 到 Historical,这个过程时间约为两分钟。

图 11 Load Segment to Druid 输出

运行过程中观察 Coordinator Web UI,可以看到 Data Source 的图标从红色变成蓝色。

图 12 Coordinator Web UI

e)  Cube 构建完成

图 13 Cube 构建完成

f)   检查 Druid Segment 状态和分布,检查 Schema 是否正确(可选);通过 Druid API 查看 Cube 对应的 Druid Data Source 的元数据。

图 14 Data Source Schema

通过 Druid API 查看 Druid Segments 的明细数据。

图 15 Data Source Data

检查单个节点的上已经从 Deep Storage 下载下来的 Segment 数据文件。

图 16 Local Cache

02

Kylin on Druid 的查询时长对比

  • 我们在测试环境下基于 SSB 数据构建不同 Cube,通过比较在不同 Cube 上相同 SQL 的查询用时,来了解使用 Kylin on Druid 对查询用时的影响。

  • 我们使用 SSB 生成测试数据,数据量 29,999,795。

  • Druid 集群规格如下:

8 台虚拟机(8core, 65GB Memory),其中一台部署 Overlord 和 Coordinator,1 台部署 Broker,6 台部署 Middle Manager 和 Historical,其中 Historical 配置参数如下。

图 17 Historical JVM 参数

图 18 Historical 参数

  • 以下为三种 Cube 构建方案的描述

  1. Druid Base(绿色列指的是使用 Druid 作为存储,只构建 Base Cuboid

  2. HBase Base(蓝色列)指的是使用 HBase 作为存储,只构建 Base Cuboid

  3. HBase Default(红色列)指的是使用 kylin-ssb 默认的 cube 元数据的构建方案

  • 下图为三种方案构建的 Cube 在不同查询语句下的平均查询用时对比

图 19 SSB 查询时长

图 20 SSB 查询时长-折线图

  • 结论

关于构建 Cube 时间和 MapReduce 内存,使用 Druid 占用资源略多。基于 Druid 只构建 base cuboid 得到的 Cube,与基于 HBase 根据复杂剪枝设置得到的 Cube 有了相当的查询性能。可见利用 Druid 高效的 filter 和 scan,Kylin 的现场计算能力有了十分明显的提升。而如果 Cube 设计得当,且计算较多 Cuboid 的话,HBase 的性能跟 Druid 不分伯仲。

03

美团 Kylin on Druid 的线上环境表现

美团点评是 Apache Kylin 的重度用户,Kylin 覆盖了美团点评主要业务线,截止 2018 年 8 月的数字,每天的查询次数超过 380 万次。美团第一批上线使用 Kylin on Druid 后,Cube 存储使用减少了约 79%,构建过程的内存和 CPU 使用减少了 20% 左右;从查询时长观察,大部分的查询用时减少了 50% 以上(图21来自于 Kylin 北京 Meetup 上康凯森的分享内容)。

图 21 Kylin Meetup PPT

04

Kylin on Druid 的总结

  • 目前 Kylin on Druid 的限制和要求

  1. 要求 Druid 使用 MySQL 作为元数据存储,使用 HDFS 作为分布式存储

  2.  Druid 需要 0.11 版本或者以上,Java 需要 JDK8 或者以上

  3. Cube 构建目前只支持 MapReduce

  4. Cuboid 数量相同时,Kylin on Druid 较使用 HBase 构建 Cube 而言,时间和计算资源使用一般稍多

  5. Measure 尚不能完全支持,美团近期即将开源的包括 EXTENDED_COLUMN、Count Distinct(BitSet),这些 Measure 需要以向 Druid 添加扩展的方式支持;Count Distinct(HyperLogLog) 后续根据需求开发

  6. Decimal 类型在 Druid 端使用 double 替换,美团近期也会提供准确的 Decimal 类型支持

  7. 转换为 Druid Segment 步骤使用内存比转HFile更多,一般需要分配更多内存

  • Kylin on Druid 的优势

1.  查询时无需加载字典,因此相比 Kylin on HBase 查询稳定性更高

2.  存储层支持业务隔离

3.  亿级及以下数据只需构建 Base Cuboid

4.  构建资源使用减少(因为需要构建的 Cuboid 数量减少了),查询时长减少(因为现场计算能力有了比较好的提升)

  • 何时使用Kylin on Druid

1.  对 Druid 有充分的理解,有足够的经验去部署和运维 Druid 集群

2.  有足够的机器资源部署Druid

3.  查询没有较为固定的模式,因此大部分查询难以精确匹配Cube预计算得到的维度组合,可以利用Kylin on Druid来加速现场计算能力

4.  对查询响应速度有较高的要求

06

总结

在这两篇文章中,我们一步一步分析 Kylin 目前使用 HBase 作为存储的不足之处,同时比较了 Kylin 和 Druid 各自的特点,得出了将两者相结合的 Kylin on Druid 的方案。

随后介绍了美团开发的 KOD 使用方式,通过不同 Cube 构建方案的查询时长对比,得出 KOD 较原有 HBase 存储有较大性能和易用性提升的结论。最后总结了 KOD 的优势和使用经验,也了解到 KOD 目前有部分功能尚未完成。

目前这部分代码在 Kylin 的 Git 仓库的“ kylin-on-druid ”分支,欢迎广大开发者试用并积极参与开发和改进,更多问题可以发送到 Kylin 开发者邮件群组 dev@kylin.apache.org 进行讨论,谢谢大家。

07

参考链接

  1. https://issues.apache.org/jira/projects/KYLIN/issues/KYLIN-3694

  2. https://github.com/apache/kylin/tree/kylin-on-druid

  3. https://blog.bcmeng.com/post/kylin-on-druid.html

  4. http://druid.io/docs/latest/design

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

【开发实践】美团为什么开发 Kylin On Druid(下)? 的相关文章

  • 给Kylin iso中添加自定义rpm包

    前言 在日常产品交付中会有如下需求 xff1a 客户自己安装centos ubuntu kylin iso xff0c 然后我们把rpm包给到客户 我们直接将rpm包封装到iso xff0c 给客户交付整体iso xff0c 这样不管是对于
  • electron在Windows、Linux和KYLIN操作系统下的不同表现

    一 electron简介 Electron 是一个由 Github 开发 用 HTML xff0c CSS 和 JavaScript 来构建跨平台桌面应用程序的框架 xff0c 然后这些应用程序可以打包在macOS Windows和Linu
  • Kylin接入外部Jdbc Mysql数据源

    前言 Kylin目前不仅仅支持Hive作为数据源构建cube xff0c 也可以支持使用外部jdbc作为数据源进行构建 xff0c 比如使用MySQL数据源的时候会让我们下载sqoop安装包 xff0c 本质上是使用sqoop全量同步我们要
  • kylin ubuntu20.04使用记录

    1 配置dns vim etc systemd resolved conf 修改 DNS 61 119 29 29 29 223 5 5 5 多个DNS地址使用空格分隔 2 配置samba sudo vim etc samba smb co
  • 在 Kylin 中实现异常值检测 UD(A)F

    本文讲解了时间序列数据异常值检测的基本概念和在 Kylin 中开发使用异常值检测 UDF 的方法 可以作为其他 UDF 开发的参考 通过在 Kylin 中移植 Hivemall 的 UDF 我们可以充分利用 Kylin 的优势 减少直接使用
  • 【信创】麒麟操作系统配置在线源及手动查找所需软件包

    获取操作系统信息 命令 nkvers 关注倒数第2行 示例中大版本 V10 小版本 SP2 CPU架构 aarch64 root localhost nkvers Kylin Linux Version Release Kylin Linu
  • 2023 QEMU模拟FT2000+(armv8)运行麒麟V10并安装tensorflow2

    2023 QEMU模拟FT2000 armv8 运行麒麟V10并安装tensorflow2 资源准备 麒麟V10SP1 桌面 QEMU 4 1 0以上 qeum安装kylin python tensorflow2 10 0 资源准备 麒麟V
  • 都是 HBase 上的 SQL 引擎,Kylin 和 Phoenix 有什么不同?

    大数据时代 数据的价值越来越被重视 企业从海量大数据中挖掘所需要的信息 用来驱动业务决策以获得更大的商业价值 与此同时 出现了越来越多的大数据技术帮助企业进行大数据分析 例如 Apache Hadoop Hive Spark Presto
  • Kylin Flink Cube 引擎的前世今生

    Apache Kylin 是一个开源的 分布式的分析型数据仓库 提供Hadoop Spark 之上的 SQL 查询接口及多维分析 OLAP 能力以支持超大规模数据 它能在亚秒内查询巨大的表 Kylin 的核心思想是 预计算 将数据按照指定的
  • linux外接HDMI显示器 不能正常显示的问题

    1 尝试重启lightdm systemctl restart lightdm 2 调整xrandr 设置扩展屏幕的方向 以电脑为例 我想将扩展屏幕放置在自带屏幕的左边 eDP 1是笔记本自带屏幕 DP 1是外接屏幕 输入命令 xrandr
  • Kylin问题解决

    1 libLLVM 7 so不是符号链接 root t60 ldconfig v ldconfig usr lib64 libLLVM 7 so 不是符号链接 解 root t60 ln sf usr lib64 libLLVM 7 0 0
  • Kylin ext3/4 xfs手动扩容根分区

    1 环境 云平台 兼容OpenStack Queens的发行版 HOST OS Kylin Server 10 SP1 Release Build20 20210518 arm64 虚拟机镜像ISO Kylin Server V10 GFB
  • 中间件运维分析中的选型与实践

    在近期的 Kylin Data Summit 上 好买财富平台架构总监王晔倞在互联网专场上分享了好买财富在中间件运维分析平台的演进过程 好买财富为什么选择从广泛应用的 ELK 转向 Apache Kylin 呢 王晔倞 我们在监控上 通常会
  • 【开发实践】美团为什么开发 Kylin On Druid(下)?

    前言 在上篇文章里 我们比较了 Kylin 和 Druid 这两个重要的 OLAP引擎的特点 也分析了 Kylin on HBase 的不足 得出了使用 Druid 代替 HBase 作为 Kylin 存储的方案 最后介绍了美团开发的 Ky
  • 从数仓到数据中台,谈技术选型最优解

    本文根据颜博老师在 Deeplus直播第218期 线上分享演讲内容整理而成 文末有获取本期PPT 回放的途径 不要错过 颜博 马蜂窝数仓研发总监 现任马蜂窝数据仓库团队负责人 曾供职于京东 IBM 亚信等公司 数据行业老兵一名 历经传统数据
  • kylin启动:Failed to create /kylin

    文章目录 一 当在ubuntu下执行check env sh时遇到问题 KYLIN HOME is set to usr local apache kylin 1 5 4 1 bin cat invalid option 1 Try cat
  • Kylin 最佳实践|爱奇艺如何处理千亿级数据

    1 使用 Kylin 的缘由 爱奇艺 OLAP 服务演变 爱奇艺大数据 OLAP 服务演变的过程可以用如下架构图说明 数据处理流程分为如下几个层级 最下方是采集平台 收集业务的埋点和日志 数据按时效性分为两种类型 离线类型的灌入到 HDFS
  • 01_配置yum源-银河麒麟V10(Kylin Linux Advanced Server V10 (Tercel))操作系统

    本文章收录于 国产银河服务器安装文档集 将详细的讲解 国产银河服务器操作系统各种软件的部署与说明 目录 配置yum源的两种方式 一 配置外网 yum 源 1 查看yum源 2 备份yum源 3 配置外网yum源 4 查看yum源 5 使yu
  • Kylin--简介及图解架构

    Kylin简介 Kylin 麒麟 的诞生背景 Kylin的应用场景 为什么要使用Kylin Kylin的总体架构 Kylin 麒麟 的诞生背景 ebay 中国团队研发的 是第一个真正由中国人自己主导 从零开始 自主研发 并成为Apache顶
  • 经典SQL面试题讲解(11-20)

    本文转自公众号俊红的数据分析之路 本篇节选自书籍 对比Excel 轻松学习SQL数据分析 一书 主要讲解数据分析面试中常见的30道SQL面试题 1 10题见 几道经典SQL面试题讲解 11 行列互换 现在我们有下面这么一个表row col

随机推荐

  • Python根据Excel名单实现文件夹下文件批量改名

    班级收集截图 通过缓存快速获取图片 可是文件夹内的文件是乱码 所以采用Python进行批量改名操作 import os import xlrd count 1 path C Users White Desktop 18 文件所在文件夹 ex
  • 排查Linux服务器是否被入侵步骤

    作为一个Linux运维工程师 能够清晰地鉴别异常机器是否已经被入侵了显得至关重要 以下是结合centos7 9操作系统进行排查Linux操作系统是否被入侵 其他Linux发行版的操作类似 1 入侵者可能会删除机器的日志信息 可以查看日志信息
  • No projects are found to import 问题如何解决

    在myeclipse中导入项目遇到 No projects are found to import 导致原因 项目目录中没有 project或者 classpath 解决方案 1 project classpath直接拷贝到相应位置即可 2
  • 大数据——Java 知识点整理

    1 JDK 和 JRE 有什么区别 JDK Java Development Kit 的简称 java开发工具包 提供了java的开发环境和运行环境 JRE Java Runtime Environment 的简称 java运行环境 为ja
  • FSDataInputStream中的seek()方法

    FSDataInputStream实现了Seekable接口 实现方法 其中的seek long pos 方法可以 对任意位置进行重新定位 与java io inputstream中的skip 不同 举个例子对 hdfs中的一个文件进行两次
  • JavaScript 使用 canvas arcTo() 在画布上画一条弧线

    arcTo 在画布上创建介于两个切线之间的弧 曲线 arcTo 使用 stroke 方法在画布上绘制确切的弧
  • 汇编与接口课程实验3——利用8255A实现LED的流水点亮实验

    一 实验目的 该实验的目的在于让学生掌握8255A和微机接口的连接方法 了解8255A的基本的工作原理和编程方法 二 实验内容 PA口接8个拨动开关K1 K8 PB口接8个LED 初始由开关K1 K8设定8位不同的值 当执行程序后LED按K
  • 进程,线程,协程(用户级线程)相关知识

    一 进程 线程 协程 用户级线程 1 进程 为了方便管理计算机的多道程序 计算机操作系统引入进程概念 进程是系统进行资源分配和调度的基本单位 进程作为程序独立运行的载体保障程序的独立运行 进程的存在使操作系统的资源利用率大幅度提升 进程的控
  • pfsense配置网络

    文章目录 1 配置lan口 2 配置wan口 2 1 pfsense联网 2 2 局域网内部虚拟机联网 1 配置lan口 默认lan口ip是192 168 1 1也可以自己配置 输入2开始配置ip 输入2选择lan口 输入ip地址 不能和已
  • MATLAB读取指定文件夹下的所有文件

    1 指定路径下 单个文件夹data中所有图像 file path data 图像文件夹路径 img path list dir strcat file path jpg 获取该文件夹中所有 jpg格式的图像 img num length i
  • 华为机试牛客网,C语言实现

    HJ1 字符串最后一个单词的长度 int main char a 5000 int n 0 t 0 p gets a for int i 0 a i 0 i n n 1 for int i n 1 a i i gt 0 i t t 1 pr
  • JSON.parse()和JSON.stringify()用法

    JSON parse 方法用于将 JSON 格式的字符串转换为 JavaScript 对象 而 JSON stringify 方法用于将 JavaScript 对象转换为 JSON 字符串 这两个方法可以组合使用来实现将数据从对象到字符串再
  • Bankless:2022年Q3以太坊生态报告

    撰文 Ben Giove Bankless 分析师 编译 Cointelegraph 在过去的 3 个月里 以太坊网络的使用情况如何 有多少人还在购买 NFT 非同质化代币 Layer 2 第二层网络 是否在成功扩展以太坊 本文最初受 Ja
  • 发现一个 Mac 神仙截图工具(截长图、带阴影、贴图等)

    1 前言 在发现 Xnip 之前 我用的都是微信自带截图工具 一用就是好几年 每次从工作电脑切换到个人电脑 创作的时候 截图比较常用 每次都需要为了截图而登录微信 而且不支持截长图 不支持多窗口截图等比较常用的功能 很是失望 总想找一款替代
  • web请求过程剖析

    服务器渲染 在服务器那边直接把数据和html整合在一起 统一返回给浏览器 在页面源代码中能看到数据 客户端渲染 第一次请求只要一个html骨架 第二次请求拿到数据进行数据展示 在页面源代码中看不到数据 在打开额网页右键点检查 gt Netw
  • Vijava 学习笔记之(VirtualMachineRelocateSpec类)

    VirtualMachineRelocateSpec 移动或复制指定虚拟机 使用不同的DataStore或HostSystem Properties NAME TYPE DESCRIPTION datastore ManagedObject
  • GDI+绘制的一个Report Designer原型

    早上看到Pvistely同学在说设计器编程的一些问题 想起来我也曾使用GDI 做过一个报表设计器的原型 刚才翻到了代码 居然已经是整整一年前的东西了 时间过的可真是快啊 当时产品里计划要提供可视化报表设计功能 于是part time了两个周
  • AD620放大器 AD623放大器 仪表放大器 差分放大器 微弱信号放大 原理图和PCB设计

    AD620放大器 AD623放大器 仪表放大器 差分放大器 微弱信号放大 原理图和PCB设计 目录 AD620放大器 AD623放大器 仪表放大器 差分放大器 微弱信号放大 原理图和PCB设计 基本原理 芯片选型 原理图 3D PCB 具体
  • getBoundingClientRect offsetWidth offsetHeight

    对于一个旋转的dom元素 getBoundingClientRect 得到的width height是外接矩形的宽高 offsetWidth offsetHeight是未旋转前dom的宽高
  • 【开发实践】美团为什么开发 Kylin On Druid(下)?

    前言 在上篇文章里 我们比较了 Kylin 和 Druid 这两个重要的 OLAP引擎的特点 也分析了 Kylin on HBase 的不足 得出了使用 Druid 代替 HBase 作为 Kylin 存储的方案 最后介绍了美团开发的 Ky