ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

Cube--碎片管理

2020-12-19 12:01:04  阅读:181  来源: 互联网

标签:Cube 阈值 -- 28 合并 碎片 构建 Segment


Cube碎片管理

增量构建的问题

  • 日积月累,增量构建的Cube中的Segment越来越多,该Cube的查询性能也会越来越慢,因为需要在单点的查询引擎中完成越来越多的运行时聚合。为了保持查询性能
    • 需要定期地将某些Segment合并在一起
    • 或者让Cube根据Segment保留策略自动地淘汰那些不会再被查询到的陈旧Segment

管理Cube碎片

  • 上述案例,每天都会生成一个Segment,对应就是HBase中的一张表。增量构建的Cube每天都可能会有新的增量。这样的Cube中最终可能包含上百个Segment,这将会导致Kylin性能受到严重的影响。
    • 从执行引擎的角度来说,运行时的查询引擎需要聚合多个Segment的结果才能返回正确的查询结果
    • 从存储引擎的角度来说,大量的Segment会带来大量的文件,给存储空间的多个模块带来巨大的压力,例如Zookeeper、HDFS Namenode等
  • 因此,有必要采取措施控制Cube中Segment的数量。
  • segment数量过多
    在这里插入图片描述

手动触发合并Segment

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

  • 操作步骤:

  • 1、单击Action→Merge
    在这里插入图片描述

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

    • 单击提交后系统会提交一个类型为“MERGE”的构建任务,它以选中的Segment中的数据作为输入,将这 些Segment的数据合并封装成为一个新的Segment。新的Segment的起始时间为选中的最早的Segment的起始时间,它的结束时间为选中的最晚的Segment的结束时间。
    • 查看合并任务
      在这里插入图片描述
  • 注意事项

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

删除Segment

使用WebUI删除Cube的segment

  • 1、disable Cube
    在这里插入图片描述

  • 2、点击 delete Segment,删除指定的segment
    在这里插入图片描述

使用Postman发送请求删除Segment

属性
URLhttp://node1:7070/kylin/api/cubes/{cubeName}/segs/{segmentName}
请求方式DELETE
  • postman示意图
    在这里插入图片描述

自动合并

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

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

    • Auto Merge Thresholds
    • Retention Threshold
  • “Refresh Settings”的页面
    在这里插入图片描述

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

1、Auto Merge Thresholds

  • 允许用户设置几个层级的时间阈值,层级越靠后,时间阈值就越大
  • 每当Cube中有新的Segment状态变为READY的时候,会自动触发一次系统自动合并
  • 合并策略
    • 尝试最大一级的时间阈值,例如:针对(7天、28天)层级的日志,先检查能否将连续的若干个Segment合并成为一个超过28天的大Segment
    • 如果有个别的Segment的时间长度本身已经超过28天,系统会跳过Segment
    • 如果满足条件的连续Segment还不能够累积超过28天,那么系统会使用下一个层级的时间阈值重复寻找

示例1 - 理解Kylin自动合并策略

  • 假设自动合并阈值设置为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天。
  • 自动合并策略为:
    • 1、Kylin判断时候能将连续的Segment合并到28天这个阈值,由于Segment A已经超过28天,会被排除
    • 2、剩下的连续Segment,所有时间加一起 B + C + D + E + F + G + H + I (7 + 1 + 1 + 1 + 1 + 1 + 1 + 1 = 14) < 28天,无法满足28天阈值,开始尝试7天阈值
    • 3、跳过A(28)、B(7)均超过7天,排除
    • 4、剩下的连续Segment,所有时间加一起 C + D + E + F + G + H + I(1 + 1 + 1 + 1 + 1 + 1 + 1 = 7)达到7天阈值,触发合并,提交Merge任务。并构建一个Segment X(7天)
    • 5、合并后,Segment为:A(28天)、B(7天)、X(7天)
    • 6、继续触发检查,A(28天)跳过,B + X(7 + 7 = 14)< 28天,不满足第一阈值,重新使用第二阈值触发
    • 7、跳过B、X,尝试终止

示例2:配置自动合并4天的Segment

  • 操作步骤:

  • 1、配置自动合并阈值为(4、28)
    在这里插入图片描述

  • 2、分别按照天构建分区Cube

  • 3、自动触发合并Segment构建
    在这里插入图片描述
    在这里插入图片描述

配置保留Segment

  • 自动合并是将多个Segment合并为一个Segment,以达到清理碎片的目的。保留Segment则是及时清理不再使用的Segment。
  • 在很多场景中,只会对过去一段时间内的数据进行查询,例如:
    • 对于某个只显示过去1年数据的报表
    • 支撑它的Cube其实只需要保留过去一年类的Segment即可
    • 由于数据在Hive中已经存在备份,则无需在Kylin中备份超过一年的历史数据
  • 可以将Retention Threshold设置为365。每当有新的Segment状态变为READY的时候,系统会检查每一个Segment。如果它的结束时间距离最晚的一个Segment的结束时间已经大于等于“Retention Threshold”,那么这个Segment将被视为无需保留。系统会自动地从Cube中删除这个Segment。

保留策略示意图

在这里插入图片描述

需求:配置保留Segment为2天,分别构建增量Segment,测试Segment保留情况

  • 操作步骤:

  • 1、在Cube中设置Retention Range为2
    在这里插入图片描述

  • 2、重新构建Cube

  • 3、测试超过指定保留时间的Segment,是否被自动移除

标签:Cube,阈值,--,28,合并,碎片,构建,Segment
来源: https://blog.csdn.net/qq_46893497/article/details/111353035

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有