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

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

stab - freshman

赞同来自: rockybean Rubricate vincentKing

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

lz8086 - es小司机

赞同来自:

杀鸡焉用宰牛刀

wyntergreg

赞同来自:

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

Asura谢 - 90后码农

赞同来自:

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

要回复问题请先登录注册