标签: solrcloud

SolrCloud与Solr主从复制

我本周有一个Solr指数的问题:http://lucene.472066.n3.nabble.com/corrupted-index-in-slave-td4054769.html,

今天,几乎每个请求都开始出现这种错误,我创建了一个JIRA问题,因为我认为这是一个错误https://issues.apache.org/jira/browse/SOLR-4707

正如你可以看到的,最后它是由于Solr主从复制失败,现在我不知道我们是否应该考虑迁移到SolrCloud,因为Solr主从复制似乎不适合我们的要求:

  • 索引大小:〜2000万个文件,~9GB
  • ~1200更新/分钟
  • ~10000个查询/分钟(分布在2个从站上)MoreLikeThis,RealTimeGet,TermVectorComponent,SearchHandler

如果有人能帮助我回答这些问题,我会感谢你:

  • 迁移到SolrCloud是否可取?它会对复制性能产生影响吗?
  • 在那种情况下,会有更好的表现?在每个服务器上维护索引的副本,还是使用分片服务器?
  • 您会建议多少个分片和副本以确保高可用性?

亲切的问候,

胜利者

solr solrcloud

5
推荐指数
1
解决办法
5919
查看次数

SolrCloud和需要索引重建和/或修改代码的更新

由于ZooKeeper集成,SolrCloud有一些很好的实用程序来管理重新加载核心/集合配置.

但是,这仅仅完全涵盖了微不足道的更新 - 但也有非常重要的更新.非平凡在这种情况下,意味着产生了一些变化,使一个更新的节点和/或它的芯用一些以前的状态不兼容的.

特别是,我想到了这些子类:

  1. 代码更新需要重新启动底层Solr实例.
  2. 需要完全重建核心的架构更改.

我的问题是:如何使用SolrCloud和相关的Zookeeper服务来使这些更新更容易,更可靠和/或确保更高的可用性?

注意:我希望有一些"理解"此类更新的API /功能.到目前为止,我发现最值得注意的是CoreAdmin中的集合别名,这将允许"旧"和"新"版本之间更平滑的过渡 - 考虑到上述希望,这有点令人失望.

solr solrcloud solr4 apache-zookeeper

5
推荐指数
1
解决办法
572
查看次数

SolrJ和自动提交

我正在使用SolrJ API将文档添加到Solr 4.3核心,我注意到我在我使用的stock solrconfig中将自动提交设置为15秒,如下所示.

 <autoCommit>
   <maxTime>${solr.autoCommit.maxTime:15000}</maxTime>
   <openSearcher>false</openSearcher>
 </autoCommit>
Run Code Online (Sandbox Code Playgroud)

我的未知之处在于,由于自动提交设置为true,这意味着Solr实例无论如何都会每15秒自动提交一次,因此每次向Solr添加文档时,我都不需要使用SolrJ API进行明确表示,如下所示:我的理解是正确的吗?

        httpSolrServer.add(doc1);
        httpSolrServer.commit();// Is this still needed ?
Run Code Online (Sandbox Code Playgroud)

提前致谢!

solr solrj solrcloud solr4

5
推荐指数
1
解决办法
2348
查看次数

负载均衡器和Solrcloud

我想知道如何在SolrCloud之上设置负载均衡器或者不需要负载均衡器?

如果是前者,需要将碎片领导者添加到负载均衡器中?那么如果碎片领导者出于某种原因而改变呢?或者,群集中的所有计算机(包括副本)都可以更好地添加到负载均衡器中?

如果是后者,我猜一个cname需要指向SolrCloud集群,它应该是循环DNS吗?

来自一些实际的Solrcloud操作经验的任何建议都会非常有用.

solr solrcloud

5
推荐指数
1
解决办法
7056
查看次数

数十亿文档导致Solr云性能下降

我正在尝试使用SolrCloud索引大量简单文档,并且遇到了一些性能和可伸缩性限制,并且想知道可以做些什么.

硬件方面,我有一个32节点的Hadoop集群,我用它来运行所有的Solr分片,每个节点有128GB的内存.当前的SolrCloud设置被分成4个单独的32个分片的单独云,从而每个云提供4个运行分片或每8个节点分配一个云.每个分片当前分配了6GB的堆大小.我宁愿避免增加Solr分片的堆内存,以便在集群上运行其他MapReduce作业.

