You are viewing a plain text version of this content. The canonical link for it is here.
Posted to user@hbase.apache.org by Vamshi Krishna <va...@gmail.com> on 2012/02/13 07:46:43 UTC

how get() works

Hi all, i have a small basic doubt regarding get() method which is used in
HTable. From the hbase book, under 8.3.Client section, i understood that,
when ever client sends a request like get(rowKey) on any htable instance,
from ROOT and META, it knows the regionserver where the regions holding
that requested rowKey is present. Now if that RegionServer has multiple
regions on it, how does the request get transfered to a correct region
which has the requested rowKey? (will there be again any lookups for it?)

Is it like this:  The RegionServer holds the information about all the
regions it is hosting, so looking at the respective ranges of rows in each
region a region is selected, and passing that request to that appropriate
region.  Am i correct? if not, correct me.

Onemore question is, If a particular region is found by looking at the
range handeled by it, How  is search performed within that region to find
requested rowKey? Is it by linear search or binary search or any other
algorithm? Or for every row in that region, is there any hash value stored
and hash lookup takes place to get that rowKey's value?   what happens
really within that region?


can anybody help, please..
-- 
*Regards*
*
Vamshi Krishna
*

Re: how get() works

Posted by Vamshi Krishna <va...@gmail.com>.
Thank you for your reply Doug.. that is what i wanted to know.

On Tue, Feb 14, 2012 at 9:39 PM, Doug Meil <do...@explorysmedical.com>wrote:

>
> I say "basically" because inside a Region there are Stores, and for each
> Store there are StoreFiles.  For more info see:
>
> http://hbase.apache.org/book.html#regions.arch
>
>
>
>
>
> On 2/14/12 11:06 AM, "Doug Meil" <do...@explorysmedical.com> wrote:
>
> >
> >Keys are stored in sorted order, it's basically a binary search.
> >
> >
> >
> >
> >On 2/14/12 9:31 AM, "Vamshi Krishna" <va...@gmail.com> wrote:
> >
> >>Thank you Doug..
> >>
> >>Onemore question is, If a particular region is found by looking at the
> >>range handeled by it, How  is search performed within that region to find
> >>requested rowKey? Is it by linear search or binary search or any other
> >>algorithm? Or for every row in that region, is there any hash value
> >>stored
> >>and hash lookup takes place to get that rowKey's value?   what happens
> >>really within that region?
> >>
> >>On Mon, Feb 13, 2012 at 7:35 PM, Doug Meil
> >><do...@explorysmedical.com>wrote:
> >>
> >>>
> >>> re:  "Now if that RegionServer has multiple
> >>> regions on it, how does the request get transfered to a correct region
> >>> which has the requested rowKey?"
> >>>
> >>> See...
> >>>
> >>>
> >>>
> http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.ht
> >>>m
> >>>l#
> >>> getRegionLocation%28byte[],%20boolean%29
> >>>
> >>> As described in Arch/Client in the book, the Hbase client knows all the
> >>> regions and the the region boundaries from META.
> >>>
> >>>
> >>>
> >>>
> >>> On 2/13/12 1:46 AM, "Vamshi Krishna" <va...@gmail.com> wrote:
> >>>
> >>> >Hi all, i have a small basic doubt regarding get() method which is
> >>>used in
> >>> >HTable. From the hbase book, under 8.3.Client section, i understood
> >>>that,
> >>> >when ever client sends a request like get(rowKey) on any htable
> >>>instance,
> >>> >from ROOT and META, it knows the regionserver where the regions
> >>>holding
> >>> >that requested rowKey is present. Now if that RegionServer has
> >>>multiple
> >>> >regions on it, how does the request get transfered to a correct region
> >>> >which has the requested rowKey? (will there be again any lookups for
> >>>it?)
> >>> >
> >>> >Is it like this:  The RegionServer holds the information about all the
> >>> >regions it is hosting, so looking at the respective ranges of rows in
> >>>each
> >>> >region a region is selected, and passing that request to that
> >>>appropriate
> >>> >region.  Am i correct? if not, correct me.
> >>> >
> >>> >Onemore question is, If a particular region is found by looking at the
> >>> >range handeled by it, How  is search performed within that region to
> >>>find
> >>> >requested rowKey? Is it by linear search or binary search or any other
> >>> >algorithm? Or for every row in that region, is there any hash value
> >>>stored
> >>> >and hash lookup takes place to get that rowKey's value?   what happens
> >>> >really within that region?
> >>> >
> >>> >
> >>> >can anybody help, please..
> >>> >--
> >>> >*Regards*
> >>> >*
> >>> >Vamshi Krishna
> >>> >*
> >>>
> >>>
> >>>
> >>
> >>
> >>--
> >>*Regards*
> >>*
> >>Vamshi Krishna
> >>*
> >
> >
> >
>
>
>


