|
Jean-Marc Spaggiari
2012-07-09, 12:25
yuzhihong@...
2012-07-09, 12:48
Michael Segel
2012-07-09, 13:37
Jean-Marc Spaggiari
2012-07-09, 13:42
Michael Segel
2012-07-09, 14:39
Jean-Marc Spaggiari
2012-07-10, 12:28
Dhaval Shah
2012-07-10, 13:07
Michael Segel
2012-07-10, 22:15
Ted Yu
2012-07-10, 22:20
|
-
Improvement: Provide better feedback on Put to unknown CFJean-Marc Spaggiari 2012-07-09, 12:25
Hi,
When we try to add a value to a CF which does not exist on a table, we are getting the error below. I think this is not really giving the right information about the issue. Should it not be better to provide an exception like UnknownColumnFamillyException? JM org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: Failed 1 action: DoNotRetryIOException: 1 time, servers with issues: phenom:60020, at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatchCallback(HConnectionManager.java:1591) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatch(HConnectionManager.java:1367) at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:945) at org.apache.hadoop.hbase.client.HTable.doPut(HTable.java:801) at org.apache.hadoop.hbase.client.HTable.put(HTable.java:776) at org.myapp.app.Integrator.main(Integrator.java:162)
-
Re: Improvement: Provide better feedback on Put to unknown CFyuzhihong@... 2012-07-09, 12:48
I agree.
On Jul 9, 2012, at 5:25 AM, Jean-Marc Spaggiari <[EMAIL PROTECTED]> wrote: > Hi, > > When we try to add a value to a CF which does not exist on a table, we > are getting the error below. I think this is not really giving the > right information about the issue. > > Should it not be better to provide an exception like > UnknownColumnFamillyException? > > JM > > org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: > Failed 1 action: DoNotRetryIOException: 1 time, servers with issues: > phenom:60020, > at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatchCallback(HConnectionManager.java:1591) > at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatch(HConnectionManager.java:1367) > at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:945) > at org.apache.hadoop.hbase.client.HTable.doPut(HTable.java:801) > at org.apache.hadoop.hbase.client.HTable.put(HTable.java:776) > at org.myapp.app.Integrator.main(Integrator.java:162)
-
Re: Improvement: Provide better feedback on Put to unknown CFMichael Segel 2012-07-09, 13:37
This may beg the question ...
Why do you not know the CF? Your table schemas only consist of tables and CFs. So you should know them at the start of your job or m/r Mapper.setup(); On Jul 9, 2012, at 7:25 AM, Jean-Marc Spaggiari wrote: > Hi, > > When we try to add a value to a CF which does not exist on a table, we > are getting the error below. I think this is not really giving the > right information about the issue. > > Should it not be better to provide an exception like > UnknownColumnFamillyException? > > JM > > org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: > Failed 1 action: DoNotRetryIOException: 1 time, servers with issues: > phenom:60020, > at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatchCallback(HConnectionManager.java:1591) > at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatch(HConnectionManager.java:1367) > at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:945) > at org.apache.hadoop.hbase.client.HTable.doPut(HTable.java:801) > at org.apache.hadoop.hbase.client.HTable.put(HTable.java:776) > at org.myapp.app.Integrator.main(Integrator.java:162) >
-
Re: Improvement: Provide better feedback on Put to unknown CFJean-Marc Spaggiari 2012-07-09, 13:42
In my case it was a codding issue. Used the wrong final byte array to
access the CF. So I agree, the CF is well known since you create the table based on them. But maybe you have added some other CFs later and something went wrong? It's just that based on the exception received, there is no indication that there might be some issues with the CF. So you might end trying to figure what the issue is far from where it's really. 2012/7/9, Michael Segel <[EMAIL PROTECTED]>: > This may beg the question ... > Why do you not know the CF? > > Your table schemas only consist of tables and CFs. So you should know them > at the start of your job or m/r Mapper.setup(); > > > On Jul 9, 2012, at 7:25 AM, Jean-Marc Spaggiari wrote: > >> Hi, >> >> When we try to add a value to a CF which does not exist on a table, we >> are getting the error below. I think this is not really giving the >> right information about the issue. >> >> Should it not be better to provide an exception like >> UnknownColumnFamillyException? >> >> JM >> >> org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: >> Failed 1 action: DoNotRetryIOException: 1 time, servers with issues: >> phenom:60020, >> at >> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatchCallback(HConnectionManager.java:1591) >> at >> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatch(HConnectionManager.java:1367) >> at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:945) >> at org.apache.hadoop.hbase.client.HTable.doPut(HTable.java:801) >> at org.apache.hadoop.hbase.client.HTable.put(HTable.java:776) >> at org.myapp.app.Integrator.main(Integrator.java:162) >> > >
-
Re: Improvement: Provide better feedback on Put to unknown CFMichael Segel 2012-07-09, 14:39
Jean-Marc,
I think you mis understood. At run time, you can query HBase to find out the table schema and its column families. While I agree that you are seeing poorly written exceptions, IMHO its easier to avoid the problem in the first place. In a Map/Reduce in side the mapper class, you have everything you need to get the table's schema. From that you can see the column families. HTH -Mike On Jul 9, 2012, at 8:42 AM, Jean-Marc Spaggiari wrote: > In my case it was a codding issue. Used the wrong final byte array to > access the CF. So I agree, the CF is well known since you create the > table based on them. But maybe you have added some other CFs later and > something went wrong? > > It's just that based on the exception received, there is no indication > that there might be some issues with the CF. So you might end trying > to figure what the issue is far from where it's really. > > 2012/7/9, Michael Segel <[EMAIL PROTECTED]>: >> This may beg the question ... >> Why do you not know the CF? >> >> Your table schemas only consist of tables and CFs. So you should know them >> at the start of your job or m/r Mapper.setup(); >> >> >> On Jul 9, 2012, at 7:25 AM, Jean-Marc Spaggiari wrote: >> >>> Hi, >>> >>> When we try to add a value to a CF which does not exist on a table, we >>> are getting the error below. I think this is not really giving the >>> right information about the issue. >>> >>> Should it not be better to provide an exception like >>> UnknownColumnFamillyException? >>> >>> JM >>> >>> org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: >>> Failed 1 action: DoNotRetryIOException: 1 time, servers with issues: >>> phenom:60020, >>> at >>> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatchCallback(HConnectionManager.java:1591) >>> at >>> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatch(HConnectionManager.java:1367) >>> at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:945) >>> at org.apache.hadoop.hbase.client.HTable.doPut(HTable.java:801) >>> at org.apache.hadoop.hbase.client.HTable.put(HTable.java:776) >>> at org.myapp.app.Integrator.main(Integrator.java:162) >>> >> >> >
-
Re: Improvement: Provide better feedback on Put to unknown CFJean-Marc Spaggiari 2012-07-10, 12:28
Hi Michael,
I agree that in the code we have access to all the information to access the right column. However, let's imagine the column family name is dynamically retrieved from a property file, and there is a typo. Or, another process removed the column family. Or there is a bug in the code, and so on. There is many possibilities why an application might try to access a CF which, at the end, doesn't exist in the table. I agree it should have been checked from the meta before, but skeeping that step might be required to improve performances. Adding such exception will not have any negative impact on perfs, readability, etc. It will simply help a lot the defect tracking when someone will face the issue and see the stack trace. JM 2012/7/9, Michael Segel <[EMAIL PROTECTED]>: > Jean-Marc, > > I think you mis understood. > At run time, you can query HBase to find out the table schema and its column > families. > > While I agree that you are seeing poorly written exceptions, IMHO its easier > to avoid the problem in the first place. > > In a Map/Reduce in side the mapper class, you have everything you need to > get the table's schema. > From that you can see the column families. > > > HTH > > -Mike > > On Jul 9, 2012, at 8:42 AM, Jean-Marc Spaggiari wrote: > >> In my case it was a codding issue. Used the wrong final byte array to >> access the CF. So I agree, the CF is well known since you create the >> table based on them. But maybe you have added some other CFs later and >> something went wrong? >> >> It's just that based on the exception received, there is no indication >> that there might be some issues with the CF. So you might end trying >> to figure what the issue is far from where it's really. >> >> 2012/7/9, Michael Segel <[EMAIL PROTECTED]>: >>> This may beg the question ... >>> Why do you not know the CF? >>> >>> Your table schemas only consist of tables and CFs. So you should know >>> them >>> at the start of your job or m/r Mapper.setup(); >>> >>> >>> On Jul 9, 2012, at 7:25 AM, Jean-Marc Spaggiari wrote: >>> >>>> Hi, >>>> >>>> When we try to add a value to a CF which does not exist on a table, we >>>> are getting the error below. I think this is not really giving the >>>> right information about the issue. >>>> >>>> Should it not be better to provide an exception like >>>> UnknownColumnFamillyException? >>>> >>>> JM >>>> >>>> org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: >>>> Failed 1 action: DoNotRetryIOException: 1 time, servers with issues: >>>> phenom:60020, >>>> at >>>> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatchCallback(HConnectionManager.java:1591) >>>> at >>>> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatch(HConnectionManager.java:1367) >>>> at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:945) >>>> at org.apache.hadoop.hbase.client.HTable.doPut(HTable.java:801) >>>> at org.apache.hadoop.hbase.client.HTable.put(HTable.java:776) >>>> at org.myapp.app.Integrator.main(Integrator.java:162) >>>> >>> >>> >> > >
-
Re: Improvement: Provide better feedback on Put to unknown CFDhaval Shah 2012-07-10, 13:07
+1 a proper error message always helps IMHO ------------------------------ On Tue 10 Jul, 2012 5:58 PM IST Jean-Marc Spaggiari wrote: >Hi Michael, > >I agree that in the code we have access to all the information to >access the right column. > >However, let's imagine the column family name is dynamically retrieved >from a property file, and there is a typo. Or, another process removed >the column family. Or there is a bug in the code, and so on. > >There is many possibilities why an application might try to access a >CF which, at the end, doesn't exist in the table. I agree it should >have been checked from the meta before, but skeeping that step might >be required to improve performances. > >Adding such exception will not have any negative impact on perfs, >readability, etc. It will simply help a lot the defect tracking when >someone will face the issue and see the stack trace. > >JM > >2012/7/9, Michael Segel <[EMAIL PROTECTED]>: >> Jean-Marc, >> >> I think you mis understood. >> At run time, you can query HBase to find out the table schema and its column >> families. >> >> While I agree that you are seeing poorly written exceptions, IMHO its easier >> to avoid the problem in the first place. >> >> In a Map/Reduce in side the mapper class, you have everything you need to >> get the table's schema. >> From that you can see the column families. >> >> >> HTH >> >> -Mike >> >> On Jul 9, 2012, at 8:42 AM, Jean-Marc Spaggiari wrote: >> >> In my case it was a codding issue. Used the wrong final byte array to >> access the CF. So I agree, the CF is well known since you create the >> table based on them. But maybe you have added some other CFs later and >> something went wrong? >> >> It's just that based on the exception received, there is no indication >> that there might be some issues with the CF. So you might end trying >> to figure what the issue is far from where it's really. >> >> 2012/7/9, Michael Segel <[EMAIL PROTECTED]>: >>> This may beg the question ... >>> Why do you not know the CF? >>> >>> Your table schemas only consist of tables and CFs. So you should know >>> them >>> at the start of your job or m/r Mapper.setup(); >>> >>> >>> On Jul 9, 2012, at 7:25 AM, Jean-Marc Spaggiari wrote: >>> >>> Hi, >>> >>> When we try to add a value to a CF which does not exist on a table, we >>> are getting the error below. I think this is not really giving the >>> right information about the issue. >>> >>> Should it not be better to provide an exception like >>> UnknownColumnFamillyException? >>> >>> JM >>> >>> org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: >>> Failed 1 action: DoNotRetryIOException: 1 time, servers with issues: >>> phenom:60020, >>> at >>> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatchCallback(HConnectionManager.java:1591) >>> at >>> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatch(HConnectionManager.java:1367) >>> at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:945) >>> at org.apache.hadoop.hbase.client.HTable.doPut(HTable.java:801) >>> at org.apache.hadoop.hbase.client.HTable.put(HTable.java:776) >>> at org.myapp.app.Integrator.main(Integrator.java:162) >>> >>> >>> >> >> >>
-
Re: Improvement: Provide better feedback on Put to unknown CFMichael Segel 2012-07-10, 22:15
Nobody is arguing that the exception message doesn't make sense. +1 to making better error messages.
What I am suggesting is to take advantage of HBase's meta data. That is, at run time, you can query HBase to determine what tables exist, and see what column families exist. So you can avoid the error in the first place. On Jul 10, 2012, at 8:07 AM, Dhaval Shah wrote: > > +1 a proper error message always helps IMHO > > > > ------------------------------ > On Tue 10 Jul, 2012 5:58 PM IST Jean-Marc Spaggiari wrote: > >> Hi Michael, >> >> I agree that in the code we have access to all the information to >> access the right column. >> >> However, let's imagine the column family name is dynamically retrieved >> from a property file, and there is a typo. Or, another process removed >> the column family. Or there is a bug in the code, and so on. >> >> There is many possibilities why an application might try to access a >> CF which, at the end, doesn't exist in the table. I agree it should >> have been checked from the meta before, but skeeping that step might >> be required to improve performances. >> >> Adding such exception will not have any negative impact on perfs, >> readability, etc. It will simply help a lot the defect tracking when >> someone will face the issue and see the stack trace. >> >> JM >> >> 2012/7/9, Michael Segel <[EMAIL PROTECTED]>: >>> Jean-Marc, >>> >>> I think you mis understood. >>> At run time, you can query HBase to find out the table schema and its column >>> families. >>> >>> While I agree that you are seeing poorly written exceptions, IMHO its easier >>> to avoid the problem in the first place. >>> >>> In a Map/Reduce in side the mapper class, you have everything you need to >>> get the table's schema. >>> From that you can see the column families. >>> >>> >>> HTH >>> >>> -Mike >>> >>> On Jul 9, 2012, at 8:42 AM, Jean-Marc Spaggiari wrote: >>> >>> In my case it was a codding issue. Used the wrong final byte array to >>> access the CF. So I agree, the CF is well known since you create the >>> table based on them. But maybe you have added some other CFs later and >>> something went wrong? >>> >>> It's just that based on the exception received, there is no indication >>> that there might be some issues with the CF. So you might end trying >>> to figure what the issue is far from where it's really. >>> >>> 2012/7/9, Michael Segel <[EMAIL PROTECTED]>: >>>> This may beg the question ... >>>> Why do you not know the CF? >>>> >>>> Your table schemas only consist of tables and CFs. So you should know >>>> them >>>> at the start of your job or m/r Mapper.setup(); >>>> >>>> >>>> On Jul 9, 2012, at 7:25 AM, Jean-Marc Spaggiari wrote: >>>> >>>> Hi, >>>> >>>> When we try to add a value to a CF which does not exist on a table, we >>>> are getting the error below. I think this is not really giving the >>>> right information about the issue. >>>> >>>> Should it not be better to provide an exception like >>>> UnknownColumnFamillyException? >>>> >>>> JM >>>> >>>> org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: >>>> Failed 1 action: DoNotRetryIOException: 1 time, servers with issues: >>>> phenom:60020, >>>> at >>>> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatchCallback(HConnectionManager.java:1591) >>>> at >>>> org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatch(HConnectionManager.java:1367) >>>> at org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:945) >>>> at org.apache.hadoop.hbase.client.HTable.doPut(HTable.java:801) >>>> at org.apache.hadoop.hbase.client.HTable.put(HTable.java:776) >>>> at org.myapp.app.Integrator.main(Integrator.java:162) >>>> >>>> >>>> >>> >>> >>> > >
-
Re: Improvement: Provide better feedback on Put to unknown CFTed Yu 2012-07-10, 22:20
Nice discussion here.
Jean-Marc: Do you mind logging a JIRA ? Thanks On Tue, Jul 10, 2012 at 3:15 PM, Michael Segel <[EMAIL PROTECTED]>wrote: > Nobody is arguing that the exception message doesn't make sense. +1 to > making better error messages. > > What I am suggesting is to take advantage of HBase's meta data. That is, > at run time, you can query HBase to determine what tables exist, and see > what column families exist. > So you can avoid the error in the first place. > > > On Jul 10, 2012, at 8:07 AM, Dhaval Shah wrote: > > > > > +1 a proper error message always helps IMHO > > > > > > > > ------------------------------ > > On Tue 10 Jul, 2012 5:58 PM IST Jean-Marc Spaggiari wrote: > > > >> Hi Michael, > >> > >> I agree that in the code we have access to all the information to > >> access the right column. > >> > >> However, let's imagine the column family name is dynamically retrieved > >> from a property file, and there is a typo. Or, another process removed > >> the column family. Or there is a bug in the code, and so on. > >> > >> There is many possibilities why an application might try to access a > >> CF which, at the end, doesn't exist in the table. I agree it should > >> have been checked from the meta before, but skeeping that step might > >> be required to improve performances. > >> > >> Adding such exception will not have any negative impact on perfs, > >> readability, etc. It will simply help a lot the defect tracking when > >> someone will face the issue and see the stack trace. > >> > >> JM > >> > >> 2012/7/9, Michael Segel <[EMAIL PROTECTED]>: > >>> Jean-Marc, > >>> > >>> I think you mis understood. > >>> At run time, you can query HBase to find out the table schema and its > column > >>> families. > >>> > >>> While I agree that you are seeing poorly written exceptions, IMHO its > easier > >>> to avoid the problem in the first place. > >>> > >>> In a Map/Reduce in side the mapper class, you have everything you need > to > >>> get the table's schema. > >>> From that you can see the column families. > >>> > >>> > >>> HTH > >>> > >>> -Mike > >>> > >>> On Jul 9, 2012, at 8:42 AM, Jean-Marc Spaggiari wrote: > >>> > >>> In my case it was a codding issue. Used the wrong final byte array to > >>> access the CF. So I agree, the CF is well known since you create the > >>> table based on them. But maybe you have added some other CFs later and > >>> something went wrong? > >>> > >>> It's just that based on the exception received, there is no indication > >>> that there might be some issues with the CF. So you might end trying > >>> to figure what the issue is far from where it's really. > >>> > >>> 2012/7/9, Michael Segel <[EMAIL PROTECTED]>: > >>>> This may beg the question ... > >>>> Why do you not know the CF? > >>>> > >>>> Your table schemas only consist of tables and CFs. So you should know > >>>> them > >>>> at the start of your job or m/r Mapper.setup(); > >>>> > >>>> > >>>> On Jul 9, 2012, at 7:25 AM, Jean-Marc Spaggiari wrote: > >>>> > >>>> Hi, > >>>> > >>>> When we try to add a value to a CF which does not exist on a table, we > >>>> are getting the error below. I think this is not really giving the > >>>> right information about the issue. > >>>> > >>>> Should it not be better to provide an exception like > >>>> UnknownColumnFamillyException? > >>>> > >>>> JM > >>>> > >>>> org.apache.hadoop.hbase.client.RetriesExhaustedWithDetailsException: > >>>> Failed 1 action: DoNotRetryIOException: 1 time, servers with issues: > >>>> phenom:60020, > >>>> at > >>>> > org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatchCallback(HConnectionManager.java:1591) > >>>> at > >>>> > org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.processBatch(HConnectionManager.java:1367) > >>>> at > org.apache.hadoop.hbase.client.HTable.flushCommits(HTable.java:945) > >>>> at org.apache.hadoop.hbase.client.HTable.doPut(HTable.java:801) > >>> |