数据段合并

概要:

本例子主要用于对特定粒度 interval 下的分段 segment 进行合并,比如在粒度为 DAYdatasource下某一天的记录有两个 segment ,在这种情形下可以按照本流程对其进行合并,可以起到减少冗余空间、加快查询的等优化效果。

前提:

  1. Druid中已存在相应的datasource 
  2. datasource中的记录有大于等于2的分段碎片(shard)

以下以广东数果科技有限公司为例,展示合并datasource全过程操作指引:

第一步:查找在druid中的目标datasource

  1. http://192.168.0.222:8081/#/datasources页面上查找要合并的 datasource。 例如要合并的datasource是test061901

注意:上图红框内的数字”2“代表该条记录包含两个分段碎片。

第二步: 创建、编辑、保存LuceneMergeTask.json文件说明

第三步:执行命令上传json文件,创建Task任务

  • 在命令行中使用cd命令进入第二步创建的json文件所在的目录
  • 使用curl命令上传json文件:

    curl -X 'POST' -H 'Content-Type:application/json' -d @LuceneMergeTask.json http://{overlordIP}:8090/druid/indexer/v1/task
    

    overlordIP: druid的overlord节点ip地址,如果有多个overlord,必须指定leader的ip.

    LuceneMergeTask.json task配置文件,详见下文

第四步:进入overlord服务的Task列表页面,查看Task日志信息,观察Task合并情况。

  • 访问地址:

    http://{overlordIP}:8090/console.html
    

    overlordIP: druid的overlord节点ip地址

第五步:在需要停止task时,可以发送如下http post请求停止task任务

  curl -X 'POST' -H 'Content-Type:application/json' http://{overlordIP}:8090/druid/indexer/v1/task/{taskId}/shutdown

overlordIP: druid的overlord节点ip地址

taskId:http://{overlordIP}:8090/console.htmltask详细页面对应 id 列的信息

第六步:查看合并结果

可以看到,目标datasource的每条记录都变成只有一个分段碎片了

LuceneMergeTask.json详细配置如下:

{
  "type":"lucene_merge",
  "dataSource": "test061901",  
  "interval": "2017-06-01/2017-06-30",
  "triggerMergeCount": 2,
  "mergeGranularity":"DAY",
  "maxSizePerSegment":"800MB",
  "context": {
    "debug": true
  }   
}
属性名 类型 是否必需 默认值 说明
type lucene_merge string - 指定类型,固定值
dataSource 自定义 string - 要合并的数据源名称
interval 自定义 string - 需要进行合并的时间间隔,在间隔范围外的不进行合并
triggerMergeCount 自定义 int 2 设定触发合并的段的数量,超过该值才触发合并,默认为2,
一般不需要修改
mergeGranularity 参见granularity粒度配置 string null 指定合并的粒度,不配置则代表在原有粒度上合并
maxSizePerSegment 自定义 int null 指定合并后数据段的最大大小,
不配置则代表不限制
enableLookup true/false boolean false 待补充
context 自定义 json null 配置Task的上下文环境参数
© 广东数果 all right reserved,powered by Gitbook问题反馈邮件:developer@sugo.io 2020-11-12 17:52:00

results matching ""

    No results matching ""