-- 
*Regards*
*
Vamshi Krishna
*

Re: how get() works

Posted by Doug Meil <do...@explorysmedical.com>.
I say "basically" because inside a Region there are Stores, and for each
Store there are StoreFiles.  For more info see:

http://hbase.apache.org/book.html#regions.arch





On 2/14/12 11:06 AM, "Doug Meil" <do...@explorysmedical.com> wrote:

>
>Keys are stored in sorted order, it's basically a binary search.
>
>
>
>
>On 2/14/12 9:31 AM, "Vamshi Krishna" <va...@gmail.com> wrote:
>
>>Thank you Doug..
>>
>>Onemore question is, If a particular region is found by looking at the
>>range handeled by it, How  is search performed within that region to find
>>requested rowKey? Is it by linear search or binary search or any other
>>algorithm? Or for every row in that region, is there any hash value
>>stored
>>and hash lookup takes place to get that rowKey's value?   what happens
>>really within that region?
>>
>>On Mon, Feb 13, 2012 at 7:35 PM, Doug Meil
>><do...@explorysmedical.com>wrote:
>>
>>>
>>> re:  "Now if that RegionServer has multiple
>>> regions on it, how does the request get transfered to a correct region
>>> which has the requested rowKey?"
>>>
>>> See...
>>>
>>> 
>>>http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.ht
>>>m
>>>l#
>>> getRegionLocation%28byte[],%20boolean%29
>>>
>>> As described in Arch/Client in the book, the Hbase client knows all the
>>> regions and the the region boundaries from META.
>>>
>>>
>>>
>>>
>>> On 2/13/12 1:46 AM, "Vamshi Krishna" <va...@gmail.com> wrote:
>>>
>>> >Hi all, i have a small basic doubt regarding get() method which is
>>>used in
>>> >HTable. From the hbase book, under 8.3.Client section, i understood
>>>that,
>>> >when ever client sends a request like get(rowKey) on any htable
>>>instance,
>>> >from ROOT and META, it knows the regionserver where the regions
>>>holding
>>> >that requested rowKey is present. Now if that RegionServer has
>>>multiple
>>> >regions on it, how does the request get transfered to a correct region
>>> >which has the requested rowKey? (will there be again any lookups for
>>>it?)
>>> >
>>> >Is it like this:  The RegionServer holds the information about all the
>>> >regions it is hosting, so looking at the respective ranges of rows in
>>>each
>>> >region a region is selected, and passing that request to that
>>>appropriate
>>> >region.  Am i correct? if not, correct me.
>>> >
>>> >Onemore question is, If a particular region is found by looking at the
>>> >range handeled by it, How  is search performed within that region to
>>>find
>>> >requested rowKey? Is it by linear search or binary search or any other
>>> >algorithm? Or for every row in that region, is there any hash value
>>>stored
>>> >and hash lookup takes place to get that rowKey's value?   what happens
>>> >really within that region?
>>> >
>>> >
>>> >can anybody help, please..
>>> >--
>>> >*Regards*
>>> >*
>>> >Vamshi Krishna
>>> >*
>>>
>>>
>>>
>>
>>
>>-- 
>>*Regards*
>>*
>>Vamshi Krishna
>>*
>
>
>



Re: how get() works

Posted by Doug Meil <do...@explorysmedical.com>.
Keys are stored in sorted order, it's basically a binary search.




On 2/14/12 9:31 AM, "Vamshi Krishna" <va...@gmail.com> wrote:

>Thank you Doug..
>
>Onemore question is, If a particular region is found by looking at the
>range handeled by it, How  is search performed within that region to find
>requested rowKey? Is it by linear search or binary search or any other
>algorithm? Or for every row in that region, is there any hash value stored
>and hash lookup takes place to get that rowKey's value?   what happens
>really within that region?
>
>On Mon, Feb 13, 2012 at 7:35 PM, Doug Meil
><do...@explorysmedical.com>wrote:
>
>>
>> re:  "Now if that RegionServer has multiple
>> regions on it, how does the request get transfered to a correct region
>> which has the requested rowKey?"
>>
>> See...
>>
>> 
>>http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.htm
>>l#
>> getRegionLocation%28byte[],%20boolean%29
>>
>> As described in Arch/Client in the book, the Hbase client knows all the
>> regions and the the region boundaries from META.
>>
>>
>>
>>
>> On 2/13/12 1:46 AM, "Vamshi Krishna" <va...@gmail.com> wrote:
>>
>> >Hi all, i have a small basic doubt regarding get() method which is
>>used in
>> >HTable. From the hbase book, under 8.3.Client section, i understood
>>that,
>> >when ever client sends a request like get(rowKey) on any htable
>>instance,
>> >from ROOT and META, it knows the regionserver where the regions holding
>> >that requested rowKey is present. Now if that RegionServer has multiple
>> >regions on it, how does the request get transfered to a correct region
>> >which has the requested rowKey? (will there be again any lookups for
>>it?)
>> >
>> >Is it like this:  The RegionServer holds the information about all the
>> >regions it is hosting, so looking at the respective ranges of rows in
>>each
>> >region a region is selected, and passing that request to that
>>appropriate
>> >region.  Am i correct? if not, correct me.
>> >
>> >Onemore question is, If a particular region is found by looking at the
>> >range handeled by it, How  is search performed within that region to
>>find
>> >requested rowKey? Is it by linear search or binary search or any other
>> >algorithm? Or for every row in that region, is there any hash value
>>stored
>> >and hash lookup takes place to get that rowKey's value?   what happens
>> >really within that region?
>> >
>> >
>> >can anybody help, please..
>> >--
>> >*Regards*
>> >*
>> >Vamshi Krishna
>> >*
>>
>>
>>
>
>
>-- 
>*Regards*
>*
>Vamshi Krishna
>*



