lucene-solr-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Jean-Sebastien Vachon <jean-sebastien.vac...@wantedanalytics.com>
Subject RE: SOlr 3.5 and sharding
Date Thu, 17 Jan 2013 15:53:08 GMT
Hi Erick,

It looks like we are saying the exact same thing but with different terms ;) 
I looked at the Solr glossary and you might be right.. maybe I should talk about partitions
instead of shards.

Since my last message, I`ve configured the replication between the master and slave and everything
is working fine except for my original question about the number of documents not matching
my expectations.

I`ll try to clarify a few things and come back to this question...

Machine A (which I called the master node) is where the indexation takes place.
It consist of four Solr instances that will (eventually ) contain  1/4 of the entire collection.
It`s just that, at this moment, since I have no control on which partition a given document
is sent, I made copies of the same index for all partitions. Each Solr instance  has a replication
handler configured. I will eventually get to the point of changing the indexation code to
distribute documents evenly on all partitions but the person who can give me access to this
portion is not available right now so I can do nothing about it.

Machine B has the same four shards setup to be replicas of the corresponding shard on machine
A.
Machine B also contains another Solr instance with the default handler configured to use the
four local partitions. This instance receives client`s requests, collect the results from
each partition and then select the best matches to form the final response. We intent to add
new slaves being exact copies of Machine B and load balance clients requests on all slaves.

My original question was that if each partition has 1000 documents matching a certain keyword
and that I know all partitions have the same content then I was expecting to receive 4*1000
documents for the same keyword. But that is not the case.
The replication is not an issue here since the same request on the master node will give me
the same result.

Each shard when called individually will give 1000 documents. But when I call them using the
shards=xxx parameters then I am getting a little less than 4000 documents. I was just curious
to know why this was happening... Is this a bug? Or something I am misunderstanding...

Thanks for your time and contribution to Solr!

-----Original Message-----
From: Erick Erickson [mailto:erickerickson@gmail.com] 
Sent: January-17-13 8:46 AM
To: solr-user@lucene.apache.org
Subject: Re: SOlr 3.5 and sharding

You're still confusing shards (or at least mixing up the terminology) with simple replication.
Shards are when you split up the index into several sub indexes and configure the sub-indexes
to "know about each other". Say you have 1M docs in 2 shards. 500K of them would go on one
shard and 500K on the other. But logically you have a single index of 1M docs. So the two
shards have to know about each other and when you send a request to one of them, it automatically
queries the other (as well as itself), collects the response and combines them, returning
the top N to the requester.

This is totally different from replication. In replication (master/slave), each node has all
1M documents. Each node can work totally in isolation. An incoming request is handled by the
slave without contacting any other node.

If you're copying around indexes AND configuring them as though they were shards, each request
will be distributed to all shards and the results collated, giving you the same doc repeatedly
in your result set.

If you have no access to the indexing code, you really can't go to a sharded setup.

Polling is when the slaves periodically ask the master "has anything changed"? If so then
the slave pulls down the changes. The polling interval is configured in solrconfig.xml _on
the slave_. So let's say you index docs to the master. For some interval, until the slaves
poll the master and get an updated index, the number of searchable docs on the master will
be different than for the slaves. Additionally, you may have the issue of the polling intervals
for the slaves being offset from one another, so for some brief interval the counts on the
slaves may be different as well.

Best
Erick

On Tue, Jan 15, 2013 at 10:18 AM, Jean-Sebastien Vachon <jean-sebastien.vachon@wantedanalytics.com>
wrote:
> Ok I see what Erick`s meant now.. Thanks.
>
> The original index I`m working on contains about 120k documents. Since I have no access
to the code that pushes documents into the index, I made four copies of the same index.
>
> The master node contains no data at all, it simply use the data available in its four
shards. Knowing that I have 1000 documents matching the keyword "java" on each shard I was
expecting to receive 4000 documents out of my sharded setup. There are only a few documents
that are not accounted for (The result count is about 3996 which is pretty close but not accurate).
>
> Right now, the index is static so there is no need for any replication so the polling
interval has no effect.
> Later this week, I will configure the replication and have the indexation modified to
 distribute the documents to each shard using a simple ID modulo 4 rule.
