前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >关于Cube碎片管理,你需要知道这些!

关于Cube碎片管理,你需要知道这些!

作者头像
大数据梦想家
发布2021-01-27 16:14:12
5260
发布2021-01-27 16:14:12
举报

写在前面: 博主是一名软件工程系大数据应用开发专业大二的学生,昵称来源于《爱丽丝梦游仙境》中的Alice和自己的昵称。作为一名互联网小白,写博客一方面是为了记录自己的学习历程,一方面是希望能够帮助到很多和自己一样处于起步阶段的萌新。由于水平有限,博客中难免会有一些错误,有纰漏之处恳请各位大佬不吝赐教!个人小站:http://alices.ibilibili.xyz/ , 博客主页:https://alice.blog.csdn.net/ 尽管当前水平可能不及各位大佬,但我还是希望自己能够做得更好,因为一天的生活就是一生的缩影。我希望在最美的年华,做最好的自己

在上一篇博客中,博主已经为大家介绍了如何进行kylin的增量构建。在最后也讨论了增量构建会导致Segment越来越多,进而降低数据查询的效率。本篇博客,为大家带来的就是如何对Cube进行碎片化的管理

码字不易,先赞后看

在这里插入图片描述
在这里插入图片描述

Cube碎片管理

增量构建的问题

日积月累,增量构建的Cube中的Segment越来越多,该Cube的查询性能也会越来越慢,因为需要在单点的查询引擎中完成越来越多的运行时聚合。为了保持查询性能:

  • 需要定期地将某些Segment合并在一起
  • 或者让Cube根据Segment保留策略自动地淘汰那些不会再被查询到的陈旧Segment

管理Cube碎片

上述案例,每天都会生成一个Segment,对应就是HBase中的一张表。增量构建的Cube每天都可能会有新的增量。这样的Cube中最终可能包含上百个Segment,这将会导致Kylin性能受到严重的影响

  • 从执行引擎的角度来说,运行时的查询引擎需要聚合多个Segment的结果才能返回正确的查询结果
  • 从存储引擎的角度来说,大量的Segment会带来大量的文件,给存储空间的多个模块带来巨大的压力,例如Zookeeper、HDFS Namenode等

因此,有必要采取措施控制Cube中Segment的数量

在这里插入图片描述
在这里插入图片描述

手动触发合并Segment

Kylin提供了一种简单的机制用于控制Cube中Segment的数量:合并Segments。在Web GUI中选中需要进行Segments合并的Cube。

操作步骤:

1、单击Action→Merge

在这里插入图片描述
在这里插入图片描述

2、选中需要合并的Segment,可以同时合并多个Segment,但是这些Segment必须是连续的

在这里插入图片描述
在这里插入图片描述

单击提交后系统会提交一个类型为“MERGE”的构建任务,它以选中的Segment中的数据作为输入,将这些Segment的数据合并封装成为一个新的Segment。新的Segment的起始时间为选中的最早的Segment的起始时间,它的结束时间为选中的最晚的Segment的结束时间。

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

待到运行完毕,我们可以发现Cube内部的Segment文件已经合并为一个

在这里插入图片描述
在这里插入图片描述

注意事项:

  • 在MERGE类型构建完成之前,系统将不允许提交这个Cube上任何类型的其他构建任务
  • 在MERGE构建结束之前,所有选中用来合并的Segment仍然处于可用的状态
  • 当MERGE构建结束的时候,系统将选中合并的Segment替换为新的Segment,而被替换下的Segment等待将被垃圾回收和清理,以节省系统资源

讲完了合并Segment,我们来谈谈如何删除Segment

删除Segment

同样的,我们也可以使用WebUI删除Cube的segment

操作步骤: 1、disable Cube

在这里插入图片描述
在这里插入图片描述

2、点击 delete Segment,删除指定的segment

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

如果使用Postman发送请求删除Segment

属性

URL

