[elk]elasticsearch实现冷热数据分离

本文以最新的elasticsearch-6.3.0.tar.gz为例,为了节约资源,本文将副本调为0, 无client角色

https://www.elastic.co/blog/hot-warm-architecture-in-elasticsearch-5-x

以前es2.x版本配置elasticsearch.yml 里的node.tag: hot这个配置不生效了

被改成了这个
node.attr.box_type: hot

es架构

各节点的es配置

master节点:
[[email protected] ~]# cat /usr/local/elasticsearch/config/elasticsearch.yml
cluster.name: elk
node.master: true
node.data: false
node.name: 192.168.2.11
#node.attr.box_type: hot
#node.tag: hot
path.data: /data/es
path.logs: /data/log
network.host: 192.168.2.11
http.port: 9200
transport.tcp.port: 9300
transport.tcp.compress: true
discovery.zen.ping.unicast.hosts: ["192.168.2.11"]
cluster.routing.allocation.disk.watermark.low: 85%
cluster.routing.allocation.disk.watermark.high: 90%
indices.fielddata.cache.size: 10%
indices.breaker.fielddata.limit: 30%
http.cors.enabled: true
http.cors.allow-origin: "*"
- client节点(这里就不配置了)

node.master: false
node.data: false
- hot节点
[[email protected] ~]# cat /usr/local/elasticsearch/config/elasticsearch.yml
cluster.name: elk
node.master: false
node.data: true
node.name: 192.168.2.12
node.attr.box_type: hot
path.data: /data/es
network.host: 192.168.2.12
http.port: 9200
transport.tcp.port: 9300
transport.tcp.compress: true
discovery.zen.ping.unicast.hosts: ["192.168.2.11"]
cluster.routing.allocation.disk.watermark.low: 85%
cluster.routing.allocation.disk.watermark.high: 90%
indices.fielddata.cache.size: 10%
indices.breaker.fielddata.limit: 30%
http.cors.enabled: true
http.cors.allow-origin: "*"
- cold节点
[[email protected] ~]# cat /usr/local/elasticsearch/config/elasticsearch.yml
cluster.name: elk
node.master: false
node.data: true
node.name: 192.168.2.13
node.attr.box_type: cold
path.data: /data/es
network.host: 192.168.2.13
http.port: 9200
transport.tcp.port: 9300
transport.tcp.compress: true
discovery.zen.ping.unicast.hosts: ["192.168.2.11"]
cluster.routing.allocation.disk.watermark.low: 85%
cluster.routing.allocation.disk.watermark.high: 90%
indices.fielddata.cache.size: 10%
indices.breaker.fielddata.limit: 30%
http.cors.enabled: true
http.cors.allow-origin: "*"

如何实现某索引数据写到指定的node?(根据节点tag即可)

我hot节点打了tag

node.attr.box_type: cold
创建一个template(这里我用kibana来操作es的api)

PUT _template/test
{
    "index_patterns": "test-*",
    "settings": {
        "index.number_of_replicas": "0",
        "index.routing.allocation.require.box_type": "hot"
     }
}

意思是test-*索引命名的,都将其数据放到hot节点上.

如何实现数据从hot节点迁移到老的cold节点?

以test-2018.07.05索引为例,将它从hot节点迁移到cold节点

kibana里操作:

PUT /test-2018.07.05/_settings
{
  "settings": {
    "index.routing.allocation.require.box_type": "cold"
  }
}

生产中可能每天,或每h,生成一个index.

test-2018.07.01
test-2018.07.02
test-2018.07.03
test-2018.07.04
test-2018.07.05
...

我可以写一个sh定时任务,每天晚上定时迁移数据.
如我在hot节点只保留7天的数据,7天以前的索引我匹配到, 每天晚上执行以下迁移命令即可.

cold节点数据保留1个月?

https://www.cnblogs.com/iiiiher/p/8029062.html

优化点:

1.为了提高吞吐量

path.data:/data1,/data2,/data3,/data4,/data5 可以每个目录挂一块盘

2.如果有10台hot节点,可以设置10个shards

logstash测试

input { stdin { } }
output {
    elasticsearch {
        index => "test-%{+YYYY.MM.dd}"
        hosts => ["192.168.2.11:9200"]
    }
    stdout {codec => rubydebug}
}

/usr/local/logstash/bin/logstash -f logstash.yaml --config.reload.automatic

关于es的index template

关于es的template
es数据入库时候都会匹配一个index template,默认匹配的是logstash这个template

template大致分成setting和mappings两部分

  1. settings主要作用于index的一些相关配置信息,如分片数、副本数,tranlog同步条件、refresh等。
  2. mappings主要是一些说明信息,大致又分为_all、_source、prpperties这三部分: https://elasticsearch.cn/article/335

根据index name来匹配使用哪个index template. index template属于节点范围,而非全局. 需要给某个节点单独设置index_template(如给设置一些特有的tag).

原文地址:https://www.cnblogs.com/iiiiher/p/9268832.html

时间: 2024-10-10 02:46:50

