赞
踩
ES的一个概念就是去中心化,字面上理解就是无中心节,与集群中任何一个节点的通信和与整个集群通信是等价的。
2、节点(node)
ES集群中节点粗略分为:
1)候选主节点(主要负责主节点选举,被选举成为主节点后,管理集群变更,如创建或删除索引,跟踪哪些节点是群集的一部分,并决定哪些分片分配给相关的节点)
2)数据节点(主要用于存储分片数据与副本数据,可接收数据读写请求)
3)协调节点(既不负责节点选举,也不负责数据存储,仅能接收数据请求与数据汇总,起到负载分流的作用)。
注:
1)节点可既是候选主节点,也是数据节点。(但在大数据集群中不建议如此使用,防止主节点过大而宕机,导致集群无法使用)。
2)候选主节点数需为奇数,如果为偶数ES集群自动忽略一个候选主节点,如果超过半数候选主节点不可用,整个集群失效,建议候选主节点数为3.
主分片用以解决水平扩展的问题,通过主分片可以将数据分布到集群内的所有节点上(主分片数是索引创建时指定的,一旦创建不允许更改,除非reindex)
增加数据节点,集群自动重新规划分片存放的节点,如:
原有6个分片,2个数据节点,分布如下:
node0 | node1 |
shard 0, shard 1, shard 2 | shard 3, shard 4, shard 5 |
增加一个节点入集群,即三个数据节点,分布如下:
node0 | node1 | node2 |
shard 0, shard 1 | shard 2, shard 3 | shard 4, shard 5 |
分片数过小(导致后续无法通过增加节点来水平扩容,即上面的例子,超过6个数据节点后再增加节点,无法起到预想的扩容效果,会导致单分片数据过大)
副本为分片数据备份,可作为主分片数据宕机后数据恢复的依据,同时也可以承担数据请求查询压力,即副本增加可提升负载能力。
注:主分片与副本不会在同一个节点上,单机副本无效。
索引设置有3个分片P,1个副本数据R
node0 | node1 | node2 |
P0 | P1 | P2 |
R1 | R2 | R0 |
hash(routing<默认为_id>) % 主分片数
1)、部署地址
集群名称:wasion-overseas-cluster
节点名称 | wasion-overseas-1 | wasion-overseas-2 | wasion-overseas-3 |
地址 | 172.20.8.130 | 172.20.8.130 | 172.20.8.154 |
HTTP通信端口 | 9200 | 9202 | 9500 |
集群通讯端口 | 9400 | 9402 | 9400 |
候选主节点 | 是 | 是 | 是 |
数据节点 | 是 | 是 | 是 |
2)、配置信息
#集群名称
cluster.name: wasion-overseas-cluster
#节点名称
node.name: wasion-overseas-1
#节点ip地址
network.host: 172.20.8.130
#节点http通信端口
http.port: 9200
#集群通信端口
transport.tcp.port: 9400
#集群候选主节点列表
discovery.seed_hosts: ["172.20.8.130:9400", "172.20.8.130:9402", "172.20.8.154:9400"]
#默认启动主节点
cluster.initial_master_nodes: ["wasion-overseas-1"]
3)、查询集群情况
GET /_cluster/health
GET _cat/nodes?v
PUT _template/kafka_topic
{
"index_patterns":[
"kafka_topic"
],
"settings":{
"number_of_shards": 5, #分片数量
"number_of_replicas": 1, #副本数量
"max_result_window": 5000
},
"mappings":{
"properties":{
"id":{
"type":"keyword",
"index":"true"
},
"name":{
"type":"keyword",
"index":"true"
},
"offset":{
"type":"long",
"index":"false"
},
"sum":{
"type":"long",
"index":"false"
},
"partitionIdx":{
"type":"long",
"index":"true"
},
"updateTime":{
"type":"keyword",
"index":"false"
}
}
}
}
每日最大数据量为:5760000(15分钟日冻结) + 120000 (日快照数据) + 60000 (月冻结数) = 5940000
单条数据平均大小:400B
每日数据总容量:5940000 * 400B = 2.2GB
每月总容量:66GB
三个分片,每个分片是22GB
五个分片,每个分片是13.2GB
得出结论数据按月分表,单索引总量为66G,数据5个分片,每个分片数据不会超过20G
集群各节点如下:
节点 | mdr-0 | mdr-1 | mdr-2 |
地址 | 10.232.107.244 | 10.232.107.243 | 10.232.107.245 |
http通信端口 | 9200 | 9200 | 9200 |
集群通信端口 | 9300 | 9300 | 9300 |
候选主节点 | 是 | 是 | 是 |
数据节点 | 是 | 是 | 是 |
初始化主节点 | 是 | 否 | 否 |
ES数据存储地址 | C:\MDR\elasticsearch-7.12.0 | C:\MDR\elasticsearch-7.12.0 | C:\MDR\elasticsearch-7.12.0 |
内存配置 | -Xmx12g –Xms12g –Xmn6g | -Xmx12g –Xms12g –Xmn6g | -Xmx12g –Xms12g –Xmn6g |
1、停止数据分片,停止数据入库
PUT _cluster/settings?pretty
{
"persistent": {
"cluster.routing.allocation.enable": "all"
}
}
2、重启节点
3、恢复数据分片与恢复数据入库
PUT _cluster/settings?pretty
{
"persistent": {
"cluster.routing.allocation.enable": "all"
}
}
合并命令
POST _reindex?slices=9&refresh&wait_for_completion=false
{
"source": {
"index": "frozen_curve_20220201,frozen_curve_20220202,frozen_curve_20220203,frozen_curve_20220204,frozen_curve_20220205,frozen_curve_20220206,frozen_curve_20220207,frozen_curve_20220208,frozen_curve_20220209,frozen_curve_20220210,frozen_curve_20220211,frozen_curve_20220212,frozen_curve_20220213,frozen_curve_20220214,frozen_curve_20220215,frozen_curve_20220216,frozen_curve_20220217,frozen_curve_20220218,frozen_curve_20220219,frozen_curve_20220221,frozen_curve_20220222,frozen_curve_20220223,frozen_curve_20220224,frozen_curve_20220225,frozen_curve_20220226,frozen_curve_20220227,frozen_curve_20220228",
"size": 5000
},
"dest": {
"index": "frozen_curve_202202"
}
}
执行合并之后,kibana会立即返回一个任务ID
根据如下命令查看任务进度
GET _cat/tasks?detailed=true&actions=*reindex
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。