>
> Were my expectations wrong about the number  of documents?
>
> -----Original Message-----
> From: Upayavira [mailto:uv@odoko.co.uk]
> Sent: January-15-13 9:21 AM
> To: solr-user@lucene.apache.org
> Subject: Re: SOlr 3.5 and sharding
>
> He was referring to master/slave setup, where a slave will poll the master periodically
asking for index updates. That frequency is configured in solrconfig.xml on the slave.
>
> So, you are saying that you have, say 1m documents in your master index.
> You then copy your index to four other boxes. At that point you have 1m documents on
each of those four. Eventually, you'll delete some docs, so'd you have 250k on each. You're
wondering, before the deletes, you're not seeing 1m docs on each of your instances.
>
> Or are you wondering why you're not seeing 1m docs when you do a distributed query across
all for of these boxes?
>
> Is that correct?
>
> Upayavira
>
> On Tue, Jan 15, 2013, at 02:11 PM, Jean-Sebastien Vachon wrote:
>> Hi Erick,
>>
>> Thanks for your comments but I am migrating an existing index (single
>> instance) to a sharded setup and currently I have no access to the 
>> code involved in the indexation process. That`s why I made a simple 
>> copy of the index on each shards.
>>
>> In the end, the data will be distributed among all shards.
>>
>> I was just curious to know why I had not the expected number of 
>> documents with my four shards.
>>
>> Can you elaborate on  this "polling interval" thing? I am pretty sure 
>> I never eared about this...
>>
>> Regards
>>
>> -----Original Message-----
>> From: Erick Erickson [mailto:erickerickson@gmail.com]
>> Sent: January-15-13 8:00 AM
>> To: solr-user@lucene.apache.org
>> Subject: Re: SOlr 3.5 and sharding
>>
>> You're confusing shards and slaves here. Shards are splitting a 
>> logical index amongst N machines, where each machine contains a 
>> portion of the index. In that setup, you have to configure the slaves 
>> to know about the other shards, and the incoming query has to be 
>> distributed amongst all the shards to find all the docs.
>>
>> In your case, since you're really replicating (rather than sharding), 
>> you only have to query _one_ slave, the query doesn't need to be distributed.
>>
>> So pull all the sharding stuff out of your config files, put a load 
>> balancer in front of your slaves and only send the request to one of 
>> them would be the place I'd start.
>>
>> Also, don't be at all surprised if the number of hits from the 
>> _master_ (which you shouldn't be searching, BTW) is different than 
>> the slaves, there's the polling interval to consider.
>>
>> Best
>> Erick
>>
>>
>> On Mon, Jan 14, 2013 at 9:58 AM, Jean-Sebastien Vachon < 
>> jean-sebastien.vachon@wantedanalytics.com> wrote:
>>
>> > Hi,
>> >
>> > I`m setting up a small Sorl setup consisting of 1 master node and 4 
>> > shards. For now, all four shards contains the exact same data. When 
>> > I perform a query on each individual shards for the word `java` I 
>> > am receiving the same number of docs (as expected). However, when I 
>> > am going through the master node using the shards parameters, the 
>> > number of results is slightly off by a few documents. There is 
>> > nothing special in my setup so I`m looking for hints on why I am 
>> > getting this problem
>> >
>> > Thanks
>> >
>>
>> -----
>> Aucun virus trouvé dans ce message.
>> Analyse effectuée par AVG - www.avg.fr
>> Version: 2013.0.2890 / Base de données virale: 2638/6032 - Date:
>> 14/01/2013
>
> -----
> Aucun virus trouvé dans ce message.
> Analyse effectuée par AVG - www.avg.fr
> Version: 2013.0.2890 / Base de données virale: 2638/6032 - Date: 
> 14/01/2013

-----
Aucun virus trouvé dans ce message.
Analyse effectuée par AVG - www.avg.fr
Version: 2013.0.2890 / Base de données virale: 2638/6037 - Date: 16/01/2013

Mime
View raw message