You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@cassandra.apache.org by Sergey Naumov <sk...@gmail.com> on 2013/05/14 12:29:28 UTC
how to access data only on specific node
Hello.
I'am playing with demo cassandra cluster and decided to test read repair +
hinted handoff.
One node of a cluster was put down deliberately, and on the other nodes I
inserted some records (say 1000). HH is off on all nodes.
Then I turned on the node, connected to it with cql (locally, so to
localhost) and performed 1000 reads by row key (with consistency ONE). I
see that RR works, but sometimes number of records have been read degrades.
Is it because consistency ONE and local reads is not the same thing? If so,
then the question is: how to perform local reads to examine content of
specific node?
Thanks in advance,
Sergey Naumov.
Re: how to access data only on specific node
Posted by aaron morton <aa...@thelastpickle.com>.
> And about range scan - as far as I understand, range scan could be done only with Order Preserving Partitioner, but not with Random Partitioner.
Range scan can be used with any partitioner.
If you use it with the RP the order of the rows will be ranged.
Cheers
-----------------
Aaron Morton
Freelance Cassandra Consultant
New Zealand
@aaronmorton
http://www.thelastpickle.com
On 17/05/2013, at 7:19 PM, Sergey Naumov <sk...@gmail.com> wrote:
> Oh, I finally understand. As I read records one by one they aren't necessarily read from a single node, so if I got 965 records out of 1000, some of them could be read from other nodes which have all of 1000 records.
>
> And about range scan - as far as I understand, range scan could be done only with Order Preserving Partitioner, but not with Random Partitioner... It would be cool to have consistency level of LOCAL to examine content of a local node for test purposes.
>
>
> 2013/5/17 aaron morton <aa...@thelastpickle.com>
> Are you using a multi get or a range slice ?
>
> Read Repair does not run for range slice queries.
>
> Cheers
>
> -----------------
> Aaron Morton
> Freelance Cassandra Consultant
> New Zealand
>
> @aaronmorton
> http://www.thelastpickle.com
>
> On 15/05/2013, at 6:51 PM, Sergey Naumov <sk...@gmail.com> wrote:
>
>>> see that RR works, but sometimes number of records have been read degrades.
>> RR is enabled on a random 10% of requests, see the read_repair_chance setting for the CF.
>>
>> OK, but I forgot to mention the main thing - each node in my config is a standalone datacenter and distribution is DC1:1, DC2:1, DC3:1. So when I try to read 1000 records with consistency ONE multiple times while connected to node that just have been turned on, I got the following count of records read (approximately): 120 220 310 390 .... 950 960 965 !! 955 !! 970 ... If all other nodes contain 1000 records and read repair already delivered 965 records to local DC (and so - local node), why sometimes I see degradation of total records read?
>>
>>
>>
>> 2013/5/15 aaron morton <aa...@thelastpickle.com>
>>> see that RR works, but sometimes number of records have been read degrades.
>> RR is enabled on a random 10% of requests, see the read_repair_chance setting for the CF.
>>
>>> If so, then the question is: how to perform local reads to examine content of specific node?
>> You can check which nodes are replicas for a key using nodetool getendpoints
>>
>> If you want to read all the rows for a particular row you need to use a range scan and limit it by the token ranges assigned to the node.
>>
>> Cheers
>>
>> -----------------
>> Aaron Morton
>> Freelance Cassandra Consultant
>> New Zealand
>>
>> @aaronmorton
>> http://www.thelastpickle.com
>>
>> On 14/05/2013, at 10:29 PM, Sergey Naumov <sk...@gmail.com> wrote:
>>
>>> Hello.
>>>
>>> I'am playing with demo cassandra cluster and decided to test read repair + hinted handoff.
>>>
>>> One node of a cluster was put down deliberately, and on the other nodes I inserted some records (say 1000). HH is off on all nodes.
>>> Then I turned on the node, connected to it with cql (locally, so to localhost) and performed 1000 reads by row key (with consistency ONE). I see that RR works, but sometimes number of records have been read degrades. Is it because consistency ONE and local reads is not the same thing? If so, then the question is: how to perform local reads to examine content of specific node?
>>>
>>> Thanks in advance,
>>> Sergey Naumov.
>>
>>
>
>
Re: how to access data only on specific node
Posted by Sergey Naumov <sk...@gmail.com>.
Oh, I finally understand. As I read records one by one they aren't
necessarily read from a single node, so if I got 965 records out of 1000,
some of them could be read from other nodes which have all of 1000 records.
And about range scan - as far as I understand, range scan could be done
only with Order Preserving Partitioner, but not with Random Partitioner...
It would be cool to have consistency level of LOCAL to examine content of a
local node for test purposes.
2013/5/17 aaron morton <aa...@thelastpickle.com>
> Are you using a multi get or a range slice ?
>
> Read Repair does not run for range slice queries.
>
> Cheers
>
> -----------------
> Aaron Morton
> Freelance Cassandra Consultant
> New Zealand
>
> @aaronmorton
> http://www.thelastpickle.com
>
> On 15/05/2013, at 6:51 PM, Sergey Naumov <sk...@gmail.com> wrote:
>
> see that RR works, but sometimes number of records have been read
> degrades.
>
> RR is enabled on a random 10% of requests, see the read_repair_chance
> setting for the CF.
>
> OK, but I forgot to mention the main thing - each node in my config is a
> standalone datacenter and distribution is DC1:1, DC2:1, DC3:1. So when I
> try to read 1000 records with consistency ONE multiple times while
> connected to node that just have been turned on, I got the following count
> of records read (approximately): 120 220 310 390 .... 950 960 965 !! 955 !!
> 970 ... If all other nodes contain 1000 records and read repair already
> delivered 965 records to local DC (and so - local node), why sometimes I
> see degradation of total records read?
>
>
>
> 2013/5/15 aaron morton <aa...@thelastpickle.com>
>
>> see that RR works, but sometimes number of records have been read
>> degrades.
>>
>> RR is enabled on a random 10% of requests, see the read_repair_chance
>> setting for the CF.
>>
>> If so, then the question is: how to perform local reads to examine
>> content of specific node?
>>
>> You can check which nodes are replicas for a key using
>> nodetool getendpoints
>>
>> If you want to read all the rows for a particular row you need to use a
>> range scan and limit it by the token ranges assigned to the node.
>>
>> Cheers
>>
>> -----------------
>> Aaron Morton
>> Freelance Cassandra Consultant
>> New Zealand
>>
>> @aaronmorton
>> http://www.thelastpickle.com
>>
>> On 14/05/2013, at 10:29 PM, Sergey Naumov <sk...@gmail.com> wrote:
>>
>> Hello.
>>
>> I'am playing with demo cassandra cluster and decided to test read repair
>> + hinted handoff.
>>
>> One node of a cluster was put down deliberately, and on the other nodes I
>> inserted some records (say 1000). HH is off on all nodes.
>> Then I turned on the node, connected to it with cql (locally, so to
>> localhost) and performed 1000 reads by row key (with consistency ONE). I
>> see that RR works, but sometimes number of records have been read degrades.
>> Is it because consistency ONE and local reads is not the same thing? If so,
>> then the question is: how to perform local reads to examine content of
>> specific node?
>>
>> Thanks in advance,
>> Sergey Naumov.
>>
>>
>>
>
>
Re: how to access data only on specific node
Posted by aaron morton <aa...@thelastpickle.com>.
Are you using a multi get or a range slice ?
Read Repair does not run for range slice queries.
Cheers
-----------------
Aaron Morton
Freelance Cassandra Consultant
New Zealand
@aaronmorton
http://www.thelastpickle.com
On 15/05/2013, at 6:51 PM, Sergey Naumov <sk...@gmail.com> wrote:
>> see that RR works, but sometimes number of records have been read degrades.
> RR is enabled on a random 10% of requests, see the read_repair_chance setting for the CF.
>
> OK, but I forgot to mention the main thing - each node in my config is a standalone datacenter and distribution is DC1:1, DC2:1, DC3:1. So when I try to read 1000 records with consistency ONE multiple times while connected to node that just have been turned on, I got the following count of records read (approximately): 120 220 310 390 .... 950 960 965 !! 955 !! 970 ... If all other nodes contain 1000 records and read repair already delivered 965 records to local DC (and so - local node), why sometimes I see degradation of total records read?
>
>
>
> 2013/5/15 aaron morton <aa...@thelastpickle.com>
>> see that RR works, but sometimes number of records have been read degrades.
> RR is enabled on a random 10% of requests, see the read_repair_chance setting for the CF.
>
>> If so, then the question is: how to perform local reads to examine content of specific node?
> You can check which nodes are replicas for a key using nodetool getendpoints
>
> If you want to read all the rows for a particular row you need to use a range scan and limit it by the token ranges assigned to the node.
>
> Cheers
>
> -----------------
> Aaron Morton
> Freelance Cassandra Consultant
> New Zealand
>
> @aaronmorton
> http://www.thelastpickle.com
>
> On 14/05/2013, at 10:29 PM, Sergey Naumov <sk...@gmail.com> wrote:
>
>> Hello.
>>
>> I'am playing with demo cassandra cluster and decided to test read repair + hinted handoff.
>>
>> One node of a cluster was put down deliberately, and on the other nodes I inserted some records (say 1000). HH is off on all nodes.
>> Then I turned on the node, connected to it with cql (locally, so to localhost) and performed 1000 reads by row key (with consistency ONE). I see that RR works, but sometimes number of records have been read degrades. Is it because consistency ONE and local reads is not the same thing? If so, then the question is: how to perform local reads to examine content of specific node?
>>
>> Thanks in advance,
>> Sergey Naumov.
>
>
Re: how to access data only on specific node
Posted by Sergey Naumov <sk...@gmail.com>.
see that RR works, but sometimes number of records have been read degrades.
RR is enabled on a random 10% of requests, see the read_repair_chance
setting for the CF.
OK, but I forgot to mention the main thing - each node in my config is a
standalone datacenter and distribution is DC1:1, DC2:1, DC3:1. So when I
try to read 1000 records with consistency ONE multiple times while
connected to node that just have been turned on, I got the following count
of records read (approximately): 120 220 310 390 .... 950 960 965 !! 955 !!
970 ... If all other nodes contain 1000 records and read repair already
delivered 965 records to local DC (and so - local node), why sometimes I
see degradation of total records read?
2013/5/15 aaron morton <aa...@thelastpickle.com>
> see that RR works, but sometimes number of records have been read
> degrades.
>
> RR is enabled on a random 10% of requests, see the read_repair_chance
> setting for the CF.
>
> If so, then the question is: how to perform local reads to examine
> content of specific node?
>
> You can check which nodes are replicas for a key using
> nodetool getendpoints
>
> If you want to read all the rows for a particular row you need to use a
> range scan and limit it by the token ranges assigned to the node.
>
> Cheers
>
> -----------------
> Aaron Morton
> Freelance Cassandra Consultant
> New Zealand
>
> @aaronmorton
> http://www.thelastpickle.com
>
> On 14/05/2013, at 10:29 PM, Sergey Naumov <sk...@gmail.com> wrote:
>
> Hello.
>
> I'am playing with demo cassandra cluster and decided to test read repair +
> hinted handoff.
>
> One node of a cluster was put down deliberately, and on the other nodes I
> inserted some records (say 1000). HH is off on all nodes.
> Then I turned on the node, connected to it with cql (locally, so to
> localhost) and performed 1000 reads by row key (with consistency ONE). I
> see that RR works, but sometimes number of records have been read degrades.
> Is it because consistency ONE and local reads is not the same thing? If so,
> then the question is: how to perform local reads to examine content of
> specific node?
>
> Thanks in advance,
> Sergey Naumov.
>
>
>
Re: how to access data only on specific node
Posted by aaron morton <aa...@thelastpickle.com>.
> see that RR works, but sometimes number of records have been read degrades.
RR is enabled on a random 10% of requests, see the read_repair_chance setting for the CF.
> If so, then the question is: how to perform local reads to examine content of specific node?
You can check which nodes are replicas for a key using nodetool getendpoints
If you want to read all the rows for a particular row you need to use a range scan and limit it by the token ranges assigned to the node.
Cheers
-----------------
Aaron Morton
Freelance Cassandra Consultant
New Zealand
@aaronmorton
http://www.thelastpickle.com
On 14/05/2013, at 10:29 PM, Sergey Naumov <sk...@gmail.com> wrote:
> Hello.
>
> I'am playing with demo cassandra cluster and decided to test read repair + hinted handoff.
>
> One node of a cluster was put down deliberately, and on the other nodes I inserted some records (say 1000). HH is off on all nodes.
> Then I turned on the node, connected to it with cql (locally, so to localhost) and performed 1000 reads by row key (with consistency ONE). I see that RR works, but sometimes number of records have been read degrades. Is it because consistency ONE and local reads is not the same thing? If so, then the question is: how to perform local reads to examine content of specific node?
>
> Thanks in advance,
> Sergey Naumov.