精华内容
下载资源
问答
  • Hermes开源的Solr、ElasticSearch不同 谈到Hermes索引技术,相信很多同学都会想到Solr、ElasticSearch。Solr、ElasticSearch在真可谓是大名鼎鼎,是两个顶级项目,最近有些同学经常问我,“开源世界有Solr、...

    Hermes与开源的Solr、ElasticSearch的不同

    谈到Hermes的索引技术,相信很多同学都会想到Solr、ElasticSearch。Solr、ElasticSearch在真可谓是大名鼎鼎,是两个顶级项目,最近有些同学经常问我,“开源世界有Solr、ElasticSearch为什么还要使用Hermes?”

    在回答这个问题之前,大家可以思考一个问题,既然已经有了Oracle、Mysql等数据库为什么大家还要使用ES下的Hive、Spark? Oracle和Mysql也有集群版,也可以分布式,那ES与Hive的出现是不是多余的?
        Hermes的出现,并不是为了替代Solr、ES的,就像Hadoop的出现并不是为了干掉Oracle和Mysql一样。而是为了满足不同层面的需求。

    一、Hermes与Solr,ES定位不同

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

    u Solr、ES的使用特点如下:

    1. 源自搜索引擎,侧重搜索与全文检索。

    2. 数据规模从几百万到千万不等,数据量过亿的集群特别少。
        Ps:有可能存在个别系统数据量过亿,但这并不是普遍现象(就像Oracle的表里的数据规模有可能超过Hive里一样,但需要小型机)。

    u Hermes:的使用特点如下:

    1. 一个基于大索引技术的海量数据实时检索分析平台。侧重数据分析。

    2. 数据规模从几亿到万亿不等。最小的表也是千万级别。

    在 腾讯17 台TS5机器,就可以处理每天450亿的数据(每条数据1kb左右),数据可以保存一个月之久。

    二、Hermes与Solr,ES在技术实现上也会有一些区别

    u Solr、ES在大索引上存在的问题:

    1. 一级跳跃表是完全Load在内存中的。

    这种方式需要消耗很多内存不说,首次打开索引的加载速度会特别慢.

    在Solr\ES中的索引是一直处于打开状态的,不会频繁的打开与关闭;

    这种模式会制约一台机器的索引数量与索引规模,通常一台机器固定负责某个业务的索引。

    2. 为了排序,将列的全部值Load到放到内存里。

    排序和统计(sum,max,min)的时候,是通过遍历倒排表,将某一列的全部值都Load到内存里,然后基于内存数据进行统计,即使一次查询只会用到其中的一条记录,也会将整列的全部值都Load到内存里,太浪费资源,首次查询的性能太差。

    数据规模受物理内存限制很大,索引规模上千万后OOM是常事。

    3. 索引存储在本地硬盘,恢复难

    一旦机器损坏,数据即使没有丢失,一个几T的索引,仅仅数据copy时间就需要好几个小时才能搞定。

    4. 集群规模太小

    支持Master/Slave模式,但是跟传统Mysql数据库一样,集群规模并没有特别大的(百台以内)。这种模式处理集群规模受限外,每次扩容的数据迁移将是一件非常痛苦的事情,数据迁移时间太久。

    5. 数据倾斜问题

    倒排检索即使某个词语存在数据倾斜,因数据量比较小,也可以将全部的doc list都读取过来(比如说男、女),这个doc list会占用较大的内存进行Cache,当然在数据规模较小的情况下占用内存不是特别多,查询命中率很高,会提升检索速度,但是数据规模上来后,这里的内存问题越来越严重。

    6. 节点和数据规模受限

    Merger Server只能是一个,制约了查询的节点数量;数据不能进行动态分区,数据规模上来后单个索引太大。

    7. 高并发导入的情况下, GC占用CPU太高,多线程并发性能上不去。

        AttributeSource使用了WeakHashMap来管理类的实例化,并使用了全局锁,无论加了多大的线程,导入性能上不去。

        AttributeSource与NumbericField,使用了大量的LinkHashMap以及很多无用的对象,导致每一条记录都要在内存中创建很多无用的对象,造成了JVM要频繁的回收这些对象,CPU消耗过高。

        FieldCacheImpl使用的WeakHashMap有BUG,大数据的情况下有OOM的风险。

    单机导入性能在笔者的环境下(1kb的记录每台机器想突破2w/s 很难)

    Solr与ES小结

    并不是说Solr与ES的这种方式不好,在数据规模较小的情况下,Solr的这种处理方式表现优越,并发性能较好,Cache利用率较高,事实证明在生产领域Solr和ES是非常稳定的,并且性能也很卓越;但是在数据规模较大,并且数据在频繁的实时导入的情况下,就需要进行一些优化。

    u Hermes在索引上的改进:

    1. 索引按需加载

    大部分的索引处于关闭状态,只有真正用到索引才会去打开;一级跳跃表采用按需Load,并不会Load整个跳跃表,用来节省内存和提高打开索引的速度。Hermes经常会根据业务的不同动态的打开不同的索引,关闭那些不经常使用的索引,这样同样一台机器,可以被多种不同的业务所使用,机器利用率高。

    2. 排序和统计按需加载

    排序和统计并不会使用数据的真实值,而是通过标签技术将大数据转换成占用内存很小的数据标签,占用内存是原先的几十分之一。

    另外不会将这个列的全部值都Load到内存里,而是用到哪些数据Load哪些数据,依然是按需Load。不用了的数据会从内存里移除。

    3. 索引存储在HDFS中

    理论上只要HDFS有空间,就可以不断的添加索引,索引规模不在严重受机器的物理内存和物理磁盘的限制。容灾和数据迁移容易得多。

    4. 采用Gaia进行进程管理(腾讯版的Yarn)

    数据在HDFS中,集群规模和扩容都是一件很容易的事情,Gaia在腾讯集群规模已达万台)。

    5. 采用多条件组合跳跃降低数据倾斜

    如果某个词语存在数据倾斜,则会与其他条件组合进行跳跃合并(参考doclist的skip list资料)。

    6. 多级Merger与自定义分区

    7. GC上进行了一些优化

        自己进行内存管理,关键地方的内存对象的创建和释放java内部自己控制,减少GC的压力(类似Hbase的Block Buffer Cache)。

        不使用WeakHashMap和全局锁,WeakHashMap使用不当容易内存泄露,而且性能太差。

        用于分词的相关对象是共用的,减少反复的创建对象和释放对象。

            1kb大小的数据,在笔者的环境下,一台机器每秒能处理4~8W条记录.

    转载于:https://www.cnblogs.com/insane-Mr-Li/p/10774563.html

    展开全文
  • es与solr的区别

    千次阅读 2019-05-29 10:35:53
    es与solr的区别背景区别各自集群 背景 它们都是基于Lucene搜索服务器基础之上开发,一款优秀的,高性能的企业级搜索服务器。【是因为他们都是基于分词技术构建的倒排索引的方式进行查询】 开发语言:java语言开发 ...

    es与solr的区别

    背景

    它们都是基于Lucene搜索服务器基础之上开发,一款优秀的,高性能的企业级搜索服务器。【是因为他们都是基于分词技术构建的倒排索引的方式进行查询】
    开发语言:java语言开发
    诞生时间:
    Solr :2004年诞生。
    Es:2010年诞生。
    Es 更新【功能越强大】

    区别

    1. 当实时建立索引的时候,solr会产生io阻塞,而es则不会,es查询性能要高于solr。
    2. 在不断动态添加数据的时候,solr的检索效率会变的低下,而es则没有什么变化。
    3. Solr利用zookeeper进行分布式管理,而es自身带有分布式系统管理功能。Solr一般都要部署到web服务器上,比如tomcat。启动tomcat的时候需要配置tomcat与solr的关联。【Solr 的本质 是一个动态web项目】
    4. Solr支持更多的格式数据[xml,json,csv等],而es仅支持json文件格式。
    5. Solr是传统搜索应用的有力解决方案,但是es更适用于新兴的实时搜索应用。
      a)单纯的对已有数据进行检索的时候,solr效率更好,高于es。
    6. Solr官网提供的功能更多,而es本身更注重于核心功能,高级功能多有第三方插件

    各自集群

    • Solr
      在这里插入图片描述
      在这里插入图片描述
    • ES
      在这里插入图片描述
    展开全文
  • ES与Solr的区别

    千次阅读 2019-07-28 23:35:40
    背景:它们都是基于Lucene搜索服务器基础之上开发,一款优秀,高性能企业级搜索服务器。...1.当实时建立索引时候,solr会产生io阻塞,而es则不会,es查询性能要高于solr。 2.在不断动态添加数据...

    背景:它们都是基于Lucene搜索服务器基础之上开发,一款优秀的,高性能的企业级搜索服务器。【是因为他们都是基于分词技术构建的倒排索引的方式进行查询】

    开发语言:Java语言开发

    诞生时间:Solr :2004年诞生。ES:2010年诞生。ES 更新【功能越强大】

    区别:

    1.当实时建立索引的时候,solr会产生io阻塞,而es则不会,es查询性能要高于solr。

    2.在不断动态添加数据的时候,solr的检索效率会变的低下,而es则没有什么变化。

    3. Solr利用zookeeper进行分布式管理,而es自身带有分布式系统管理功能。Solr一般都要部署到web服务器上,比如tomcat。启动tomcat的时候需要配置tomcat与solr的关联。【Solr 的本质 是一个动态web项目】

    4. Solr支持更多的格式数据[xml,json,csv等],而es仅支持json文件格式。

    5. Solr是传统搜索应用的有力解决方案,但是es更适用于新兴的实时搜索应用。

    a)单纯的对已有数据进行检索的时候,solr效率更好,高于es。

    6. Solr官网提供的功能更多,而es本身更注重于核心功能,高级功能多由第三方插件。

    SolrCloud:集群图

    Elasticsearch:集群图

    展开全文
  • 背景:它们都是基于Lucene搜索服务器基础之上开发,一款优秀,高性能企业级搜索服务器。... 在不断动态添加数据时候,solr的检索效率会变低下,而es则没有什么变化。 Solr利用zookeeper进行分布式管理

    背景:它们都是基于Lucene搜索服务器基础之上开发,一款优秀的,高性能的企业级搜索服务器。【是因为他们都是基于分词技术构建的倒排索引的方式进行查询】

    开发语言:java语言开发

    诞生时间:

    Solr :2004年诞生。

    Es:2010年诞生。

    Es 更新【功能越强大】

    区别:

    1. 当实时建立索引的时候,solr会产生io阻塞,而es则不会,es查询性能要高于solr。
    2. 在不断动态添加数据的时候,solr的检索效率会变的低下,而es则没有什么变化。
    3. Solr利用zookeeper进行分布式管理,而es自身带有分布式系统管理功能。Solr一般都要部署到web服务器上,比如tomcat。启动tomcat的时候需要配置tomcat与solr的关联。【Solr 的本质 是一个动态web项目
    4. Solr支持更多的格式数据[xml,json,csv等],而es仅支持json文件格式。
    5. Solr是传统搜索应用的有力解决方案,但是es更适用于新兴的实时搜索应用。
      1. 单纯的对已有数据进行检索的时候,solr效率更好,高于es。
    6. Solr官网提供的功能更多,而es本身更注重于核心功能,高级功能多有第三方插件。
    展开全文
  • ElasticSearch(ES)和solr的关系和区别

    千次阅读 2018-06-03 21:32:16
    ElasticSearch(ES)和solr的关系和区别 Elasticsearch Solr 比较总结 单纯对已有数据分析。solr更快 建立实时查询时,solr会产生io阻塞,查询性能更差。es 更有优势 随着数据量变化,solr的搜索效率...
  • 背景:它们都是基于Lucene搜索服务器基础之上开发,一款优秀,高性能企业级搜索服务器。...1.当实时建立索引时候,solr会产生io阻塞,而es则不会,es查询性能要高于solr。 2.在不断动态添加数据...
  • 一 ,es solr 的区别 1 ,相同点 : essolr 都是基于 lucene 的搜索服务器。 高性能 : 他们都基于分词技术构建的倒排索引。 开发语言 : 都是 java 开发的。 2 ,不同点 : 建立实时索引时 : 1 ,solr ...
  • es与solr对比

    千次阅读 2019-04-18 20:07:00
    solr相关资料 自带Jetty服务器,也可以在tomcat发布solr,默认端口8983...solr和Elasticsearch的区别Solr建立索引时候,搜索效率下降,实时搜索效率不高,es实时搜索效率高 Solr利用Zookeeper进行分布式管理,而...
  • lucene的概述 Lucene是一个高性能、可伸缩的信息搜索(IR)库。它可以为你的应用程序添加索引和搜索能力。Lucene是用java实现的、成熟的开源项目,是著名的Apache Jakarta大...1:ES的概述 ES是对apache lucene的封装...
  • elasticsearch solr 区别: elasticsearch 和 solr 都是 Java 语言开发基于 Lucene 搜索引擎. elasticsearch 天生支持分布式, solr 集群依赖 zookeeper 协调 elasticsearch 只支持 json 格式存储, solr 支持...
  • Elasticsearch与Solr区别

    2020-03-15 00:00:08
    Solr 2004年诞生(当时是Solar)。 ElasticSearch 2010年诞生。 ES更加新。 更详细原文 ...1.当单纯对已有数据进行搜索时...随着数据量增加,Solr的搜索效率会变得更低,而Elasticsearch却没有明显变化 综...
  • ElasticSearch与solr比较

    2019-04-27 14:04:00
    solr和Elasticsearch的区别: 1)Solr建立索引时候,搜索效率下降,实时搜索效率不高,es实时搜索效率高 2)Solr利用Zookeeper进行分布式管理,而Elasticsearch自身带有分布式协调管理功能。 3)Solr支持更多格.....
  • 6.x 7.x 的区别十分大,6.x API (原生API、RestFul 高级!) Lucene 是一套信息检索工具包!jar包!,不包含搜索引擎系统!包含:索引结构、读写索引的工具、排序、搜索规则...工具类。 Lucene 和 ElasticSearch ...
  • 二、ES与solr的区别: 三、Java代码如何正确接入ES? 一、 基础知识 ES如何存数据? ES通过index写入和查询到内存中,数据基本存储在硬盘中,部分数据会存在内存中。 推荐资料地址:...
  • 众所周知,solr与es的最大区别是,solr可以对pdf,txt,doc等文件生成索引 那我们如何添加文件索引呢? 步骤1.添加core,取名暂且为 coreFile 在bin下执行命令 ./solr create -c coreFile 步骤2.准备要搜索的文件 ...
  • 1、搜索引擎选择: Elasticsearch与Solr 链接 2、ElasticSearch(ES)和solr的关系和区别 链接 3、[译]ElasticSearch vs. Solr 链接 4、全文搜索引擎 Elasticsearch 入门教程 链接 ...
  • 二、solr与es的区别 ​ 在我入职公司的时候公司采用的是solr,我上一篇博客写的就是solr的,那也是我刚接触solr,但是我入职一个月时间公司的业务在扩大,solr隐约有点坚持不住了,后在网上查找原因和公司切换为...
  • ElasticSearch(ES)和Solr的关系和区别:https://blog.csdn.net/yb546822612/article/details/103196486?utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromMachineLearnP
  • 文章目录ElasticSearch概述谁在用ES与solr的区别Solr简介Es vs Solr的总结Docker 安装ES ElasticSearch概述 谁在用 ES与solr的区别 Solr简介 Es vs Solr的总结 Docker 安装ES 1.先查看docker容器中es的镜像...
  • 与solr的区别 效率: 单纯的对已有数据进行检索的时候,solr效率更好,高于es;在不断动态添加数据的时候,solr的检索效率会变的低下,而es则没有什么变化。 独立性: Solr利用zookeeper进行分布式管理,而es自身带...
  • 简介  Elastic Search是一种基于Lucene,针对海量数据提供快速复杂查询的索引... 与solr的区别:  Solr是提供类似webservice的接口。Es提供rest风格的接口。  Solr4.x以后支持分布式,而es天生支持分布式
  • YDBFAQ(从今天开始慢慢积累)

    千次阅读 2016-05-17 19:36:09
    一、与麒麟 kylin的区别 二、与druid的区别 三.ya100这个格式压缩效率如何 四,是否支持多表JOIN 五, spark升级迭代对ydb的影响 六,本身ydb也使用了lucene作为索引,相对于solr与es在使用上有什么区别或优势?
  • Elasticsearch基本概念

    2020-10-29 15:08:02
    1、Elasticsearch的概念 ElasticSearch简称es,是一个开源的高扩展的分布式全文...2、Elasticsearch与solr的区别 区别 es solr 安装方面 es基本上是开箱即用(解压即可使用) solr的安装稍微复杂 管理方面
  • Elastic Search初识之吐槽

    千次阅读 2017-06-11 16:19:03
    其他存储型数据库有何区别,为什么其他数据库已经能够提供文本搜索功能了,还需要ES等一系列问题都是心中困惑。这篇文章主要就是总结这些问题以及Elastic Search概括介绍ES资源ES 下载:...

空空如也

空空如也

1 2 3
收藏数 42
精华内容 16
关键字:

solr与es的区别