|
Lyska Anton
2013-01-02, 16:17
Nicolas Liochon
2013-01-02, 16:33
Jean-Marc Spaggiari
2013-01-03, 00:34
Lyska Anton
2013-01-03, 09:33
Nicolas Liochon
2013-01-03, 10:26
Jean-Marc Spaggiari
2013-01-03, 18:33
Nicolas Liochon
2013-01-03, 19:06
Jean-Marc Spaggiari
2013-01-03, 19:27
Jean-Marc Spaggiari
2013-01-03, 19:42
Jean-Marc Spaggiari
2013-01-03, 19:45
Jean-Marc Spaggiari
2013-01-03, 20:26
|
-
HConnection.locateRegions returns nullLyska Anton 2013-01-02, 16:17
Hi all,
I want to write simple tool for rebalancing regions in cluster. For that I need current location of all regions. I've found method HConnection.locateRegions(tableName), but it always returns null. Also, i've tried to call HConnection.locateRegion(regionName), and it returns null too. sample code: Configuration config = HBaseConfiguration.create(); config.set("hbase.zookeeper.quorum", host); HConnection connection = HConnectionManager.createConnection(config); List<HRegionLocation> locations = connection.locateRegions(tableName); //return null here HBase Version 0.92.1-cdh4.1.2 Thanks in advance.
-
Re: HConnection.locateRegions returns nullNicolas Liochon 2013-01-02, 16:33
Hi,
It's actually not implemented (I will update the javadoc for the latest version) You can use locateRegion(final byte [] tableName, final byte [] row), and iterates on all region start keys to get all the regions. Cheers, Nicolas On Wed, Jan 2, 2013 at 5:17 PM, Lyska Anton <[EMAIL PROTECTED]> wrote: > Hi all, > > I want to write simple tool for rebalancing regions in cluster. > For that I need current location of all regions. > I've found method HConnection.locateRegions(**tableName), but it always > returns null. > Also, i've tried to call HConnection.locateRegion(**regionName), and it > returns null too. > > sample code: > > Configuration config = HBaseConfiguration.create(); > config.set("hbase.zookeeper.**quorum", host); > > HConnection connection = HConnectionManager.** > createConnection(config); > List<HRegionLocation> locations = connection.locateRegions(**tableName); > //return null here > > HBase Version 0.92.1-cdh4.1.2 > > Thanks in advance. > >
-
Re: HConnection.locateRegions returns nullJean-Marc Spaggiari 2013-01-03, 00:34
Here is the code for locateRegion:
@Override public List<HRegionLocation> locateRegions(final byte [] tableName) throws IOException { // TODO implement. use old stuff or new stuff? return null; } As you can see, it's like what Nicolas is saying. Always return null. However, relocateRegion is calling a private locateRegions which is not returning null.... You might want to try that? Also, I played few weeks ago with the region balancing. You can take a look here to see what I did. http://www.spaggiari.org/index.php/hbase/changing-the-hbase-default-loadbalancer You can do yours based on that. Nicolas, should we not have locateRegion "simply" calling the private locateRegion method? JM 2013/1/2, Nicolas Liochon <[EMAIL PROTECTED]>: > Hi, > > It's actually not implemented (I will update the javadoc for the latest > version) > You can use locateRegion(final byte [] tableName, final byte [] row), and > iterates on all region start keys to get all the regions. > > Cheers, > > Nicolas > > > > > On Wed, Jan 2, 2013 at 5:17 PM, Lyska Anton <[EMAIL PROTECTED]> wrote: > >> Hi all, >> >> I want to write simple tool for rebalancing regions in cluster. >> For that I need current location of all regions. >> I've found method HConnection.locateRegions(**tableName), but it always >> returns null. >> Also, i've tried to call HConnection.locateRegion(**regionName), and it >> returns null too. >> >> sample code: >> >> Configuration config = HBaseConfiguration.create(); >> config.set("hbase.zookeeper.**quorum", host); >> >> HConnection connection = HConnectionManager.** >> createConnection(config); >> List<HRegionLocation> locations >> connection.locateRegions(**tableName); >> //return null here >> >> HBase Version 0.92.1-cdh4.1.2 >> >> Thanks in advance. >> >> >
-
Re: HConnection.locateRegions returns nullLyska Anton 2013-01-03, 09:33
Hi,
thanks a lot! as Nicolas wrote, I use List<HRegionInfo> regions = MetaScanner.listAllRegions(config); for (HRegionInfo info : regions) { HRegionLocation loc = connection.locateRegion(info.getTableName(), info.getStartKey()); .... } 03.01.2013 2:34, Jean-Marc Spaggiari пишет: > Here is the code for locateRegion: > > @Override > public List<HRegionLocation> locateRegions(final byte [] tableName) > throws IOException { > // TODO implement. use old stuff or new stuff? > return null; > } > > > As you can see, it's like what Nicolas is saying. Always return null. > > However, relocateRegion is calling a private locateRegions which is > not returning null.... You might want to try that? > > Also, I played few weeks ago with the region balancing. You can take > a look here to see what I did. > http://www.spaggiari.org/index.php/hbase/changing-the-hbase-default-loadbalancer > You can do yours based on that. > > Nicolas, should we not have locateRegion "simply" calling the private > locateRegion method? > > JM > > 2013/1/2, Nicolas Liochon <[EMAIL PROTECTED]>: >> Hi, >> >> It's actually not implemented (I will update the javadoc for the latest >> version) >> You can use locateRegion(final byte [] tableName, final byte [] row), and >> iterates on all region start keys to get all the regions. >> >> Cheers, >> >> Nicolas >> >> >> >> >> On Wed, Jan 2, 2013 at 5:17 PM, Lyska Anton <[EMAIL PROTECTED]> wrote: >> >>> Hi all, >>> >>> I want to write simple tool for rebalancing regions in cluster. >>> For that I need current location of all regions. >>> I've found method HConnection.locateRegions(**tableName), but it always >>> returns null. >>> Also, i've tried to call HConnection.locateRegion(**regionName), and it >>> returns null too. >>> >>> sample code: >>> >>> Configuration config = HBaseConfiguration.create(); >>> config.set("hbase.zookeeper.**quorum", host); >>> >>> HConnection connection = HConnectionManager.** >>> createConnection(config); >>> List<HRegionLocation> locations >>> connection.locateRegions(**tableName); >>> //return null here >>> >>> HBase Version 0.92.1-cdh4.1.2 >>> >>> Thanks in advance. >>> >>>
-
Re: HConnection.locateRegions returns nullNicolas Liochon 2013-01-03, 10:26
Hi,
It will work, but there is some glue code to write as one is returning one region given a rowkey, while the not implemented one returns all the version. Code written by Lyska seems fine, we could put it in locateRegions (doing this server side is more efficient) Nicolas On Thu, Jan 3, 2013 at 1:34 AM, Jean-Marc Spaggiari <[EMAIL PROTECTED] > wrote: > locateRegions
-
Re: HConnection.locateRegions returns nullJean-Marc Spaggiari 2013-01-03, 18:33
I have created HBASE-7488 to implement it.
Also, I think we should add this in the interface and do the related implementation: /** * Gets the locations of all regions in the specified table, <i>tableName</i>. * @param tableName table to get regions of * @param offlined True if we are to include offlined regions, false and we'll * leave out offlined regions from returned list. * @return list of region locations for all regions of table * @throws IOException */ public List<HRegionLocation> locateRegions(byte[] tableName, final boolean offlined) throws IOException; Because current interface doesn't allow you to specify the offlined parameter. If you are fine with that too, I will submit the required patch. JM 2013/1/3, Nicolas Liochon <[EMAIL PROTECTED]>: > Hi, > > It will work, but there is some glue code to write as one is returning one > region given a rowkey, while the not implemented one returns all the > version. > Code written by Lyska seems fine, we could put it in locateRegions (doing > this server side is more efficient) > > Nicolas > > > On Thu, Jan 3, 2013 at 1:34 AM, Jean-Marc Spaggiari > <[EMAIL PROTECTED] >> wrote: > >> locateRegions >
-
Re: HConnection.locateRegions returns nullNicolas Liochon 2013-01-03, 19:06
Yep, I'm ok with that. It will need to be put in the interface (vs. the
implementation class). Would be nice if you could implement the two missing methods (i.e. public HRegionLocation locateRegion(final byte [] regionName)) On Thu, Jan 3, 2013 at 7:33 PM, Jean-Marc Spaggiari <[EMAIL PROTECTED] > wrote: > public List<HRegionLocation> locateRegions(byte[] tableName, final
-
Re: HConnection.locateRegions returns nullJean-Marc Spaggiari 2013-01-03, 19:27
I will take a look at all of that and keep you posted shortly.
JM 2013/1/3, Nicolas Liochon <[EMAIL PROTECTED]>: > Yep, I'm ok with that. It will need to be put in the interface (vs. the > implementation class). Would be nice if you could implement the two missing > methods (i.e. public HRegionLocation locateRegion(final byte [] > regionName)) > > On Thu, Jan 3, 2013 at 7:33 PM, Jean-Marc Spaggiari > <[EMAIL PROTECTED] >> wrote: > >> public List<HRegionLocation> locateRegions(byte[] tableName, final >
-
Re: HConnection.locateRegions returns nullJean-Marc Spaggiari 2013-01-03, 19:42
Done. You can take a look at what I pushed.
https://issues.apache.org/jira/browse/HBASE-7488 Regarding locateRegion(final byte[] regionName) I don't know if there is a faster way to get the first row and the table name from the regionName. Region name should already contain those 2 information. So it should be possible to retrieve that from it instead of getting all the regions and doing the comparison. Any idea if there is any util class to extract the table and the key from the name? Thanks, JM 2013/1/3, Jean-Marc Spaggiari <[EMAIL PROTECTED]>: > I will take a look at all of that and keep you posted shortly. > > JM > > 2013/1/3, Nicolas Liochon <[EMAIL PROTECTED]>: >> Yep, I'm ok with that. It will need to be put in the interface (vs. the >> implementation class). Would be nice if you could implement the two >> missing >> methods (i.e. public HRegionLocation locateRegion(final byte [] >> regionName)) >> >> On Thu, Jan 3, 2013 at 7:33 PM, Jean-Marc Spaggiari >> <[EMAIL PROTECTED] >>> wrote: >> >>> public List<HRegionLocation> locateRegions(byte[] tableName, final >> >
-
Re: HConnection.locateRegions returns nullJean-Marc Spaggiari 2013-01-03, 19:45
I found HRegionInfo.getTableName(regionName) to get the table name
quickly. Still searching for the startKey. HRegionInfo.getStartKey(regionName) doesn't exist. Maybe I will have to create it... 2013/1/3, Jean-Marc Spaggiari <[EMAIL PROTECTED]>: > Done. You can take a look at what I pushed. > > https://issues.apache.org/jira/browse/HBASE-7488 > > Regarding locateRegion(final byte[] regionName) I don't know if there > is a faster way to get the first row and the table name from the > regionName. Region name should already contain those 2 information. So > it should be possible to retrieve that from it instead of getting all > the regions and doing the comparison. Any idea if there is any util > class to extract the table and the key from the name? > > Thanks, > > JM > > 2013/1/3, Jean-Marc Spaggiari <[EMAIL PROTECTED]>: >> I will take a look at all of that and keep you posted shortly. >> >> JM >> >> 2013/1/3, Nicolas Liochon <[EMAIL PROTECTED]>: >>> Yep, I'm ok with that. It will need to be put in the interface (vs. the >>> implementation class). Would be nice if you could implement the two >>> missing >>> methods (i.e. public HRegionLocation locateRegion(final byte [] >>> regionName)) >>> >>> On Thu, Jan 3, 2013 at 7:33 PM, Jean-Marc Spaggiari >>> <[EMAIL PROTECTED] >>>> wrote: >>> >>>> public List<HRegionLocation> locateRegions(byte[] tableName, final >>> >> >
-
Re: HConnection.locateRegions returns nullJean-Marc Spaggiari 2013-01-03, 20:26
Hi Nicolas,
I'm done with the update. I have implemented HRegionInfo.getStartKey to remove the loop in locateRegion(final byte[] regionName). Tests are running and so far, so good. I will update the JIRA when the tests will be done. JM 2013/1/3, Jean-Marc Spaggiari <[EMAIL PROTECTED]>: > I found HRegionInfo.getTableName(regionName) to get the table name > quickly. Still searching for the startKey. > HRegionInfo.getStartKey(regionName) doesn't exist. Maybe I will have > to create it... > > 2013/1/3, Jean-Marc Spaggiari <[EMAIL PROTECTED]>: >> Done. You can take a look at what I pushed. >> >> https://issues.apache.org/jira/browse/HBASE-7488 >> >> Regarding locateRegion(final byte[] regionName) I don't know if there >> is a faster way to get the first row and the table name from the >> regionName. Region name should already contain those 2 information. So >> it should be possible to retrieve that from it instead of getting all >> the regions and doing the comparison. Any idea if there is any util >> class to extract the table and the key from the name? >> >> Thanks, >> >> JM >> >> 2013/1/3, Jean-Marc Spaggiari <[EMAIL PROTECTED]>: >>> I will take a look at all of that and keep you posted shortly. >>> >>> JM >>> >>> 2013/1/3, Nicolas Liochon <[EMAIL PROTECTED]>: >>>> Yep, I'm ok with that. It will need to be put in the interface (vs. the >>>> implementation class). Would be nice if you could implement the two >>>> missing >>>> methods (i.e. public HRegionLocation locateRegion(final byte [] >>>> regionName)) >>>> >>>> On Thu, Jan 3, 2013 at 7:33 PM, Jean-Marc Spaggiari >>>> <[EMAIL PROTECTED] >>>>> wrote: >>>> >>>>> public List<HRegionLocation> locateRegions(byte[] tableName, final >>>> >>> >> > |