我目前每天在这些云中插入的文件率在两个云中为50亿,第三个为30亿,第四个为20亿; 但是,考虑到容量,目标是扩展解决方案以支持双倍数量的文档.要为这些文档编制索引,可以运行生成Solr XML文档的MapReduce作业,然后通过SolrJ的CloudSolrServer接口提交这些文档.在测试中,我发现将每个云的活动并行插入数量限制为80可以获得最佳性能,因为任何更高的性能都会导致收益递减,这很可能是由于文档在内部不断改组为SolrCloud.从索引的角度来看,正在创建过时的集合来保存一整天的文档,并且通常插入主要发生在当天(前几天只允许搜索),并且计划最多可以保留60天(或者每个云中的集合).最繁忙的云中一个集合中的单个分片索引当前占用整个集合的30G磁盘空间或960G.文档正在自动提交,提交时间为4分钟(opensearcher = false),软提交时间为8分钟.

从搜索角度来看,用例是相当通用且简单的类型搜索:,因此无需调整系统以使用任何更高级的查询功能.因此,对我来说最重要的是使索引性能能够跟上输入的速度.

在初始负载测试中,我能够实现每天每天云计算100亿个文档的预计索引率,总计每天400亿.但是,初始负载测试是在相当空的云上完成的,只有几个小集合.现在已经有几天的文档被编入索引,一旦云在两个最大的云中达到大约15个完整集合(或每个云大约80-100亿个文档),我开始看到索引性能下降相当急剧下降.根据当前的应用程序日志记录,我发现索引性能下降了40%.因此,我担心随着更多集合的添加,性能将如何保持.

我向社区提出的问题是,是否有其他人有过以这种规模使用Solr的经验(数千亿),并且如果有人观察到索引性能随着收集数量的增加而下降.我的理解是每个集合都是一个单独的索引,因此插入率应保持不变.除此之外,还可以在SolrCloud配置中进行哪些其他调整或更改以提高索引性能的速度?我是否对Solr能够处理的事情施加了严格的限制?

lucene solr solrj solrcloud solr4

5
推荐指数
0
解决办法
1504
查看次数

Solrcloud Zookeper设置:等待4000毫秒后没有找到注册的领导者,收集:c1切片:shard2

使用solr 4.10.3,我通过java中的嵌入式jetty服务器启动solr.我试图用2个分片(领导者)配置solrcloud.我有一个外部的zookeeper设置,我指向zookeeper实例,同时启动这样的solr.

        System.setProperty("zkHost", "192.168.2.21:2111");
        System.setProperty("numShards", "2");
        System.setProperty("collection.configName", "configuration1");
        System.setProperty("bootstrap_confdir","/conf/zooconf");
Run Code Online (Sandbox Code Playgroud)

我有两个运行的solr实例,一个在8983端口,另一个在8984.问题是,我不确定两个solr节点是否都被识别为leader.由于我通过java启动solr,我无法在solr管理界面中查看状态.

以下是我的solr.xml:

<?xml version="1.0" encoding="UTF-8" ?>
<solr>
  <solrcloud>
    <str name="host">192.168.2.21</str>
    <int name="hostPort">${hostPort:8984}</int>
    <str name="hostContext">${hostContext:solr}</str>
    <int name="zkClientTimeout">${solr.zkclienttimeout:30000}</int>
    <bool name="genericCoreNodeNames">${genericCoreNodeNames:true}</bool>
  </solrcloud>

  <shardHandlerFactory name="shardHandlerFactory" class="HttpShardHandlerFactory">
    <int name="socketTimeout">${socketTimeout:120000}</int>
    <int name="connTimeout">${connTimeout:15000}</int>
  </shardHandlerFactory>
</solr>
Run Code Online (Sandbox Code Playgroud)

在main方法中,我连接到其中一个solr实例(8983)并使用以下代码片段创建核心.

    CloudSolrServer server = new CloudSolrServer("192.168.2.21:2111"); 
    server.setZkConnectTimeout(15*60*1000);
    server.setZkClientTimeout(15*60*1000);
    server.setParser(new BinaryResponseParser());
    server.setRequestWriter(new BinaryRequestWriter());     
    server.setDefaultCollection("C1");

    Create adminRequest = new Create();
    adminRequest.setAction(CoreAdminAction.CREATE);
    adminRequest.setCoreName("C1");
    adminRequest.setCollection("C1");
    adminRequest.setCollectionConfigName("configuration1");
    adminRequest.setDataDir("c:\\setup\somelocation");
    adminRequest.setInstanceDir("c:\\setup\somelocation\C1");
    adminRequest.process(solrServer);
Run Code Online (Sandbox Code Playgroud)

当我执行此操作时,C1仅在一个solr实例中创建(8983).(不是应该在两个solr实例的数据目录中创建的核心.?).在添加文档时,抛出以下异常.

等待4000毫秒后没有找到注册的领导者,收集:c1切片:shard2

这是添加文档时的clusterState:

