看,灰机...

elastisearch与mongodb的区别

Elasticsearchzqc0512 回复了问题 • 4 人关注 • 2 个回复 • 4765 次浏览 • 2018-11-12 15:31 • 来自相关话题

如何设计推荐系统

Elasticsearchrochy 回复了问题 • 4 人关注 • 1 个回复 • 5384 次浏览 • 2018-11-12 13:06 • 来自相关话题

date_histogram 设置extended_bounds,min和max范围无效。

Elasticsearchzz_hello 回复了问题 • 2 人关注 • 1 个回复 • 8243 次浏览 • 2018-11-12 12:36 • 来自相关话题

用Collapse去重后如何得到总条数

Elasticsearchrochy 回复了问题 • 3 人关注 • 2 个回复 • 4033 次浏览 • 2018-11-12 10:52 • 来自相关话题

logstash按月生成索引

Logstashrochy 回复了问题 • 2 人关注 • 1 个回复 • 2948 次浏览 • 2018-11-11 22:55 • 来自相关话题

参加 2018 Elastic 中国开发者大会是一个什么样的体验?

灌水区medcl 回复了问题 • 9 人关注 • 7 个回复 • 4389 次浏览 • 2018-11-25 11:17 • 来自相关话题

社区日报 第445期 (2018-11-11)

社区日报至尊宝 发表了文章 • 0 个评论 • 1771 次浏览 • 2018-11-11 10:37 • 来自相关话题

1.利用Elastic Machine Learning改善GoDaddy用户体验。
http://t.cn/EAKdvJf
2.使用ELASTICSEARCH,LOGSTASH和KIBANA可视化数据。
http://t.cn/EA9zCvV
3.使用Golang的Elasticsearch查询示例。
http://t.cn/RRmNcop

编辑:至尊宝
归档:https://elasticsearch.cn/article/6129
订阅:https://tinyletter.com/elastic-daily

问大家一个集群机器配置问题,求解答,万分感谢

Elasticsearchlaoyang360 回复了问题 • 3 人关注 • 2 个回复 • 2290 次浏览 • 2018-11-10 18:48 • 来自相关话题

Elastic日报 第444期 (2018-11-10)

Elasticsearchbsll 发表了文章 • 0 个评论 • 1741 次浏览 • 2018-11-10 09:16 • 来自相关话题

1、jcseg:一个集成更多NLP相关功能的分词插件

     http://t.cn/R5iirZ2

2、PB级Elasticsearch集群的分片分配策略

     http://t.cn/EAfPVjT

3、使用Elasticsearch在地图上查找特定元素的方法

     http://t.cn/EAfP8Bi




编辑:  bsll

归档:https://elasticsearch.cn/article/6128

订阅:https://tinyletter.com/elastic-daily

如何高效的查询 纯数字或者 字母

Elasticsearchlaoyang360 回复了问题 • 4 人关注 • 2 个回复 • 2997 次浏览 • 2018-11-10 07:06 • 来自相关话题

一个字段既需索引又要聚合,怎么设置mapping

Elasticsearchzqc0512 回复了问题 • 6 人关注 • 4 个回复 • 2425 次浏览 • 2018-11-12 09:18 • 来自相关话题

elasticSearch 6.3中Ingest节点

Elasticsearchxiaoke 回复了问题 • 5 人关注 • 3 个回复 • 4996 次浏览 • 2018-11-09 20:08 • 来自相关话题

请教如何通过transportClient存储script,及其获取或删除API,6.2.x版本

回复

ElasticsearchVeelur 发起了问题 • 1 人关注 • 0 个回复 • 3907 次浏览 • 2018-11-09 14:56 • 来自相关话题

kibana查询关键字问题

Kibanazqc0512 回复了问题 • 4 人关注 • 4 个回复 • 8463 次浏览 • 2018-11-12 09:27 • 来自相关话题

elasticsearch冷热数据读写分离

Elasticsearchjingpeiyang 发表了文章 • 2 个评论 • 25728 次浏览 • 2018-11-09 11:42 • 来自相关话题

Elasticsearch5.5冷热数据读写分离


前言


冷数据索引:查询频率低,基本无写入,一般为当天或最近2天以前的数据索引

热数据索引:查询频率高,写入压力大,一般为当天数据索引

当前系统日志每日写入量约为6T左右,日志数据供全线业务系统查询使用。

查询问题:

高峰时段写入及查询频率都较高,集群压力较大,查询ES时,常出现查询缓慢问题。

写入问题:

索引峰值写入量约为12w/s,且无副本。加上副本将导致索引写入速度减半、磁盘使用量加倍;不使用副本,若一个节点宕掉,整个集群无法写入,后果严重。

