elasticsearch冷热数据的读写分离

author author     2022-09-13     338

关键词:

 

步骤

一、冷热分离集群配置

比如三个机器共六个node的es集群。

每个机器上各挂载一个ssd 和 一个sata。每个机器需要启动两个es进程、每个进程对应不同类型的磁盘。

关键配置:

node.max_local_storage_nodes: 2   #允许每个机器启动两个es进程

path.data: /home/centos/es/elasticsearch-2.1.0/data/ssd   #需要显示指定es对应的数据目录

启动命令中需要指定node tag

./elasticsearch -d -Des.path.conf=/home/centos/es/elasticsearch-2.1.0/config/ssd -d --node.tag=ssd
./elasticsearch -d -Des.path.conf=/home/centos/es/elasticsearch-2.1.0/config/sata -d --node.tag=sata

 

启动以后节点如下:

 技术分享

 

二、创建索引模板

http://192.168.126.132:9200/_template/hottest/    PUT

{
    "order": 1,
    "template": "hottest*",
    "settings": {
        "index": {
            "number_of_shards": "3",
            "number_of_replicas": "1",
            "refresh_interval": "1s",
            "routing.allocation.require.tag": "ssd"
        }
    },
    "mappings": {
        "_default_": {
            "properties": {
                "userid": {
                    "index": "not_analyzed",
                    "type": "string"
                },
                "username": {
                    "index": "not_analyzed",
                    "type": "string"
                },
                "sex": {
                    "index": "not_analyzed",
                    "type": "string"
                },
                "address": {
                    "index": "no",
                    "type": "string"
                }
            },
            "_all": {
                "enabled": false
            }
        }
    },
    "aliases": {
        "hottest": {}
    }
}
"routing.allocation.require.tag": "ssd"  指定默认写入到 ssd 节点。

 

三、插入数据

http://192.168.126.132:9200/hottest_20170805/def/100001/  PUT

{
    "userid": "100001",
    "username": "zhangsan",
    "sex": "1",
    "address": "beijing"
}

在head 中看到数据全部保存在的 ssd 节点。

技术分享

 

四、定时迁移老数据到 sata

http://192.168.126.132:9200/hottest_20170805/_settings/  PUT

{
    "index.routing.allocation.require.tag": "sata"
}

在head中看到数据移动到了 sata 节点

技术分享

 

解决了两个问题

一、使用有限的ssd节点资源来实现同时支持高并发读写和大数据量的存储。

       通过配置使最新的数据保存在ssd磁盘节点上,较老的数据自动迁移到廉价sata节点。

二、用户做一次大的查询,大量的读io和聚合操作导致集群load升高,阻塞新数据的写入,能做到一定程度的读写分离。

elasticstack系列之二十&数据均衡迁移冷热分离以及节点自动发现原理与机制

...据均衡  某个shard分配到哪个节点上,一般来说,是由ELasticSearch自行决定的。以下几种情况会触发分配动作:新索引的建立索引的删除新增副本分片节点增减引发的数据均衡  在动态分配的时候有几个默认值需要注意,当然... 查看详情

异构存储(冷热数据分离)(代码片段)

异构存储主要解决不同的数据,存储在不同类型的硬盘中,达到最佳性能的问题。异构存储Shell操作(1)查看当前有哪些存储策略可以用[lytfly@hadoop102hadoop-3.1.4]$hdfsstoragepolicies-listPolicies(2)为指定路径&... 查看详情

冷热数据库分离思路(代码片段)

