3千万数据,如何设计集群

我有个很棘手的问题,贴在这里,寻求帮助。
背景:
我有一大批数据,加起来总共大约40G的压缩包,在硬盘,解压后大约6千万数据,具体有多大我没有计算,现在已经进来的数据是六百万占了17.7G。
我的机器配置都一样,2G内存,20G 硬盘。

以下是我的问题:

第一: 根据以上配置,我的集群应该有设置多少分片,设置多少副本合适呢?
第二: 因为数据存在hdfs里,设计到建立索引,我用 elastic-hadoop插件dump,建立的索引每秒才150个.所以我在想es建立一个索引之后肯定做了别的操作,到底是什么操作呢?重点是,有没有方法提高索引的速度呢?
第三:因为数据量大,我把这么多数据放入同一个index 同一个 type,是不是属于合理的呢,如果不合理,应该怎么办,是一个index,多type.,还是 多index,一个type呢
第四:如何配置 集群config,以达到集群最优呢。
已邀请:

wanglihus - 80后IT男

赞同来自: Mr_Chen luqixinhe lz8086 exceptions laoyang360 wenhe denghc0607 Atom更多 »

技术选型就是错误的,这种业务背景下,用什么elastic-hadoop插件,还用什么elasticsearch啊,关系型数据库就可以满足你的需求,脱裤子放屁,多此一举。

stab - freshman

赞同来自: rockybean Rubricate vincentKing 夜玉 laoyang360 newairisme Julian更多 »

我没用过这么多的数据,仅提供一些个人的见解。
有一点要先说,你应该把你现在的集群大小(节点数)之类告知一下。
1.首先,节点的内存分配的太少了,ES其实很占内存,大部分的操作都是建立在内存足够的基础上,你的数据量应该在150G-200G左右,我觉得可以把内存调整到10G左右。
2.索引过程中,分词会对索引速度有所影响,建议你可以优化一下你的mapping,不必要的就不必分词,甚至不必设成可搜索的了。
3. 多index还是多type需要根据你的情况来分析,如果你需要实现多租户,那必须多index来实现。数据量过的话,可以按时间分成多个indics,需要的话,还可以给这些indics添加别名。
4. 分片和副本的设计,应该根据节点数来调整,正常情况下 节点数= (副本数+1)*分片数,若是你希望提高搜索性能,可是适当提高副本数。
仅供参考~

夜玉

赞同来自: laoyang360 zhangyufu winterFell medcl

哎~~这是我两年前问的一个问题, 此问题的目的是关注对es性能调优,以及 hdfs到es的最佳实践问题,没想到最后结果是都建议我用mysql...............................
 

wyntergreg

赞同来自: 夜玉 zhangyufu newairisme

用redis缓存,logstash抽取到es中即可
es用默认设置就行,3000万数据不需要特别设置
那些叫嚷着3000万,6000万用mysql的同学,先不说mysql是否真能撑住,即使撑住了,一大堆的分区分表分索引不觉得繁琐吗?

Asura谢 - 90后码农

赞同来自: newairisme

20个GB,6千万条数据,MYSQL也能撑住。我就用了一台服务器16GB,4核8线程,跑了其它业务,把ELK全套搭在里面,完全没有性能问题。

lz8086 - es小司机

赞同来自:

杀鸡焉用宰牛刀

SongJianjun

赞同来自:

楼主,你的问题解决了吗?
https://elasticsearch.cn/question/2893
上面的链接,是我遇到的,这会还没有解决。

xinian

赞同来自:

搭建着不难,够简单环境下的使用没问题,但是复杂需求,一些配置,优化什么的就麻烦了。

ESWorker

赞同来自:

我这里的场景是日均6亿+数据索引。如果你坚持选用ES,可参考以下:
关于硬件,当然内存要够大,能够支撑集群正常运行(不会OOM)。
关于多少分片,记得以前看过官方建议的是压力测试,就是先启一个单节点,然后导入数据,观察日志如果抛memony out ... 异常,则说明到了性能瓶颈。
关于速度,当然是bulk接口,调整每个批次的大小(不是越大越好)。
关于优化,什么字段索引,分词,缓存,分索引,别名。。太多,要根据情况,这方面帖子挺多的。
 

要回复问题请先登录注册