小编pas*_*ian的帖子

数十亿文档导致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
查看次数

解析php中的solr响应并在html表中显示它们

所以我有很多solr实例在运行并提交搜索我只是把一个快速的网站放在一起.在我发出请求URL之后,在php中我使用以下命令从solr获取XML响应:

    $solr_return= file_get_contents($full_request_URL);
Run Code Online (Sandbox Code Playgroud)

现在响应不是一个简单的xml格式,如果你知道我的意思,它就有了它的解决方案.我希望能够解析返回的xml并在html中的表中的行中显示它们.

我一直在网上看,有许多不同的想法让我觉得我可能完全不在,这不是这样做的方法.如果你是我,你会怎么做?

xml $solr_return看起来像这样:

<?xml version="1.0" encoding="UTF-8"?>
<response>

<lst name="responseHeader">
  <int name="status">0</int>
  <int name="QTime">95</int>
  <lst name="params">
    <str name="indent">true</str>
    <str name="rows">10</str>
    <str name="start">0</str>
    <str name="q">*:*</str>
    <str name="shards">some shards here</str>
  </lst>
</lst>
<result name="response" numFound="2403043" start="0">
  <doc>
    <str name="1">test1</str>
    <str name="2">test2</str>
    <str name="3">test3</str>
  </doc>
  <doc>
    <str name="1">test1</str>
    <str name="2">test2</str>
    <str name="3">test3</str>
  </doc>
</result>
</response>
Run Code Online (Sandbox Code Playgroud)

对于此示例,我想显示一个包含三列1,2和3以及两行test1,test2和test3的表.

感谢您的帮助.

html php xml solr

4
推荐指数
1
解决办法
1791
查看次数

SolrCloud:如何在不知道个人姓名的情况下搜索所有可用的馆藏?

使用solrcloud 4.6,假设我有一个8节点集群,每个节点上运行一个分片和许多不同的集合.基本上每天都会收集一些(用于分区数据).现在的问题是如何在不知道名字的情况下搜索所有收藏品?

维基说我可以这样做:

http://localhost:8983/solr/collection1/select?collection=collection1_NY,collection1_NJ,collection1_CT
Run Code Online (Sandbox Code Playgroud)

这基本上是同时搜索多个集合.但在我的情况下,集合是动态创建的,我不知道当前的名称.

有没有办法发送命中所有集合的通用搜索查询?

或者指定一系列集合的方式,如collection1-10collection*2013

我也知道我可以加入ZK并获取信息,但这对我正在做的事情来说太先进了.

谢谢.

collections solr bigdata solrcloud

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

标签 统计

solr ×3

solrcloud ×2

bigdata ×1

collections ×1

html ×1

lucene ×1

php ×1

solr4 ×1

solrj ×1

xml ×1