http://node1:7070/kylin/api/cubes/{cubeName}/segs/{segmentName}

请求方式

DELETE

自动合并

手动维护Segment很繁琐,人工成本很高,Kylin中是可以支持自动合并Segment。

在Cube Designer的“Refresh Settings”的页面中有:

  • Auto Merge Thresholds
  • Retention Threshold
在这里插入图片描述
在这里插入图片描述

两个设置项可以用来帮助管理Segment碎片。这两项设置搭配使用这两项设置可以大大减少对Segment进行管理的麻烦。

1、Auto Merge Thresholds
  • 允许用户设置几个层级的时间阈值,层级越靠后,时间阈值就越大
  • 每当Cube中有新的Segment状态变为 READY的时候,会自动触发一次系统自动合并
  • 合并策略

达到了阈值就跳过,没有达到阈值就合并到这个阈值,没满足不合并

尝试最大一级的时间阈值,例如:针对(7天、28天)层级的日志,先检查能否将连续的若干个Segment合并成为一个超过28天的大Segment。

  • 如果有个别的Segment的时间长度本身已经超过28天,系统会跳过Segment
  • 如果满足条件的连续Segment还不能够累积超过28天,那么系统会使用下一个层级的时间阈值重复寻找

这里为了方便大家理解,举一个例子

  • 假设自动合并阈值设置为7天、28天
  • 如果现在有A-H8个连续的Segment,它们的时间长度为28天(A)、7天(B)、1天(C)、1天(D)、1天(E)、1天(F)、1天(G)、1天(H)
  • 此时,第9个Segment I加入,时间长度为1天

自动合并策略为:

在这里插入图片描述
在这里插入图片描述
2、配置自动合并

首先设置阈值,可以使一个也可以使多个。

在这里插入图片描述
在这里插入图片描述

设置完Cube后,我们build进行构建,然后等待

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

运行完毕以后,生成一天的数据

在这里插入图片描述
在这里插入图片描述

接着我们提交下一个一天的数据(1014-1015)

在这里插入图片描述
在这里插入图片描述

待到构建完毕,我们可以发现新的Segment已经与之前的Segment合并了

在这里插入图片描述
在这里插入图片描述

若设置多层次的合并级别,最好是每个层次之间是整倍数关系

既然能自动合并,那肯定有办法自动删除,接下来我们就来唠唠

自动删除

自动合并是将多个Segment合并为一个Segment,以达到清理碎片的目的。自动删除Segment则是及时清理不再使用的Segment。

在很多场景中,只会对过去一段时间内的数据进行查询,例如:

  • 对于某个只显示过去1年数据的报表
  • 支撑它的Cube其实只需要保留过去一年类的Segment即可
  • 由于数据在Hive中已经存在备份,则无需在Kylin中备份超过一年的历史数据
在这里插入图片描述
在这里插入图片描述

可以将Retention Threshold设置为365。每当有新的Segment状态变为READY的时候,系统会检查每一个Segment。如果它的结束时间距离最晚的一个Segment的结束时间已经大于等于“Retention Threshold”,那么这个Segment将被视为无需保留。系统会自动地从Cube中删除这个Segment。

在这里插入图片描述
在这里插入图片描述

总结

本篇博客为大家介绍了如何进行Cube的碎片化管理,包括手动合并,删除,以及自动合并,删除。下一篇博客,将为大家介绍如何使用JDBC连接Kylin,敬请期待?

如果以上过程中出现了任何的纰漏错误,烦请大佬们指正?

受益的朋友或对大数据技术感兴趣的伙伴记得点赞关注支持一波?

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020-05-16 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • Cube碎片管理
    • 增量构建的问题
      • 管理Cube碎片
        • 手动触发合并Segment
          • 删除Segment
            • 自动合并
              • 1、Auto Merge Thresholds
              • 2、配置自动合并
            • 自动删除
            • 总结
            相关产品与服务
            大数据
            全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
            领券
            问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档