关于hermes与solr,es的定位与区别

Hermes与开源的solr、elasticsearch有什么不同?谈到hermes的索引技术,相信很多同学都会想到solr、elasticsearch。
“开源世界有solr、elasticsearch为什么还要使用hermes”。
这个也是最近大家问的最多的问题,也是大家会比较关心的问题
solr、elasticsearch在真可谓是大名鼎鼎,是两个顶级项目,在回答这个问题之前,大家可以思考一个问题,既然已经有了oracle、mysql等数据库为什么大家还要使用hadoop下的hive、spark? oracle和mysql也有集群版,也可以分布式,那hadoop与hive的出现是不是多余的?
hermes的出现,并不是为了替代solr、es的,就像hadoop的出现并不是为了干掉oracle和mysql一样。而是为了满足不同层面的需求。
Hermes与solr,es定位完全不同。
solr、es的使用特点如下:
1. 源自搜索引擎,侧重搜索与全文检索。
2. 数据规模从几百万到几千万不等,数据量过亿的集群特别少。
Ps:有可能存在个别系统数据量过亿,但这并不是普遍现象(就像oracle的表里的数据规模有可能超过hive里一样,但需要小型机)。
hermes:的使用特点如下:
1. 一个基于搜索引擎技术的海量数据实时检索分析平台。侧重数据分析。
2. 数据规模从几亿到几万亿不等。最小的表也是千万级别。
在腾讯12台机器,就可以处理每天350亿的数据(每条数据1kb左右),数据可以保存一个月之久。

solres 更偏重于为小规模的数据提供全文检索服务;
hermes则为大规模的数据仓库提供索引支持,为大规模数据仓库提供即席分析的解决方案,并降低数据仓库的成本,hermes数据量更“大”。

定位和数据规模的不同导致了hermes与solr、es的对索引使用方式有着本质的区别。
下面从大数据的视角来阐述,为什么hermes更适合做大索引。
solr、es的索引严重依赖物理内存:
1. 一级跳跃表是完全load在内存中的,除了需要消耗很多内存,首次打开索引的加载速度会特别慢,
在solres中的索引是一直处于打开状态的,不会频繁的打开与关闭;
这种模式会制约一台机器的索引数量与索引规模,通常一台机器固定负责某个业务的索引。
2. 排序和统计(sum,max,min),是通过遍历倒排表,将某一列的全部值都load到内存里,然后基于内存数据进行统计
即使一次查询只会用到其中的一条记录,也会将整列的全部值都load到内存里,台浪费资源,首次查询的性能太差。
数据规模受物理内存限制很大,索引规模上千万后OOM是常事。
3. 索引存储在本地硬盘,出现异常后,因为数据要恢复,copy的时间要太久。
4. 支持master/slave模式,但是跟传统mysql数据库一样,集群规模并没有特别大的。
这种模式处理集群规模受限外,每次扩容的数据迁移将是一件非常痛苦的事情,数据迁移时间太久。
5. 倒排检索即使某个词语存在数据倾斜,因数据量比较小,也可以将全部的doclist都读取过来(比如说男、女),这个doclist会占用较大的内存进行cache,当然在数据规模较小的情况下占用内存不是特别多,查询命中率很高,会提升检索速度,但是数据规模上来后,这里的内存问题越来越严重。
6. Merger server只能是一个,制约了查询的节点数量;数据不能进行动态分区,数据规模上来后单个索引太大。
Hermes的索引特点如下:
1. 大部分的索引处于关闭状态,只有真正用到索引才会去打开;一级跳跃表采用按需load,并不会load整个跳跃表,用来节省内存和提高打开索引的速度。Hermes经常会根据业务的不同去动态的打开不同的索引,关闭那些不经常使用的索引,这样同样一台机器,可以被多种不同的业务所使用,机器利用率高。
2. 排序和统计并不会使用数据的真实值,而是通过标签技术将大数据转换成占用内存很小的数据标签,占用内存是原先的几十分之一。
另外不会将这个列的全部值都load到内存里,而是用到哪些数据load哪些数据,依然是按需load。不用了的数据会从内存里移除。
3. 索引存储在hdfs中,理论上只要hdfs有空间,就可以不断的添加索引,索引规模不在严重受机器的物理内存和物理磁盘的限制。
4. 采用yarn进行进程管理,数据在hdfs中,集群规模和扩容都是一件很easy的事情。
5. 如果某个词语存在数据倾斜,则会与其他条件组合进行跳跃合并(参考doclist的skiplist资料)。
6. 采用多级的merger server;数据可以根据业务的不同,采用不同的分区方式。

评论 (2)
  1. 沙发
    新用户472886 2017-04-10 03:49

    我说的不只是白烛葵,还有她后面的那个扑街

  2. 板凳
    新用户472886 2017-04-10 03:49

    我说的不只是白烛葵,还有她后面的那个扑街