live nodes:[192.168.2.21:8984_solr, 192.168.2.21:8983_solr] collections: {
   C1=DocCollection(C1)=   {
      "shards":{
         "shard1":{
            "range":"80000000-ffffffff",
            "state":"active",
            "replicas":{
               "core_node1":{ …
Run Code Online (Sandbox Code Playgroud)

java solr solrj solrcloud apache-zookeeper

5
推荐指数
1
解决办法
5184
查看次数

在不使用SolrCloud的情况下使用复制分发Solr

我想在不使用SolrCloud的情况下使用Solr复制.我有三个Solr服务器,一个是主服务器,另一个是从服务器.

如何在不忙的Solr服务器上调度搜索查询?

什么工具和如何领导?

replication solr master-slave solrcloud

5
推荐指数
1
解决办法
223
查看次数

SolrException:maxNumThreadStates必须> = 1但是:0

SolrException:maxNumThreadStates必须> = 1但是:0

在尝试创建核心时,我得到了以下响应.谁能帮忙解决如何处理maxNumThreadStates

<?xml version="1.0" encoding="UTF-8"?>
<response>
<lst name="responseHeader">
<int name="status">500</int>
<int name="QTime">629</int>
</lst><lst name="error">
<str name="msg">maxNumThreadStates must be &gt;= 1 but was: 0</str>
<str name="trace">org.apache.solr.common.SolrException: maxNumThreadStates must be &gt;= 1 but was: 0
        at java.lang.Thread.run(Thread.java:745)
    Caused by: java.lang.IllegalArgumentException: maxNumThreadStates must be &gt;= 1 but was: 0
        at org.apache.lucene.index.DocumentsWriterPerThreadPool.&lt;init&gt;(DocumentsWriterPerThreadPool.java:142)
        at org.apache.lucene.index.DocumentsWriterPerThreadPool.clone(DocumentsWriterPerThreadPool.java:360)
        at org.apache.solr.update.SolrIndexConfig.toIndexWriterConfig(SolrIndexConfig.java:261)
        at org.apache.solr.update.SolrIndexWriter.&lt;init&gt;(SolrIndexWriter.java:80)
        at org.apache.solr.update.SolrIndexWriter.create(SolrIndexWriter.java:66)
        at org.apache.solr.core.SolrCore.initIndex(SolrCore.java:550)
        at org.apache.solr.core.SolrCore.&lt;init&gt;(SolrCore.java:806)
        ... 38 more
    </str><int name="code">500</int></lst><str name="params">name=profile.user&amp;action=CREATE</str>
    </response>
Run Code Online (Sandbox Code Playgroud)

solr solrj sunspot-solr solrcloud solr4

5
推荐指数
0
解决办法
66
查看次数

SolrCloud - 如何解决"找不到集合configName"

我正试图以SolrCloud模式启动Solr .我已经创建了一个新的集合,collection1core.properties通过设置属性在文件中更改了它的名称name=logmail.

但是当我启动Solr时,我收到以下错误

$ java -Dcollection.configName=logmail -DzkRun -Dnumshards=2 -DBootstrap_confdir=./solr/logmail/conf -jar start.jar
Run Code Online (Sandbox Code Playgroud)

2165 [main] INFO org.apache.solr.common.cloud.ZkStateReader - 从ZooKeeper更新集群状态... 2179 [OverseerStateUpdate-94955713964081152-127.0.1.1:8983_solr-n_0000000001] INFO org.apache.solr.cloud.Overseer - 开始处理主队列2197 [main] INFO org.apache.solr.core.CoresLocator - 在/ home/rahul/Desktop/dev/solrcloud/solr 2203 [main] INFO org.apache.solr下查找核心定义. core.CoresLocator - 在/ home/rahul/desktop/dev/solrcloud/solr/logmail/2204 [main]中找到核心logmail INFO org.apache.solr.core.CoresLocator - 在/ home/rahul/Desktop/dev中找到核心集合1/solrcloud/solr/collection1/2204 [main] INFO org.apache.solr.core.CoresLocator - 找到2个核心定义2207 [coreLoadExecutor-6-thread-1] INFO org.apache.solr.cloud.ZkController - 发布core = logmail state = down collection = logmail 2207 [coreLoadExecutor-6-thread-2] INFO org.apache.solr.cloud.ZkController - 发布core = collection1 state = down …

solr solrcloud

5
推荐指数
1
解决办法
9649
查看次数

如何更新zookeeper上的配置文件?

我使用 zkClient 将 Solr 核心的配置文件夹上传到 Apache zookeeper。当我删除本地配置中的文件并将其再次更新到 Zookeeper 时,我看不到 Solr 管理页面中反映的更改。有人可以解释一下如何从zookeeper更新/删除文件吗?还有在哪里可以找到zookeeper文件夹中的物理文件?

solrcloud apache-zookeeper

5
推荐指数
1
解决办法
2405
查看次数