一、冷热数据分离


ES集群的索引写入及查询速度主要依赖于磁盘的IO速度,冷热数据分离的关键为使用SSD磁盘存储数据。

若全部使用SSD,成本过高,且存放冷数据较为浪费,因而使用普通SATA磁盘与SSD磁盘混搭,可做到资源充分利用,性能大幅提升的目标。

几个ES关键配置解读:

  • 节点属性(后续索引及集群路由分布策略均依据此属性)

    <br /> node.attr.box_type<br /> node.attr.zone<br /> ...<br />

    elasticsearch.yml中可增加自定义配置,配置前缀为node.attr,后续属性及值可自定义,如:box_type、zone,即为当前es节点增加标签,亦可在启动命令时设置:bin/elasticsearch -d -Enode.attr.box_type=hot

  • 索引路由分布策略

    <br /> "index.routing.allocation.require.box_type": "hot"<br />

    可在索引模板setting中设置,也可通过rest api动态更新。意义为索引依据哪个属性标签,对分片、副本进行路由分布。

    如我们对使用SSD作为存储介质的ES节点增加属性标签node.attr.box_type: hot,对其他SATA类ES节点增加属性标签node.attr.box_type: cool,将使当前索引的分片数据都落在SSD上。


    es-1.png





    后续对其索引配置更新为

    <br /> "index.routing.allocation.require.box_type": "cool"<br />

    将使索引分片从SSD磁盘上路由至SATA磁盘上,达到冷热数据分离的效果。


    es-4.png



  • 集群路由分布策略(此策略比索引级路由策略权重高)

    目的:不将鸡蛋放进一个篮子中。

    <br /> "cluster.routing.allocation.awareness.attributes": "box_type"<br />

    如上配置,新建索引时,索引分片及副本只会分配到含有node.attr.box_type属性的节点上。(该值可以为多个,如"box_type,zone")

    若集群中的节点box_type值只有一个,如只有hot,索引分片及副本会落在hot标签的节点上;若box_type值包括hot、cool,则同一个分片与其副本将尽可能不在相同的box_type节点上。

    此种场景使用于:同一个物理机含有多个ES节点,若这多个节点标签相同,使用此路由分布策略将尽可能保证相同物理机上不会存放同一个分片及其副本。

    <br /> "cluster.routing.allocation.awareness.force.box_type.values": "hot,cool"<br />

    强制使分片与副本分离。若只有hot标签的节点,索引只有分片可以写入,副本无法分配;若有hot、cool两种标签节点,相同分片与其副本绝不在相同标签节点上。


    es-2.png



    二、数据读写分离


    几点结论:

  • 若使当天索引及副本都写在SSD磁盘上,SSD磁盘使用量需20T以上,代价可能过高。(读写效率最高,但由于SSD节点肯定较少,读写都在相同节点上,节点压力会非常大)
  • 现有的方式,只使用普通的SATA磁盘存储,代价最低。(读写效率最低,即为当前运行状况)
  • 使用集群路由分配策略,SSD与SATA各存放1份数据,SSD磁盘需分配10T以上。(读写效率折中,均有较大提升)

    若使用折中方案,另一个问题考虑:

    SSD节点即有读操作,也有写操作,节点较少,压力还是较大,怎么实现mysql的主从模式,达到读写分离的效果?

    目标:使主分片分配在SSD磁盘上,副本落在SATA磁盘上,读取时优先从副本中查询数据,SSD节点只负责写入数据。

    实现步骤:

    1. 修改集群路由分配策略配置

      增加集群路由配置

      <br /> "allocation.awareness.attributes": "box_type",<br /> "allocation.awareness.force.box_type.values": "hot,cool"<br />

    2. 提前创建索引

      提前创建下一天的索引,索引配置如下(可写入模板中):

      <br /> PUT log4x_trace_2018_08_11<br /> {<br /> "settings": {<br /> "index.routing.allocation.require.box_type": "hot",<br /> "number_of_replicas": 0<br /> }<br /> }<br />

      此操作可使索引所有分片都分配在SSD磁盘中。

    3. 修改索引路由分配策略配置

      索引创建好后,动态修改索引配置

      <br /> PUT log4x_trace_2018_08_11/_settings<br /> {<br /> "index.routing.allocation.require.box_type": null,<br /> "number_of_replicas": 1<br /> }<br />


      es-5.png



    4. 转为冷数据

      动态修改索引配置,并取消副本数

      <br /> PUT log4x_trace_2018_08_11/_settings<br /> {<br /> "index.routing.allocation.require.box_type": "cool",<br /> "number_of_replicas": 0<br /> }<br />

      es-6.png