1、数据库分库而不是分表,分表需要考虑后期的查询问题,此外还需要注意分表的算法(哈希算法)。2、热数据只占全部数据的一部分,因此每次优先查询热库,以下情况才查询冷库  - 当查询条件未命中(结果集为... 查看详情

mysql:15mysql是如何基于冷热数据分离的方案去优化lru算法的

1.基于冷热数据分离的思想设计LRU链表MySQL在设计LRU链表的时候,采取的实际上是冷热数据分离的思想。前面的问题,都是由于所有缓存页都混在一个LRU链表里,才导致的。真正的LRU链表,会被拆分为两个部分࿰... 查看详情

elasticsearch集群架构及底层原理

前言ElasticSearch考虑到大数据量的情况,集群有很多的部署模式,本篇不会具体进行演示了,只是说明一下有哪些架构可以选,及一些原理的简单介绍,如果要看具体操作的那么可以自行进行搜索,这不是... 查看详情

大数据的一生一世——谈数据冷热分离技术

前言对于一个软件系统,无论其业务逻辑复杂到何种程度,最终都将体现到一条(批)数据的CRUD操作上,即创建、查询、更新与删除。正如人类面临生死的轮回,数据亦是如此。一条数据从被创建出来开... 查看详情

大数据的一生一世——谈数据冷热分离技术

前言对于一个软件系统,无论其业务逻辑复杂到何种程度,最终都将体现到一条(批)数据的CRUD操作上,即创建、查询、更新与删除。正如人类面临生死的轮回,数据亦是如此。一条数据从被创建出来开... 查看详情

tidb6.0实战分享丨冷热存储分离解决方案(代码片段)

...行直接的管理,满足不同的业务场景需要。如:1.冷热分离存储,降低存储成本TiDB6.0正式支持数据冷热存储分离,可以降低SSD使用成本 查看详情

大数据之hadoop的hdfs存储优化—异构存储(冷热数据分离)

异构存储主要解决,不同的数据,储存在不同类型的硬盘中,达到最佳性能的问题1)存储类型RAM_DISK:内存镜像文件系统SSD:SSD固态硬盘DISK:普通磁盘,在HDFS中,如果没有主动声明数据目录储存类型默认都是DISKARCHIVE:没有特... 查看详情

efk教程-es集群开启用户认证(代码片段)

...证作者:“发颠的小狼”,欢迎转载目录?用途?关闭服务?elasticsearch-修改elasticsearch.yml配置?elasticsearch-开启服务?elasticsearch-建立本地内置用户?kibana-创建私钥库?kibana-WEB界面确认用户?filebeat-在WEB界面创建角色及用户?filebeat-服务器... 查看详情

存储优化--分区与冷热分离

本文是专题的第一篇文章,主要讲解优化数据存储,涉及到锁、批处理、重试机制以及数据一致性等问题。下面我们就开始吧。一、案例有一个客服工单系统,会从邮件服务器中获取客服邮箱收到的邮件,并且将这些邮件自动生... 查看详情

深入浅出剖析elasticsearch的工作原理

   随着日志量的增加,es在不停的调整,结构层面的冷热数据分离、master和client节点的分离并引入部落节点,es集群层面的index优化、flush优化、merge优化、内存熔断优化,系统层面的GC、文件描述符、进程数、关闭交换... 查看详情

elasticsearch7.6中遇到的一些坑

一.限制单个index在单个节点上的总shard数。index.routing.allocation.total_shards_per_node一般在冷热分离的场景种,冷数据会设置副本,热数据为了保证写入速度,只有主分片。当以均衡index中的shard数为目的,设置了该限制后,若冷数据... 查看详情

存储优化--查询分离

上一篇文章中我们讲解了利用数据库分区与冷热分离的方式来优化存储,虽然解决了查询速度慢的问题,但是在海量数据情况下依然会出现查询缓慢问题,并且部分系统中的冷热数据也是需要频繁或同时查询的。那么,这篇文章... 查看详情

数据归档,冷热数据分离(代码片段)

一.关于tokudb引擎1.tokudb引擎特点1.高压缩比,高写入性能2.在线创建索引和字段3.在线事务4.支持索引同步2.tokudb安装步骤1.yuminstalljemalloc-y2.vim/etc/my.cnf#添加如下[mysqld_safe]malloc-lib=/usr/lib64/libjemalloc.so.13.echonever>/sys/kernel/mm/transparent... 查看详情

apachedruid0.17版本冷热数据分离设置

参考技术A[1]第一次更改规则[2]第二次更改规则[3]经过多次的配置之后发现,还是这样的问题,[4]我决定把node3设置为hot[5]配置热数据保存最近2个小时2个副本[6]加载最近4个小时的数据,前1小时为热数据,后3个小时为冷数据,其... 查看详情

springcloudalibaba-sharding-读写分离和分库分表配置(代码片段)

...满足不了海量用户请求以及数据sql数据处理。应用而出的ElasticSearch等搜索引擎技术,进行数据处理和挖掘,但是这种第三方框架,对数据库本身的性能还是没有提升,于是便有了数据库的分库,读写分离分表,拆分 查看详情

mysql:16基于冷热数据分离方案优化后的lru链表如何实现缓存页的淘汰机制

1.对于预读机制以及全表扫描加载进来的一大堆缓存页在经过优化的LRU链表方案下,预读机制以及全表扫描加载进来的一大堆缓存页,都会被放在LRU链表的冷数据区域的前面。假设这个时候热数据区域已经有很多被频繁访... 查看详情