Re: how get() works

Posted by Vamshi Krishna <va...@gmail.com>.
Thank you Doug..

Onemore question is, If a particular region is found by looking at the
range handeled by it, How  is search performed within that region to find
requested rowKey? Is it by linear search or binary search or any other
algorithm? Or for every row in that region, is there any hash value stored
and hash lookup takes place to get that rowKey's value?   what happens
really within that region?

On Mon, Feb 13, 2012 at 7:35 PM, Doug Meil <do...@explorysmedical.com>wrote:

>
> re:  "Now if that RegionServer has multiple
> regions on it, how does the request get transfered to a correct region
> which has the requested rowKey?"
>
> See...
>
> http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.html#
> getRegionLocation%28byte[],%20boolean%29
>
> As described in Arch/Client in the book, the Hbase client knows all the
> regions and the the region boundaries from META.
>
>
>
>
> On 2/13/12 1:46 AM, "Vamshi Krishna" <va...@gmail.com> wrote:
>
> >Hi all, i have a small basic doubt regarding get() method which is used in
> >HTable. From the hbase book, under 8.3.Client section, i understood that,
> >when ever client sends a request like get(rowKey) on any htable instance,
> >from ROOT and META, it knows the regionserver where the regions holding
> >that requested rowKey is present. Now if that RegionServer has multiple
> >regions on it, how does the request get transfered to a correct region
> >which has the requested rowKey? (will there be again any lookups for it?)
> >
> >Is it like this:  The RegionServer holds the information about all the
> >regions it is hosting, so looking at the respective ranges of rows in each
> >region a region is selected, and passing that request to that appropriate
> >region.  Am i correct? if not, correct me.
> >
> >Onemore question is, If a particular region is found by looking at the
> >range handeled by it, How  is search performed within that region to find
> >requested rowKey? Is it by linear search or binary search or any other
> >algorithm? Or for every row in that region, is there any hash value stored
> >and hash lookup takes place to get that rowKey's value?   what happens
> >really within that region?
> >
> >
> >can anybody help, please..
> >--
> >*Regards*
> >*
> >Vamshi Krishna
> >*
>
>
>


-- 
*Regards*
*
Vamshi Krishna
*

Re: how get() works

Posted by Doug Meil <do...@explorysmedical.com>.
re:  "Now if that RegionServer has multiple
regions on it, how does the request get transfered to a correct region
which has the requested rowKey?"

See...

http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/client/HTable.html#
getRegionLocation%28byte[],%20boolean%29

As described in Arch/Client in the book, the Hbase client knows all the
regions and the the region boundaries from META.




On 2/13/12 1:46 AM, "Vamshi Krishna" <va...@gmail.com> wrote:

>Hi all, i have a small basic doubt regarding get() method which is used in
>HTable. From the hbase book, under 8.3.Client section, i understood that,
>when ever client sends a request like get(rowKey) on any htable instance,
>from ROOT and META, it knows the regionserver where the regions holding
>that requested rowKey is present. Now if that RegionServer has multiple
>regions on it, how does the request get transfered to a correct region
>which has the requested rowKey? (will there be again any lookups for it?)
>
>Is it like this:  The RegionServer holds the information about all the
>regions it is hosting, so looking at the respective ranges of rows in each
>region a region is selected, and passing that request to that appropriate
>region.  Am i correct? if not, correct me.
>
>Onemore question is, If a particular region is found by looking at the
>range handeled by it, How  is search performed within that region to find
>requested rowKey? Is it by linear search or binary search or any other
>algorithm? Or for every row in that region, is there any hash value stored
>and hash lookup takes place to get that rowKey's value?   what happens
>really within that region?
>
>
>can anybody help, please..
>-- 
>*Regards*
>*
>Vamshi Krishna
>*