[elk]elasticsearch实现冷热数据分离的相关文章

数据归档,冷热数据分离

一.关于tokudb引擎 1.tokudb引擎特点 1.高压缩比,高写入性能 2.在线创建索引和字段 3.在线事务 4.支持索引同步 2.tokudb安装步骤 1.yum install jemalloc -y 2.vim /etc/my.cnf #添加如下 [mysqld_safe] malloc-lib=/usr/lib64/libjemalloc.so.1 3.echo never >/sys/kernel/mm/transparent_hugepage/enabled echo neve

ElasticSearch5.X的冷热数据架构

转载:https://my.oschina.net/xiaomaijiang/blog/826701 当使用ElasticSearch做大规模的时序数据分析的时候,我们建议使用基于时序的索引并且采用3种不同类型的节点组成分层架构(Master.Hot-Node.Warm-Node),也就是我们所说的"Hot-Warm"架构. Master Nodes 我们建议使用3个独立的主节点来提供足够的弹性,为了防止脑裂的问题,你应该把discovery.zen.minimum_master_no

ELK(elasticsearch+kibana+logstash)搜索引擎(二): elasticsearch基础教程

1.elasticsearch的结构 首先elasticsearch目前的结构为 /index/type/id  id对应的就是存储的文档ID,elasticsearch一般将数据以JSON格式存储.我们可以将elasticsearch和关系型数据库进行比较,index相当于关系型数据库中的database,type相当于table,而id就相当于表中的主键,elasticsearch中一个文档存储的一个json则能视为是关系型数据库中一张表的一行数据,而ID就是他的主键,在理解了es的存储结构

Robot Framework--05 案例设计之流程与数据分离

转自:http://blog.csdn.net/tulituqi/article/details/7651049 这一讲主要说一下案例设计了.还记得我们前面做的case么?先打开浏览器访问百度,输入关键字,点击搜索. 我们再加上个检查点,检查一下标题是否包含我的关键字,然后关闭浏览器.就是下面这样了. 这样就可以算是一个比较完整的案例了,包含完整的流程和检查点,那么这时候如果我要增加一个案例,搜索另外的内容怎么办呢? 在原来的case上修改肯定是不合适的,毕竟那个案例可能还是需要保留的. 最简单

表现和数据分离的好处

http://www.cnblogs.com/yexiaochai/p/3167465.html 1.界面与数据的分离,必须体现在代码上,界面的代码归界面的代码,数据的代码归数据的代码,两者必须泾渭分明. 2.当界面需求发生改变,只需要改写界面的代码,并且所改写的代码不能影响到数据访问的代码. 只有做到这两者才算界面与数据分离.叶小钗同学让我上代码,趁今天还不是很忙,写下了下面的代码: <!DOCTYPE html> <html lang="en"> <h

模版+数据分离渲染方式的设计与实现

一 背景 1 现状 模版存放于后端 php输出页面html结构进行页面渲染 ajax请求,需要重渲结构时,php输出html结构 builder制作静态页面结构 jser完成页面交互逻辑开发 2 不足 模版数据无法存储本地,导致每次打开页面请求数据量巨大 数据每次要从接入层web服务器读取,没有合理利用CDN加速静态模版内容 联调成本较大,不利于前端控制页面展示和交互开发 3 解决方案 后端直接输出json数据 试图把渲染页面的模版存放在前端 4 技术路线 5 理论意义 利用CDN保存html模

JSON解析 实现界面 数据分离.

JSON 作为一种轻量级的数据交换格式,正在逐步取代XML,成为网络数据的通用格式 基于JavaScript的一个子集 易读性略差,编码手写难度大,数据量小 JSON格式取代了XML给网络传输带来了很大的便利,但是却没有了XML的一目了然,尤其是JSON数据很长的时候,我们会陷入繁琐复杂的数据节点查找中 JSON格式说明 对象 {} 格式 {key : value, key : value,...} 的键值对的结构 可以反序列化为OC中的NSDictionary 数组 [] 格式 ["java&

【C/C++学院】0723-32位与64位/调戏窗口程序/数据分离算法/内存检索/二分查找法/myVC

[送给在路上的程序员] 对于一个开发者而言,能够胜任系统中任意一个模块的开发是其核心价值的体现. 对于一个架构师而言,掌握各种语言的优势并阿赫利运用到系统中,由此简化系统的开发,是其架构生涯的第一步. 对于一个开发团队而言,能在短期内开发出用户满意的软件系统是起核心竞争力的体现. 每一个程序员都不能固步自封,要多接触新的行业,新的技术领域,突破自我. 32位与64位 地址与内存的关系 4G = 4*1024M = 4*1024*1024k = 4*1024*1024*1024 Byte字节 =

IOS第七天(2:UiTableView 加上数据分离)

****加上数据分离 #import "HMViewController.h" #import "HMStudent.h" @interface HMViewController () <UITableViewDataSource> @property (weak, nonatomic) IBOutlet UITableView *tableView; /** 数据列表 */ @property (nonatomic, strong) NSArray *