Elastic:data_hot,data_warm,data_cold角色有什么用

简介: data_hot:热点数据节点,热点数据节点在进入es时存储时间序列数据,热层必须快速读取和写入,并且需要更多的硬件资源data_warm;暖数据节点,存储不再定期更新但仍在查询的索引。查询两的频率通常低于索引出于热层时的频率,性能较低的硬件通常可用于此层中的节点data_cold:冷数据节点,存储访问频率较低的只读索引,磁层使用性能较低的硬件,并且可以利用可搜索快照索引来最小化所需的资源

1.角色定义

data_hot:热点数据节点,热点数据节点在进入es时存储时间序列数据,热层必须快速读取和写入,并且需要更多的硬件资源

data_warm;暖数据节点,存储不再定期更新但仍在查询的索引。查询两的频率通常低于索引出于热层时的频率,性能较低的硬件通常可用于此层中的节点

data_cold:冷数据节点,存储访问频率较低的只读索引,磁层使用性能较低的硬件,并且可以利用可搜索快照索引来最小化所需的资源

2.如何使用

当在某节点中添加了角色data_warm,那么该节点就被定义为warm节点

定义了角色该如何使用呢,因为本身涉及到冷热节点,所以需要结合ILM使用
1、首先在es节点配置文件elasticsearch.yml中修改节点角色,我这里分别添加三个节点的角色为data_hot,data_warm,data_cold

这里需要注意,如果你配置了data_hot角色就不要配置data角色,官方的解释是具有专用数据角色(data_hot/warm/cold)的节点不能具有通用data角色。否则的话数据流创建的时候会随机从这些节点中选择一个保存索引

但如果只添加data_hot/warm/cold等角色的话。符合ILM策略的数据流是可以创建并分配成功的。但是普通的索引就不能分配了。因此我们还要再添加一个data_content角色。
在这里插入图片描述

2、无需通过自定义属性来设置节点属性,直接用默认的配置就可以了,因为我们添加了data_warm角色,所以有这个角色的节点已经被申明为了warm节点。所以相比自定义属性的形式这种配置来的更加简单

这里要注意,使用kibana配置的话,如果不需要配置rollover,需要将其关闭,默认是开启的

在这里插入图片描述
3、ILM配置如下

PUT _ilm/policy/my_policy3
{
  "policy": {
    "phases": {
      "hot": {
        "min_age": "0ms",
        "actions": {
          "set_priority": {
            "priority": 100
          }
        }
      },
      "warm": {
        "min_age": "5s",
        "actions": {
          "set_priority": {
            "priority": 50
          }
        }
      },
      "cold": {
        "min_age": "8s",
        "actions": {
          "set_priority": {
            "priority": 0
          }
        }
      },
      "delete": {
        "min_age": "14s",
        "actions": {
          "delete": {
            "delete_searchable_snapshot": true
          }
        }
      }
    }
  }
}

4、我们来创建数据流测试一下
创建组件模版、索引模版

PUT _component_template/my-settings
{
  "template": {
    "settings": {
      "index.lifecycle.name": "my_policy3",
      "number_of_shards": 1,
      "number_of_replicas": 0
    }
  }
}

PUT _index_template/task1
{
  "index_patterns": ["mylogds*.*"],
  "composed_of": [ "my-settings"],
  "data_stream": { }
}

创建数据流

POST mylogds.prod/_doc
{
  "message": "1",
  "@timestamp": "2021-01-01T00:00:00"
}

3.查看结果

通过指令观察分片状态

GET _cat/shards?v 

1s时:索引保存在node1
在这里插入图片描述
6s时:索引转移到node2
在这里插入图片描述
9s时:索引转移到node3
在这里插入图片描述
15s时:索引已被删除
在这里插入图片描述
实验结果符合预期

4.易错点

1、配置了data_hot/data_warm/data_cold,还要再配置一个data_content,但不能配置data角色
2、kibana创建ILM时,如果不需要rollover,需要手动关闭

5.推荐阅读

【1】min_age是增量还是累计值
【2】深入理解Data Stream

目录
相关文章
The SqQueue for Sequential queue (Continuous updates) | Data
The code in Data book (5th Edition) from the 99 page to 100 page
69 0
|
存储 机器学习/深度学习 算法
Data topic details 2 | Data
数据结构结构教程 李春葆(第五版)习题 第二章
155 0
|
存储 人工智能 移动开发
Data topic details 7 | Data
数据结构结构教程 李春葆(第五版)习题 第七章
70 0
Data topic details 7 | Data
|
机器学习/深度学习 人工智能 算法
Data topic details 5 | Data
数据结构结构教程 李春葆(第五版)习题 第五章
114 0
|
存储 机器学习/深度学习 人工智能
Data topic details 6 | Data
数据结构结构教程 李春葆(第五版)习题 第六章
146 0
|
存储 机器学习/深度学习 人工智能
Data topic details 8 | Data
数据结构结构教程 李春葆(第五版)习题 第八章
70 0
Data topic details 8 | Data
|
存储 机器学习/深度学习 人工智能
Data topic details 1 | Data
数据结构结构教程 李春葆(第五版)习题 第一章
366 0
|
存储 算法 前端开发
Data topic details 3 | Data
数据结构结构教程 李春葆(第五版)习题 第三章
315 0
Data topic details 3 | Data
|
存储 算法
Data topic details 9 | Data
数据结构结构教程 李春葆(第五版)习题 第九章
95 0
Data topic details 9 | Data
|
存储 机器学习/深度学习 人工智能
Data topic details | Data
数据结构结构教程 李春葆(第五版)习题
517 0
Data topic details | Data