我有个很棘手的问题,贴在这里,寻求帮助。
背景:
我有一大批数据,加起来总共大约40G的压缩包,在硬盘,解压后大约6千万数据,具体有多大我没有计算,现在已经进来的数据是六百万占了17.7G。
我的机器配置都一样,2G内存,20G 硬盘。
以下是我的问题:
第一: 根据以上配置,我的集群应该有设置多少分片,设置多少副本合适呢?
第二: 因为数据存在hdfs里,设计到建立索引,我用 elastic-hadoop插件dump,建立的索引每秒才150个.所以我在想es建立一个索引之后肯定做了别的操作,到底是什么操作呢?重点是,有没有方法提高索引的速度呢?
第三:因为数据量大,我把这么多数据放入同一个index 同一个 type,是不是属于合理的呢,如果不合理,应该怎么办,是一个index,多type.,还是 多index,一个type呢
第四:如何配置 集群config,以达到集群最优呢。
背景:
我有一大批数据,加起来总共大约40G的压缩包,在硬盘,解压后大约6千万数据,具体有多大我没有计算,现在已经进来的数据是六百万占了17.7G。
我的机器配置都一样,2G内存,20G 硬盘。
以下是我的问题:
第一: 根据以上配置,我的集群应该有设置多少分片,设置多少副本合适呢?
第二: 因为数据存在hdfs里,设计到建立索引,我用 elastic-hadoop插件dump,建立的索引每秒才150个.所以我在想es建立一个索引之后肯定做了别的操作,到底是什么操作呢?重点是,有没有方法提高索引的速度呢?
第三:因为数据量大,我把这么多数据放入同一个index 同一个 type,是不是属于合理的呢,如果不合理,应该怎么办,是一个index,多type.,还是 多index,一个type呢
第四:如何配置 集群config,以达到集群最优呢。
11 个回复
wanglihus - 80后IT男
赞同来自: Mr_Chen 、luqixinhe 、lz8086 、exceptions 、laoyang360 、wenhe 、denghc0607 、Atom 、runzhliu 、Goun 、mghio 、mzq 、chachabusi 、lvwendong 、doom 、supolu 、JiangJibo 、xzy更多 »
stab - freshman
赞同来自: rockybean 、Rubricate 、vincentKing 、夜玉 、laoyang360 、newairisme 、Julian 、fcb_es 、doom更多 »
有一点要先说,你应该把你现在的集群大小(节点数)之类告知一下。
1.首先,节点的内存分配的太少了,ES其实很占内存,大部分的操作都是建立在内存足够的基础上,你的数据量应该在150G-200G左右,我觉得可以把内存调整到10G左右。
2.索引过程中,分词会对索引速度有所影响,建议你可以优化一下你的mapping,不必要的就不必分词,甚至不必设成可搜索的了。
3. 多index还是多type需要根据你的情况来分析,如果你需要实现多租户,那必须多index来实现。数据量过的话,可以按时间分成多个indics,需要的话,还可以给这些indics添加别名。
4. 分片和副本的设计,应该根据节点数来调整,正常情况下 节点数= (副本数+1)*分片数,若是你希望提高搜索性能,可是适当提高副本数。
仅供参考~
夜玉
赞同来自: laoyang360 、zhangyufu 、winterFell 、medcl 、aimerwhy 、cnfang更多 »
wyntergreg
赞同来自: 夜玉 、zhangyufu 、newairisme 、cnfang 、josancpp
es用默认设置就行,3000万数据不需要特别设置
那些叫嚷着3000万,6000万用mysql的同学,先不说mysql是否真能撑住,即使撑住了,一大堆的分区分表分索引不觉得繁琐吗?
Asura谢 - 90后码农
赞同来自: newairisme
lz8086 - es小司机
赞同来自:
SongJianjun
赞同来自:
https://www.ksh17j.com/question/2893
上面的链接,是我遇到的,这会还没有解决。
xinian
赞同来自:
ESWorker
赞同来自:
关于硬件,当然内存要够大,能够支撑集群正常运行(不会OOM)。
关于多少分片,记得以前看过官方建议的是压力测试,就是先启一个单节点,然后导入数据,观察日志如果抛memony out ... 异常,则说明到了性能瓶颈。
关于速度,当然是bulk接口,调整每个批次的大小(不是越大越好)。
关于优化,什么字段索引,分词,缓存,分索引,别名。。太多,要根据情况,这方面帖子挺多的。
muou
赞同来自:
doom
赞同来自: