[jira] [Commented] (HBASE-8701) distributedLogReplay need to apply wal edits in the receiving order of those edits
[ https://issues.apache.org/jira/browse/HBASE-8701?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690072#comment-13690072 ] Jeffrey Zhong commented on HBASE-8701: -- {quote} But some can be -ve? So they will be out of order? {quote} the negative mvcc is only used in KV comparison to resolve conflicts when row + timestamp is same. The hfile sequence number used in flush is from current region server log sequence number not the mvcc value. KVs of the same key+timestamp can be out of order in multiple store files while the right KV is selected with the help of these negative mvcc values(origin log sequence number). (You can refer to KVScannerComparator#compare) {quote} Is that safe presumption to make in replay? Is this the least sequenceid of the batch? Do we have to add it to WALEdit at all? {quote} I checked the wal serialization code, kv isn't PBed and we don't write mvcc values into wal. Therefore, I still need to add the original log sequence number into receiving RS hlogkey of a wal entry to maintain the original order of changes when re-replaying these edits for a RS chain failure scenario. During replay, we can use the last sequence id of a batch because a batch request is from a single wal and the relative order of changes is maintained when constructing the batch request. So the last KV wins if there are multiple KVs of the same key + timestamp. I don't have to put the original seq number into WALEdit while need to change several method signatures to pass the info down. distributedLogReplay need to apply wal edits in the receiving order of those edits -- Key: HBASE-8701 URL: https://issues.apache.org/jira/browse/HBASE-8701 Project: HBase Issue Type: Bug Components: MTTR Reporter: Jeffrey Zhong Assignee: Jeffrey Zhong Fix For: 0.98.0, 0.95.2 Attachments: 8701-v3.txt, hbase-8701-v4.patch, hbase-8701-v5.patch, hbase-8701-v6.patch, hbase-8701-v7.patch This issue happens in distributedLogReplay mode when recovering multiple puts of the same key + version(timestamp). After replay, the value is nondeterministic of the key h5. The original concern situation raised from [~eclark]: For all edits the rowkey is the same. There's a log with: [ A (ts = 0), B (ts = 0) ] Replay the first half of the log. A user puts in C (ts = 0) Memstore has to flush A new Hfile will be created with [ C, A ] and MaxSequenceId = C's seqid. Replay the rest of the Log. Flush The issue will happen in similar situation like Put(key, t=T) in WAL1 and Put(key,t=T) in WAL2 h5. Below is the option(proposed by Ted) I'd like to use: a) During replay, we pass original wal sequence number of each edit to the receiving RS b) In receiving RS, we store negative original sequence number of wal edits into mvcc field of KVs of wal edits c) Add handling of negative MVCC in KVScannerComparator and KVComparator d) In receiving RS, write original sequence number into an optional field of wal file for chained RS failure situation e) When opening a region, we add a safety bumper(a large number) in order for the new sequence number of a newly opened region not to collide with old sequence numbers. In the future, when we stores sequence number along with KVs, we can adjust the above solution a little bit by avoiding to overload MVCC field. h5. The other alternative options are listed below for references: Option one a) disallow writes during recovery b) during replay, we pass original wal sequence ids c) hold flush till all wals of a recovering region are replayed. Memstore should hold because we only recover unflushed wal edits. For edits with same key + version, whichever with larger sequence Id wins. Option two a) During replay, we pass original wal sequence ids b) for each wal edit, we store each edit's original sequence id along with its key. c) during scanning, we use the original sequence id if it's present otherwise its store file sequence Id d) compaction can just leave put with max sequence id Please let me know if you have better ideas. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Created] (HBASE-8781) ImmutableBytesWritable constructor with another IBW as param need to consider the offset of the passed IBW
Anoop Sam John created HBASE-8781: - Summary: ImmutableBytesWritable constructor with another IBW as param need to consider the offset of the passed IBW Key: HBASE-8781 URL: https://issues.apache.org/jira/browse/HBASE-8781 Project: HBase Issue Type: Bug Affects Versions: 0.94.8 Reporter: Anoop Sam John Assignee: Anoop Sam John Priority: Minor Fix For: 0.98.0 {code} /** * Set the new ImmutableBytesWritable to the contents of the passed * codeibw/code. * @param ibw the value to set this ImmutableBytesWritable to. */ public ImmutableBytesWritable(final ImmutableBytesWritable ibw) { this(ibw.get(), 0, ibw.getSize()); } {code} It should be this(ibw.get(), ibw.getOffset(), ibw.getSize()); -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8781) ImmutableBytesWritable constructor with another IBW as param need to consider the offset of the passed IBW
[ https://issues.apache.org/jira/browse/HBASE-8781?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Anoop Sam John updated HBASE-8781: -- Status: Patch Available (was: Open) Run QA ImmutableBytesWritable constructor with another IBW as param need to consider the offset of the passed IBW -- Key: HBASE-8781 URL: https://issues.apache.org/jira/browse/HBASE-8781 Project: HBase Issue Type: Bug Affects Versions: 0.94.8 Reporter: Anoop Sam John Assignee: Anoop Sam John Priority: Minor Fix For: 0.98.0 Attachments: HBASE-8781.patch {code} /** * Set the new ImmutableBytesWritable to the contents of the passed * codeibw/code. * @param ibw the value to set this ImmutableBytesWritable to. */ public ImmutableBytesWritable(final ImmutableBytesWritable ibw) { this(ibw.get(), 0, ibw.getSize()); } {code} It should be this(ibw.get(), ibw.getOffset(), ibw.getSize()); -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8781) ImmutableBytesWritable constructor with another IBW as param need to consider the offset of the passed IBW
[ https://issues.apache.org/jira/browse/HBASE-8781?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Anoop Sam John updated HBASE-8781: -- Attachment: HBASE-8781.patch ImmutableBytesWritable constructor with another IBW as param need to consider the offset of the passed IBW -- Key: HBASE-8781 URL: https://issues.apache.org/jira/browse/HBASE-8781 Project: HBase Issue Type: Bug Affects Versions: 0.94.8 Reporter: Anoop Sam John Assignee: Anoop Sam John Priority: Minor Fix For: 0.98.0 Attachments: HBASE-8781.patch {code} /** * Set the new ImmutableBytesWritable to the contents of the passed * codeibw/code. * @param ibw the value to set this ImmutableBytesWritable to. */ public ImmutableBytesWritable(final ImmutableBytesWritable ibw) { this(ibw.get(), 0, ibw.getSize()); } {code} It should be this(ibw.get(), ibw.getOffset(), ibw.getSize()); -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8781) ImmutableBytesWritable constructor with another IBW as param need to consider the offset of the passed IBW
[ https://issues.apache.org/jira/browse/HBASE-8781?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690094#comment-13690094 ] ramkrishna.s.vasudevan commented on HBASE-8781: --- +1 ImmutableBytesWritable constructor with another IBW as param need to consider the offset of the passed IBW -- Key: HBASE-8781 URL: https://issues.apache.org/jira/browse/HBASE-8781 Project: HBase Issue Type: Bug Affects Versions: 0.94.8 Reporter: Anoop Sam John Assignee: Anoop Sam John Priority: Minor Fix For: 0.98.0 Attachments: HBASE-8781.patch {code} /** * Set the new ImmutableBytesWritable to the contents of the passed * codeibw/code. * @param ibw the value to set this ImmutableBytesWritable to. */ public ImmutableBytesWritable(final ImmutableBytesWritable ibw) { this(ibw.get(), 0, ibw.getSize()); } {code} It should be this(ibw.get(), ibw.getOffset(), ibw.getSize()); -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8779) add mutateRow method support to thrift2
[ https://issues.apache.org/jira/browse/HBASE-8779?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] duanhongyi updated HBASE-8779: -- Fix Version/s: 0.95.2 add mutateRow method support to thrift2 --- Key: HBASE-8779 URL: https://issues.apache.org/jira/browse/HBASE-8779 Project: HBase Issue Type: New Feature Components: Thrift Reporter: duanhongyi Fix For: 0.95.2 Attachments: thrift2-HBASE-8779.patch, thrift-ThriftHBaseServiceHandler.java-HBASE-8779.patch, thrift-ThriftUtilities.java-HBASE-8779.patch examples py: TPut put = TPut() m1 = TMutation(put=put) TDelete single_delete = TDelete() m2 = TMutation(singleDelete=single_delete) row_mu = TRowMutations(row,[m1,m2]) thbase_service.mutateRow(table,row_mu) # atomically on a single row -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Created] (HBASE-8782) Thrift2 can not parse table names when using framed transport
Hamed Madani created HBASE-8782: --- Summary: Thrift2 can not parse table names when using framed transport Key: HBASE-8782 URL: https://issues.apache.org/jira/browse/HBASE-8782 Project: HBase Issue Type: Bug Components: Thrift Reporter: Hamed Madani Attachments: HBASE_8782.patch ThriftHBaseServiceHandler.java use .array() on table names which resulted to incorrect values for table name with framed transport. Replacing table.array() with getBytes(table) fixed this problem. I've attached the patch -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8782) Thrift2 can not parse table names when using framed transport
[ https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Hamed Madani updated HBASE-8782: Attachment: HBASE_8782.patch Thrift2 can not parse table names when using framed transport - Key: HBASE-8782 URL: https://issues.apache.org/jira/browse/HBASE-8782 Project: HBase Issue Type: Bug Components: Thrift Reporter: Hamed Madani Attachments: HBASE_8782.patch ThriftHBaseServiceHandler.java use .array() on table names which resulted to incorrect values for table name with framed transport. Replacing table.array() with getBytes(table) fixed this problem. I've attached the patch -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8782) Thrift2 can not parse table names when using framed transport
[ https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Hamed Madani updated HBASE-8782: Affects Version/s: 0.95.1 Status: Patch Available (was: Open) Thrift2 can not parse table names when using framed transport - Key: HBASE-8782 URL: https://issues.apache.org/jira/browse/HBASE-8782 Project: HBase Issue Type: Bug Components: Thrift Affects Versions: 0.95.1 Reporter: Hamed Madani Attachments: HBASE_8782.patch ThriftHBaseServiceHandler.java use .array() on table names which resulted to incorrect values for table name with framed transport. Replacing table.array() with getBytes(table) fixed this problem. I've attached the patch -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8776) port HBASE-8723 to 0.94
[ https://issues.apache.org/jira/browse/HBASE-8776?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690119#comment-13690119 ] Lars Hofhansl commented on HBASE-8776: -- Was late yesterday evening (in Germany). So you want to match the 180s ZK timeout, to cover RS failure detection? The default is already awfully long when ZK or the HMaster/RS is actually down. I prefer letting the caller know quickly rather retrying endlessly; and just make long enough to ride over a split/regionmove. It looks like HBASE-8723 was specifically about an integration test, so maybe just increase it for the test? Count me +0. If you think we need this change in 0.94, it's fine to commit. port HBASE-8723 to 0.94 --- Key: HBASE-8776 URL: https://issues.apache.org/jira/browse/HBASE-8776 Project: HBase Issue Type: Bug Affects Versions: 0.94.8 Reporter: Sergey Shelukhin Assignee: Sergey Shelukhin Fix For: 0.94.9 Attachments: HBASE-8776-v0.patch -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8721) Deletes can mask puts that happen after the delete
[ https://issues.apache.org/jira/browse/HBASE-8721?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690122#comment-13690122 ] Lars Hofhansl commented on HBASE-8721: -- Who is going to sponsor this change with a +1? Doesn't look like anybody will. We're going to increase HFile sizes, break all kinds of implicit assumptions, the use case is narrow, and we're already getting a version specific family delete marker, which should address some of the issues. Deletes can mask puts that happen after the delete -- Key: HBASE-8721 URL: https://issues.apache.org/jira/browse/HBASE-8721 Project: HBase Issue Type: Improvement Components: regionserver Reporter: Feng Honghua Attachments: HBASE-8721-0.94-V0.patch this fix aims for bug mentioned in http://hbase.apache.org/book.html 5.8.2.1: Deletes mask puts, even puts that happened after the delete was entered. Remember that a delete writes a tombstone, which only disappears after then next major compaction has run. Suppose you do a delete of everything = T. After this you do a new put with a timestamp = T. This put, even if it happened after the delete, will be masked by the delete tombstone. Performing the put will not fail, but when you do a get you will notice the put did have no effect. It will start working again after the major compaction has run. These issues should not be a problem if you use always-increasing versions for new puts to a row. But they can occur even if you do not care about time: just do delete and put immediately after each other, and there is some chance they happen within the same millisecond. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8779) add mutateRow method support to thrift2
[ https://issues.apache.org/jira/browse/HBASE-8779?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690127#comment-13690127 ] Ted Yu commented on HBASE-8779: --- Can you put diff for the files in a single patch ? You can generate patch at the root of your workspace. Indentation should be two spaces per tab. Thanks add mutateRow method support to thrift2 --- Key: HBASE-8779 URL: https://issues.apache.org/jira/browse/HBASE-8779 Project: HBase Issue Type: New Feature Components: Thrift Reporter: duanhongyi Fix For: 0.95.2 Attachments: thrift2-HBASE-8779.patch, thrift-ThriftHBaseServiceHandler.java-HBASE-8779.patch, thrift-ThriftUtilities.java-HBASE-8779.patch examples py: TPut put = TPut() m1 = TMutation(put=put) TDelete single_delete = TDelete() m2 = TMutation(singleDelete=single_delete) row_mu = TRowMutations(row,[m1,m2]) thbase_service.mutateRow(table,row_mu) # atomically on a single row -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8773) Can be setup the COMPRESSION base on HTable in meta or user set in Configuration
[ https://issues.apache.org/jira/browse/HBASE-8773?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690129#comment-13690129 ] jay wong commented on HBASE-8773: - [~anoop.hbase] yes. it because of that when i want create some HFiles with M/R. and the table just use LZO compression. but the jobtracker server just don't have LZO lib. then the M/R couldn't run. so I want write the HFile with no compression. and when the hfile compact. It also be used LZO compression. Can be setup the COMPRESSION base on HTable in meta or user set in Configuration Key: HBASE-8773 URL: https://issues.apache.org/jira/browse/HBASE-8773 Project: HBase Issue Type: New Feature Components: HFile Affects Versions: 0.94.8 Reporter: jay wong Fix For: 0.94.9 Attachments: HBASE-8773.patch when I want create HFile with the ImportTsv. I found that if i set the compression in the Configuration or not, It's always invalid。 It because of the method 'configureIncrementalLoad' in HFileOutputFormat will set the compression with the HTable in meta. So if add a configuration to switch use set compression with HTable or Not -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8780) a column Family can have VERSIONS less than zero
[ https://issues.apache.org/jira/browse/HBASE-8780?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690134#comment-13690134 ] Anoop Sam John commented on HBASE-8780: --- Looks good.. Can u attach a patch for Trunk? Then we can run HadoopQA a column Family can have VERSIONS less than zero - Key: HBASE-8780 URL: https://issues.apache.org/jira/browse/HBASE-8780 Project: HBase Issue Type: Bug Components: Client Affects Versions: 0.94.8 Reporter: Demai Ni Priority: Trivial Attachments: HBASE-8780-0.94.8-v0.patch, HBASE-8780-test.txt User can create/alter a columnfam and set its VERSION(aka maxVERSIONS) to a negative or zero value. Although there is a checking in HColumnDesciptor#construtor, hbase shell command will invoke the setter(setMaxVersions and setMinVersions) directly, hence by pass the checking. For example: {code:title=set VERSIONS = -1} hbase(main):016:0 create 't5_dn',{NAME='cf1',VERSIONS=-1} 0 row(s) in 1.0420 seconds hbase(main):017:0 put 't5_dn','row1','cf1:q1','row1cf1_v1' 0 row(s) in 0.0700 seconds hbase(main):018:0 scan 't5_dn' ROW COLUMN+CELL 0 row(s) in 0.0090 seconds hbase(main):019:0 describe 't5_dn' DESCRIPTION ENABLED 't5_dn', {NAME = 'cf1', REPLICATION_SCOPE = '0', true KEEP_DELETED_CELLS = 'false', COMPRESSION = 'NONE ', ENCODE_ON_DISK = 'true', BLOCKCACHE = 'true', MIN_VERSIONS = '0', DATA_BLOCK_ENCODING = 'NONE', IN_MEMORY = 'false', BLOOMFILTER = 'NONE', TTL = '2147483647', VERSIONS = '-1', BLOCKSIZE = '655 36'} 1 row(s) in 0.0410 seconds {code} above example shows VERSIONS = '-1', and put/scan doesn't keep the data -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8780) a column Family can have VERSIONS less than zero
[ https://issues.apache.org/jira/browse/HBASE-8780?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Anoop Sam John updated HBASE-8780: -- Assignee: Demai Ni a column Family can have VERSIONS less than zero - Key: HBASE-8780 URL: https://issues.apache.org/jira/browse/HBASE-8780 Project: HBase Issue Type: Bug Components: Client Affects Versions: 0.94.8 Reporter: Demai Ni Assignee: Demai Ni Priority: Trivial Attachments: HBASE-8780-0.94.8-v0.patch, HBASE-8780-test.txt User can create/alter a columnfam and set its VERSION(aka maxVERSIONS) to a negative or zero value. Although there is a checking in HColumnDesciptor#construtor, hbase shell command will invoke the setter(setMaxVersions and setMinVersions) directly, hence by pass the checking. For example: {code:title=set VERSIONS = -1} hbase(main):016:0 create 't5_dn',{NAME='cf1',VERSIONS=-1} 0 row(s) in 1.0420 seconds hbase(main):017:0 put 't5_dn','row1','cf1:q1','row1cf1_v1' 0 row(s) in 0.0700 seconds hbase(main):018:0 scan 't5_dn' ROW COLUMN+CELL 0 row(s) in 0.0090 seconds hbase(main):019:0 describe 't5_dn' DESCRIPTION ENABLED 't5_dn', {NAME = 'cf1', REPLICATION_SCOPE = '0', true KEEP_DELETED_CELLS = 'false', COMPRESSION = 'NONE ', ENCODE_ON_DISK = 'true', BLOCKCACHE = 'true', MIN_VERSIONS = '0', DATA_BLOCK_ENCODING = 'NONE', IN_MEMORY = 'false', BLOOMFILTER = 'NONE', TTL = '2147483647', VERSIONS = '-1', BLOCKSIZE = '655 36'} 1 row(s) in 0.0410 seconds {code} above example shows VERSIONS = '-1', and put/scan doesn't keep the data -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8782) Thrift2 can not parse table names when using framed transport
[ https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Hamed Madani updated HBASE-8782: Description: ThriftHBaseServiceHandler.java use .array() on table names which resulted in incorrect values for table name with framed transport. Replacing table.array() with getBytes(table) fixed this problem. I've attached the patch (was: ThriftHBaseServiceHandler.java use .array() on table names which resulted to incorrect values for table name with framed transport. Replacing table.array() with getBytes(table) fixed this problem. I've attached the patch) Thrift2 can not parse table names when using framed transport - Key: HBASE-8782 URL: https://issues.apache.org/jira/browse/HBASE-8782 Project: HBase Issue Type: Bug Components: Thrift Affects Versions: 0.95.1 Reporter: Hamed Madani Attachments: HBASE_8782.patch ThriftHBaseServiceHandler.java use .array() on table names which resulted in incorrect values for table name with framed transport. Replacing table.array() with getBytes(table) fixed this problem. I've attached the patch -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8782) Thrift2 can not parse table names when using framed transport
[ https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690150#comment-13690150 ] Ted Yu commented on HBASE-8782: --- Hadoop QA didn't seem to work. Can you run test suite and let us know the result ? Thanks Thrift2 can not parse table names when using framed transport - Key: HBASE-8782 URL: https://issues.apache.org/jira/browse/HBASE-8782 Project: HBase Issue Type: Bug Components: Thrift Affects Versions: 0.95.1 Reporter: Hamed Madani Attachments: HBASE_8782.patch ThriftHBaseServiceHandler.java use .array() on table names which resulted in incorrect values for table name with framed transport. Replacing table.array() with getBytes(table) fixed this problem. I've attached the patch -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8782) Thrift2 can not parse values when using framed transport
[ https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Hamed Madani updated HBASE-8782: Attachment: (was: HBASE_8782.patch) Thrift2 can not parse values when using framed transport Key: HBASE-8782 URL: https://issues.apache.org/jira/browse/HBASE-8782 Project: HBase Issue Type: Bug Components: Thrift Affects Versions: 0.95.1 Reporter: Hamed Madani ThriftHBaseServiceHandler.java use .array() on table names which resulted in incorrect values for table name with framed transport. Replacing table.array() with getBytes(table) fixed this problem. I've attached the patch -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8782) Thrift2 can not parse values when using framed transport
[ https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Hamed Madani updated HBASE-8782: Summary: Thrift2 can not parse values when using framed transport (was: Thrift2 can not parse table names when using framed transport) Thrift2 can not parse values when using framed transport Key: HBASE-8782 URL: https://issues.apache.org/jira/browse/HBASE-8782 Project: HBase Issue Type: Bug Components: Thrift Affects Versions: 0.95.1 Reporter: Hamed Madani ThriftHBaseServiceHandler.java use .array() on table names which resulted in incorrect values for table name with framed transport. Replacing table.array() with getBytes(table) fixed this problem. I've attached the patch -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8782) Thrift2 can not parse values when using framed transport
[ https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Hamed Madani updated HBASE-8782: Description: ThriftHBaseServiceHandler.java use .array() on table names , and values (family , qualifier in checkandDelete , etc) which resulted in incorrect values with framed transport. Replacing .array() with getBytes() fixed this problem. I've attached the patch (was: ThriftHBaseServiceHandler.java use .array() on table names which resulted in incorrect values for table name with framed transport. Replacing table.array() with getBytes(table) fixed this problem. I've attached the patch) Thrift2 can not parse values when using framed transport Key: HBASE-8782 URL: https://issues.apache.org/jira/browse/HBASE-8782 Project: HBase Issue Type: Bug Components: Thrift Affects Versions: 0.95.1 Reporter: Hamed Madani ThriftHBaseServiceHandler.java use .array() on table names , and values (family , qualifier in checkandDelete , etc) which resulted in incorrect values with framed transport. Replacing .array() with getBytes() fixed this problem. I've attached the patch -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8782) Thrift2 can not parse values when using framed transport
[ https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Hamed Madani updated HBASE-8782: Attachment: HBASE_8782.patch Thrift2 can not parse values when using framed transport Key: HBASE-8782 URL: https://issues.apache.org/jira/browse/HBASE-8782 Project: HBase Issue Type: Bug Components: Thrift Affects Versions: 0.95.1 Reporter: Hamed Madani Attachments: HBASE_8782.patch ThriftHBaseServiceHandler.java use .array() on table names , and values (family , qualifier in checkandDelete , etc) which resulted in incorrect values with framed transport. Replacing .array() with getBytes() fixed this problem. I've attached the patch -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8782) Thrift2 can not parse values when using framed transport
[ https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Hamed Madani updated HBASE-8782: Description: ThriftHBaseServiceHandler.java use .array() on table names , and values (family , qualifier in checkandDelete , etc) which resulted in incorrect values with framed transport. Replacing .array() with getBytes() fixed this problem. I've attached the patch EDIT: updated the patch to cover checkAndPut(), checkAndDelete() was:ThriftHBaseServiceHandler.java use .array() on table names , and values (family , qualifier in checkandDelete , etc) which resulted in incorrect values with framed transport. Replacing .array() with getBytes() fixed this problem. I've attached the patch Thrift2 can not parse values when using framed transport Key: HBASE-8782 URL: https://issues.apache.org/jira/browse/HBASE-8782 Project: HBase Issue Type: Bug Components: Thrift Affects Versions: 0.95.1 Reporter: Hamed Madani Attachments: HBASE_8782.patch ThriftHBaseServiceHandler.java use .array() on table names , and values (family , qualifier in checkandDelete , etc) which resulted in incorrect values with framed transport. Replacing .array() with getBytes() fixed this problem. I've attached the patch EDIT: updated the patch to cover checkAndPut(), checkAndDelete() -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8779) add mutateRow method support to thrift2
[ https://issues.apache.org/jira/browse/HBASE-8779?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] duanhongyi updated HBASE-8779: -- Attachment: (was: thrift-ThriftHBaseServiceHandler.java-HBASE-8779.patch) add mutateRow method support to thrift2 --- Key: HBASE-8779 URL: https://issues.apache.org/jira/browse/HBASE-8779 Project: HBase Issue Type: New Feature Components: Thrift Reporter: duanhongyi Fix For: 0.95.2 examples py: TPut put = TPut() m1 = TMutation(put=put) TDelete single_delete = TDelete() m2 = TMutation(singleDelete=single_delete) row_mu = TRowMutations(row,[m1,m2]) thbase_service.mutateRow(table,row_mu) # atomically on a single row -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8779) add mutateRow method support to thrift2
[ https://issues.apache.org/jira/browse/HBASE-8779?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] duanhongyi updated HBASE-8779: -- Attachment: (was: thrift2-HBASE-8779.patch) add mutateRow method support to thrift2 --- Key: HBASE-8779 URL: https://issues.apache.org/jira/browse/HBASE-8779 Project: HBase Issue Type: New Feature Components: Thrift Reporter: duanhongyi Fix For: 0.95.2 examples py: TPut put = TPut() m1 = TMutation(put=put) TDelete single_delete = TDelete() m2 = TMutation(singleDelete=single_delete) row_mu = TRowMutations(row,[m1,m2]) thbase_service.mutateRow(table,row_mu) # atomically on a single row -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8779) add mutateRow method support to thrift2
[ https://issues.apache.org/jira/browse/HBASE-8779?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] duanhongyi updated HBASE-8779: -- Attachment: (was: thrift-ThriftUtilities.java-HBASE-8779.patch) add mutateRow method support to thrift2 --- Key: HBASE-8779 URL: https://issues.apache.org/jira/browse/HBASE-8779 Project: HBase Issue Type: New Feature Components: Thrift Reporter: duanhongyi Fix For: 0.95.2 examples py: TPut put = TPut() m1 = TMutation(put=put) TDelete single_delete = TDelete() m2 = TMutation(singleDelete=single_delete) row_mu = TRowMutations(row,[m1,m2]) thbase_service.mutateRow(table,row_mu) # atomically on a single row -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8779) add mutateRow method support to thrift2
[ https://issues.apache.org/jira/browse/HBASE-8779?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] duanhongyi updated HBASE-8779: -- Fix Version/s: (was: 0.95.2) 0.94.9 add mutateRow method support to thrift2 --- Key: HBASE-8779 URL: https://issues.apache.org/jira/browse/HBASE-8779 Project: HBase Issue Type: New Feature Components: Thrift Reporter: duanhongyi Fix For: 0.94.9 Attachments: 0.94.patch examples py: TPut put = TPut() m1 = TMutation(put=put) TDelete single_delete = TDelete() m2 = TMutation(singleDelete=single_delete) row_mu = TRowMutations(row,[m1,m2]) thbase_service.mutateRow(table,row_mu) # atomically on a single row -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8779) add mutateRow method support to thrift2
[ https://issues.apache.org/jira/browse/HBASE-8779?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] duanhongyi updated HBASE-8779: -- Attachment: 0.94.patch patch to:http://svn.apache.org/repos/asf/hbase/branches/0.94 add mutateRow method support to thrift2 --- Key: HBASE-8779 URL: https://issues.apache.org/jira/browse/HBASE-8779 Project: HBase Issue Type: New Feature Components: Thrift Reporter: duanhongyi Fix For: 0.95.2 Attachments: 0.94.patch examples py: TPut put = TPut() m1 = TMutation(put=put) TDelete single_delete = TDelete() m2 = TMutation(singleDelete=single_delete) row_mu = TRowMutations(row,[m1,m2]) thbase_service.mutateRow(table,row_mu) # atomically on a single row -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8782) Thrift2 can not parse values when using framed transport
[ https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690170#comment-13690170 ] Hamed Madani commented on HBASE-8782: - Thank you Ted. I'm not sure what you like me to do. Below is what I get *Without this patch* running thrift2 in nonblocking mode (trying to scan my_table (framed transport)) {code} org.apache.hadoop.hbase.exceptions.TableNotFoundException: Cannot find row in .META. for table: ? openScanner my_table @ @ row=\xFF\xBF\xBD\x01\xF0\xF1\x00\x00\xF0\x0BopenScanner\x00\x00\(..many more) at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:137) at org.apache.hadoop.hbase.client.MetaScanner.metaScan(MetaScanner.java:102) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.prefetchRegionCache(HConnectionManager.java:857) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegionInMeta(HConnectionManager.java:917) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:809) at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.locateRegion(HConnectionManager.java:778) at org.apache.hadoop.hbase.client.HTable.finishSetup(HTable.java:245) at org.apache.hadoop.hbase.client.HTable.init(HTable.java:186) at org.apache.hadoop.hbase.client.HTableFactory.createHTableInterface(HTableFactory.java:39) at org.apache.hadoop.hbase.client.HTablePool.createHTable(HTablePool.java:270) at org.apache.hadoop.hbase.client.HTablePool.findOrCreateTable(HTablePool.java:200) at org.apache.hadoop.hbase.client.HTablePool.getTable(HTablePool.java:179) at org.apache.hadoop.hbase.client.HTablePool.getTable(HTablePool.java:218) at org.apache.hadoop.hbase.thrift2.ThriftHBaseServiceHandler.getTable(ThriftHBaseServiceHandler.java:127) at org.apache.hadoop.hbase.thrift2.ThriftHBaseServiceHandler.openScanner(ThriftHBaseServiceHandler.java:306) {code} Thrift2 can not parse values when using framed transport Key: HBASE-8782 URL: https://issues.apache.org/jira/browse/HBASE-8782 Project: HBase Issue Type: Bug Components: Thrift Affects Versions: 0.95.1 Reporter: Hamed Madani Attachments: HBASE_8782.patch ThriftHBaseServiceHandler.java use .array() on table names , and values (family , qualifier in checkandDelete , etc) which resulted in incorrect values with framed transport. Replacing .array() with getBytes() fixed this problem. I've attached the patch EDIT: updated the patch to cover checkAndPut(), checkAndDelete() -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8667) Master and Regionserver not able to communicate if both bound to different network interfaces on the same machine.
[ https://issues.apache.org/jira/browse/HBASE-8667?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690172#comment-13690172 ] Anoop Sam John commented on HBASE-8667: --- Looks good Master and Regionserver not able to communicate if both bound to different network interfaces on the same machine. -- Key: HBASE-8667 URL: https://issues.apache.org/jira/browse/HBASE-8667 Project: HBase Issue Type: Bug Components: IPC/RPC Reporter: rajeshbabu Assignee: rajeshbabu Fix For: 0.98.0, 0.95.2, 0.94.9 Attachments: HBASE-8667_trunk.patch, HBASE-8667_Trunk.patch, HBASE-8667_Trunk-V2.patch, HBASE-8667_trunk_v4.patch, HBASE-8667_trunk_v5.patch While testing HBASE-8640 fix found that master and regionserver running on different interfaces are not communicating properly. I have two interfaces 1) lo 2) eth0 in my machine and default hostname interface is lo. I have configured master ipc address to ip of eth0 interface. Started master and regionserver on the same machine. 1) master rpc server bound to eth0 and RS rpc server bound to lo 2) Since rpc client is not binding to any ip address, when RS is reporting RS startup its getting registered with eth0 ip address(but actually it should register localhost) Here are RS logs: {code} 2013-05-31 06:05:28,608 WARN [regionserver60020] org.apache.hadoop.hbase.regionserver.HRegionServer: reportForDuty failed; sleeping and then retrying. 2013-05-31 06:05:31,609 INFO [regionserver60020] org.apache.hadoop.hbase.regionserver.HRegionServer: Attempting connect to Master server at 192.168.0.100,6,1369960497008 2013-05-31 06:05:31,609 INFO [regionserver60020] org.apache.hadoop.hbase.regionserver.HRegionServer: Telling master at 192.168.0.100,6,1369960497008 that we are up with port=60020, startcode=1369960502544 2013-05-31 06:05:31,618 DEBUG [regionserver60020] org.apache.hadoop.hbase.regionserver.HRegionServer: Config from master: hbase.rootdir=hdfs://localhost:2851/hbase 2013-05-31 06:05:31,618 DEBUG [regionserver60020] org.apache.hadoop.hbase.regionserver.HRegionServer: Config from master: fs.default.name=hdfs://localhost:2851 2013-05-31 06:05:31,618 INFO [regionserver60020] org.apache.hadoop.hbase.regionserver.HRegionServer: Master passed us a different hostname to use; was=localhost, but now=192.168.0.100 {code} Here are master logs: {code} 2013-05-31 06:05:31,615 INFO [IPC Server handler 9 on 6] org.apache.hadoop.hbase.master.ServerManager: Registering server=192.168.0.100,60020,1369960502544 {code} Since master has wrong rpc server address of RS, META is not getting assigned. {code} 2013-05-31 06:05:34,362 DEBUG [master-192.168.0.100,6,1369960497008] org.apache.hadoop.hbase.master.AssignmentManager: No previous transition plan was found (or we are ignoring an existing plan) for .META.,,1.1028785192 so generated a random one; hri=.META.,,1.1028785192, src=, dest=192.168.0.100,60020,1369960502544; 1 (online=1, available=1) available servers, forceNewPlan=false - org.apache.hadoop.hbase.master.AssignmentManager: Failed assignment of .META.,,1.1028785192 to 192.168.0.100,60020,1369960502544, trying to assign elsewhere instead; try=1 of 10 java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:592) at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206) at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:511) at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:481) at org.apache.hadoop.hbase.ipc.RpcClient$Connection.setupConnection(RpcClient.java:549) at org.apache.hadoop.hbase.ipc.RpcClient$Connection.setupIOstreams(RpcClient.java:813) at org.apache.hadoop.hbase.ipc.RpcClient.getConnection(RpcClient.java:1422) at org.apache.hadoop.hbase.ipc.RpcClient.call(RpcClient.java:1315) at org.apache.hadoop.hbase.ipc.RpcClient.callBlockingMethod(RpcClient.java:1532) at org.apache.hadoop.hbase.ipc.RpcClient$BlockingRpcChannelImplementation.callBlockingMethod(RpcClient.java:1587) at org.apache.hadoop.hbase.protobuf.generated.AdminProtos$AdminService$BlockingStub.openRegion(AdminProtos.java:15039) at org.apache.hadoop.hbase.master.ServerManager.sendRegionOpen(ServerManager.java:627) at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:1826) at org.apache.hadoop.hbase.master.AssignmentManager.assign(AssignmentManager.java:1453) at
[jira] [Commented] (HBASE-8669) change exploring compaction policy to prefer smaller compactions on blocked stores
[ https://issues.apache.org/jira/browse/HBASE-8669?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690218#comment-13690218 ] Hudson commented on HBASE-8669: --- Integrated in hbase-0.95-on-hadoop2 #140 (See [https://builds.apache.org/job/hbase-0.95-on-hadoop2/140/]) HBASE-8669 change exploring compaction policy to prefer smaller compactions on blocked stores (Revision 1495262) Result = FAILURE sershe : Files : * /hbase/branches/0.95/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/ExploringCompactionPolicy.java * /hbase/branches/0.95/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultCompactSelection.java change exploring compaction policy to prefer smaller compactions on blocked stores -- Key: HBASE-8669 URL: https://issues.apache.org/jira/browse/HBASE-8669 Project: HBase Issue Type: Improvement Reporter: Sergey Shelukhin Assignee: Sergey Shelukhin Priority: Minor Fix For: 0.95.2 Attachments: HBASE-8669-v0.patch Side-note from HBASE-8665 discussion. When we compact a blocked store, we might want to use a different heuristic to choose between the options. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8755) A new write thread model for HLog to improve the overall HBase write throughput
[ https://issues.apache.org/jira/browse/HBASE-8755?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690238#comment-13690238 ] Lars Hofhansl commented on HBASE-8755: -- I ran some local tests, and even with a single threaded client I did not see a performance degradation with this patch (0.94). I inserted 10m small rows. The cluster consists of a single RS/DN, HDFS is backed by a SSD. So the HDFS cost of writes should be low, and that in turns should bring out any new inefficiencies introduced by this patch. So from my angle this patch is good. A new write thread model for HLog to improve the overall HBase write throughput --- Key: HBASE-8755 URL: https://issues.apache.org/jira/browse/HBASE-8755 Project: HBase Issue Type: Improvement Components: wal Reporter: Feng Honghua Attachments: HBASE-8755-0.94-V0.patch, HBASE-8755-0.94-V1.patch, HBASE-8755-trunk-V0.patch In current write model, each write handler thread (executing put()) will individually go through a full 'append (hlog local buffer) = HLog writer append (write to hdfs) = HLog writer sync (sync hdfs)' cycle for each write, which incurs heavy race condition on updateLock and flushLock. The only optimization where checking if current syncTillHere txid in expectation for other thread help write/sync its own txid to hdfs and omitting the write/sync actually help much less than expectation. Three of my colleagues(Ye Hangjun / Wu Zesheng / Zhang Peng) at Xiaomi proposed a new write thread model for writing hdfs sequence file and the prototype implementation shows a 4X improvement for throughput (from 17000 to 7+). I apply this new write thread model in HLog and the performance test in our test cluster shows about 3X throughput improvement (from 12150 to 31520 for 1 RS, from 22000 to 7 for 5 RS), the 1 RS write throughput (1K row-size) even beats the one of BigTable (Precolator published in 2011 says Bigtable's write throughput then is 31002). I can provide the detailed performance test results if anyone is interested. The change for new write thread model is as below: 1 All put handler threads append the edits to HLog's local pending buffer; (it notifies AsyncWriter thread that there is new edits in local buffer) 2 All put handler threads wait in HLog.syncer() function for underlying threads to finish the sync that contains its txid; 3 An single AsyncWriter thread is responsible for retrieve all the buffered edits in HLog's local pending buffer and write to the hdfs (hlog.writer.append); (it notifies AsyncFlusher thread that there is new writes to hdfs that needs a sync) 4 An single AsyncFlusher thread is responsible for issuing a sync to hdfs to persist the writes by AsyncWriter; (it notifies the AsyncNotifier thread that sync watermark increases) 5 An single AsyncNotifier thread is responsible for notifying all pending put handler threads which are waiting in the HLog.syncer() function 6 No LogSyncer thread any more (since there is always AsyncWriter/AsyncFlusher threads do the same job it does) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8669) change exploring compaction policy to prefer smaller compactions on blocked stores
[ https://issues.apache.org/jira/browse/HBASE-8669?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690240#comment-13690240 ] Hudson commented on HBASE-8669: --- Integrated in HBase-TRUNK-on-Hadoop-2.0.0 #575 (See [https://builds.apache.org/job/HBase-TRUNK-on-Hadoop-2.0.0/575/]) HBASE-8669 change exploring compaction policy to prefer smaller compactions on blocked stores (Revision 1495261) Result = FAILURE sershe : Files : * /hbase/trunk/hbase-server/src/main/java/org/apache/hadoop/hbase/regionserver/compactions/ExploringCompactionPolicy.java * /hbase/trunk/hbase-server/src/test/java/org/apache/hadoop/hbase/regionserver/TestDefaultCompactSelection.java change exploring compaction policy to prefer smaller compactions on blocked stores -- Key: HBASE-8669 URL: https://issues.apache.org/jira/browse/HBASE-8669 Project: HBase Issue Type: Improvement Reporter: Sergey Shelukhin Assignee: Sergey Shelukhin Priority: Minor Fix For: 0.95.2 Attachments: HBASE-8669-v0.patch Side-note from HBASE-8665 discussion. When we compact a blocked store, we might want to use a different heuristic to choose between the options. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-6295) Possible performance improvement in client batch operations: presplit and send in background
[ https://issues.apache.org/jira/browse/HBASE-6295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690253#comment-13690253 ] Nicolas Liochon commented on HBASE-6295: This was a little bit more painful that I was expecting. I've done 3 modifications compared to trunk. 1) It's now initialized in AsyncProcess. This avoids a cast from HConnection to HConnectionImpl. 2) I'm reporting an error once per location and try instead of all rows within a try. 3) I've changed the internal structure to a concurrentMap. The test are in progress locally. I will push the patch after the first successful run. [~sershe], could you please git it a quick review? Ideally I would like to commit it today, this will save me some merges and will give it more trial before the next .95 release candidate... Possible performance improvement in client batch operations: presplit and send in background Key: HBASE-6295 URL: https://issues.apache.org/jira/browse/HBASE-6295 Project: HBase Issue Type: Improvement Components: Client, Performance Affects Versions: 0.95.2 Reporter: Nicolas Liochon Assignee: Nicolas Liochon Labels: noob Fix For: 0.98.0 Attachments: 6295.v11.patch, 6295.v12.patch, 6295.v14.patch, 6295.v1.patch, 6295.v2.patch, 6295.v3.patch, 6295.v4.patch, 6295.v5.patch, 6295.v6.patch, 6295.v8.patch, 6295.v9.patch today batch algo is: {noformat} for Operation o: ListOp{ add o to todolist if todolist maxsize or o last in list split todolist per location send split lists to region servers clear todolist wait } {noformat} We could: - create immediately the final object instead of an intermediate array - split per location immediately - instead of sending when the list as a whole is full, send it when there is enough data for a single location It would be: {noformat} for Operation o: ListOp{ get location add o to todo location.todolist if (location.todolist maxLocationSize) send location.todolist to region server clear location.todolist // don't wait, continue the loop } send remaining wait {noformat} It's not trivial to write if you add error management: retried list must be shared with the operations added in the todolist. But it's doable. It's interesting mainly for 'big' writes -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Created] (HBASE-8783) RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name
Matteo Bertozzi created HBASE-8783: -- Summary: RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name Key: HBASE-8783 URL: https://issues.apache.org/jira/browse/HBASE-8783 Project: HBase Issue Type: Bug Components: snapshots Affects Versions: 0.95.1, 0.94.8 Reporter: Matteo Bertozzi Assignee: Matteo Bertozzi Priority: Minor Fix For: 0.95.2, 0.94.9 Attachments: HBASE-8783-0.94-v0.patch The ZKProcedureMemberRpcs of the RegionServerSnapshotManager may be initialized with the wrong memberName. {code} 2013-06-21 05:03:41,732 DEBUG org.apache.hadoop.hbase.regionserver.HRegionServer: Initialize Snapshot Manager ... 2013-06-21 05:03:41,875 INFO org.apache.hadoop.hbase.regionserver.HRegionServer: Master passed us hostname to use. Was=0.0.0.0, Now=srv-5.test.cloudera.com {code} The Region Server Name is used as memberName, but since the snapshot manger is initialized before the RS receives the server name used by the master, the zkprocedure will use the wrong name (0.0.0.0). This will case the snapshot to fail with a TimeoutException since the master will not receive the expected RS {code} Master: ZKProcedureCoordinatorRpcs: Watching for acquire node:/hbase/online-snapshot/acquired/foo23/srv-5.test.cloudera.com,60020,1371813451915 RS: ZKProcedureMemberRpcs: Member: '0.0.0.0,60020,1371814996779' joining acquired barrier for procedure (foo23) in zk ... org.apache.hadoop.hbase.errorhandling.TimeoutException: Timeout elapsed! Source:Timeout caused Foreign Exception Start:1371798732141, End:1371798792141, diff:6, max:6 ms {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8783) RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name
[ https://issues.apache.org/jira/browse/HBASE-8783?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Matteo Bertozzi updated HBASE-8783: --- Attachment: HBASE-8783-0.94-v0.patch RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name - Key: HBASE-8783 URL: https://issues.apache.org/jira/browse/HBASE-8783 Project: HBase Issue Type: Bug Components: snapshots Affects Versions: 0.94.8, 0.95.1 Reporter: Matteo Bertozzi Assignee: Matteo Bertozzi Priority: Minor Fix For: 0.95.2, 0.94.9 Attachments: HBASE-8783-0.94-v0.patch The ZKProcedureMemberRpcs of the RegionServerSnapshotManager may be initialized with the wrong memberName. {code} 2013-06-21 05:03:41,732 DEBUG org.apache.hadoop.hbase.regionserver.HRegionServer: Initialize Snapshot Manager ... 2013-06-21 05:03:41,875 INFO org.apache.hadoop.hbase.regionserver.HRegionServer: Master passed us hostname to use. Was=0.0.0.0, Now=srv-5.test.cloudera.com {code} The Region Server Name is used as memberName, but since the snapshot manger is initialized before the RS receives the server name used by the master, the zkprocedure will use the wrong name (0.0.0.0). This will case the snapshot to fail with a TimeoutException since the master will not receive the expected RS {code} Master: ZKProcedureCoordinatorRpcs: Watching for acquire node:/hbase/online-snapshot/acquired/foo23/srv-5.test.cloudera.com,60020,1371813451915 RS: ZKProcedureMemberRpcs: Member: '0.0.0.0,60020,1371814996779' joining acquired barrier for procedure (foo23) in zk ... org.apache.hadoop.hbase.errorhandling.TimeoutException: Timeout elapsed! Source:Timeout caused Foreign Exception Start:1371798732141, End:1371798792141, diff:6, max:6 ms {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8755) A new write thread model for HLog to improve the overall HBase write throughput
[ https://issues.apache.org/jira/browse/HBASE-8755?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690259#comment-13690259 ] Jean-Marc Spaggiari commented on HBASE-8755: Here are my results: ||Test||Trunk||8755|| |org.apache.hadoop.hbase.PerformanceEvaluation$FilteredScanTest|437101.8|431561.7| |org.apache.hadoop.hbase.PerformanceEvaluation$RandomReadTest|774306.8|768559| |org.apache.hadoop.hbase.PerformanceEvaluation$RandomScanWithRange100Test|21999.7|22277.6| |org.apache.hadoop.hbase.PerformanceEvaluation$RandomSeekScanTest|134429.3|134370.9| |org.apache.hadoop.hbase.PerformanceEvaluation$RandomWriteTest|112814.7|125324.2| |org.apache.hadoop.hbase.PerformanceEvaluation$SequentialWriteTest|78574.42|80064.5| It's time. so the smaller, the better. So overall, it's pretty the same results, except for the random write which are 11% slower. |org.apache.hadoop.hbase.PerformanceEvaluation$FilteredScanTest|1.27%| |org.apache.hadoop.hbase.PerformanceEvaluation$RandomReadTest|0.74%| |org.apache.hadoop.hbase.PerformanceEvaluation$RandomScanWithRange100Test|-1.26%| |org.apache.hadoop.hbase.PerformanceEvaluation$RandomSeekScanTest|0.04%| |org.apache.hadoop.hbase.PerformanceEvaluation$RandomWriteTest|-11.09%| |org.apache.hadoop.hbase.PerformanceEvaluation$SequentialWriteTest|-1.90%| I will redo the RandomWrite tests and try them with 1, 10 and 100 thread to see if only mono-threaded access is impacted... A new write thread model for HLog to improve the overall HBase write throughput --- Key: HBASE-8755 URL: https://issues.apache.org/jira/browse/HBASE-8755 Project: HBase Issue Type: Improvement Components: wal Reporter: Feng Honghua Attachments: HBASE-8755-0.94-V0.patch, HBASE-8755-0.94-V1.patch, HBASE-8755-trunk-V0.patch In current write model, each write handler thread (executing put()) will individually go through a full 'append (hlog local buffer) = HLog writer append (write to hdfs) = HLog writer sync (sync hdfs)' cycle for each write, which incurs heavy race condition on updateLock and flushLock. The only optimization where checking if current syncTillHere txid in expectation for other thread help write/sync its own txid to hdfs and omitting the write/sync actually help much less than expectation. Three of my colleagues(Ye Hangjun / Wu Zesheng / Zhang Peng) at Xiaomi proposed a new write thread model for writing hdfs sequence file and the prototype implementation shows a 4X improvement for throughput (from 17000 to 7+). I apply this new write thread model in HLog and the performance test in our test cluster shows about 3X throughput improvement (from 12150 to 31520 for 1 RS, from 22000 to 7 for 5 RS), the 1 RS write throughput (1K row-size) even beats the one of BigTable (Precolator published in 2011 says Bigtable's write throughput then is 31002). I can provide the detailed performance test results if anyone is interested. The change for new write thread model is as below: 1 All put handler threads append the edits to HLog's local pending buffer; (it notifies AsyncWriter thread that there is new edits in local buffer) 2 All put handler threads wait in HLog.syncer() function for underlying threads to finish the sync that contains its txid; 3 An single AsyncWriter thread is responsible for retrieve all the buffered edits in HLog's local pending buffer and write to the hdfs (hlog.writer.append); (it notifies AsyncFlusher thread that there is new writes to hdfs that needs a sync) 4 An single AsyncFlusher thread is responsible for issuing a sync to hdfs to persist the writes by AsyncWriter; (it notifies the AsyncNotifier thread that sync watermark increases) 5 An single AsyncNotifier thread is responsible for notifying all pending put handler threads which are waiting in the HLog.syncer() function 6 No LogSyncer thread any more (since there is always AsyncWriter/AsyncFlusher threads do the same job it does) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8783) RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name
[ https://issues.apache.org/jira/browse/HBASE-8783?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Matteo Bertozzi updated HBASE-8783: --- Status: Patch Available (was: Open) RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name - Key: HBASE-8783 URL: https://issues.apache.org/jira/browse/HBASE-8783 Project: HBase Issue Type: Bug Components: snapshots Affects Versions: 0.95.1, 0.94.8 Reporter: Matteo Bertozzi Assignee: Matteo Bertozzi Priority: Minor Fix For: 0.95.2, 0.94.9 Attachments: HBASE-8783-0.94-v0.patch, HBASE-8783-v0.patch The ZKProcedureMemberRpcs of the RegionServerSnapshotManager may be initialized with the wrong memberName. {code} 2013-06-21 05:03:41,732 DEBUG org.apache.hadoop.hbase.regionserver.HRegionServer: Initialize Snapshot Manager ... 2013-06-21 05:03:41,875 INFO org.apache.hadoop.hbase.regionserver.HRegionServer: Master passed us hostname to use. Was=0.0.0.0, Now=srv-5.test.cloudera.com {code} The Region Server Name is used as memberName, but since the snapshot manger is initialized before the RS receives the server name used by the master, the zkprocedure will use the wrong name (0.0.0.0). This will case the snapshot to fail with a TimeoutException since the master will not receive the expected RS {code} Master: ZKProcedureCoordinatorRpcs: Watching for acquire node:/hbase/online-snapshot/acquired/foo23/srv-5.test.cloudera.com,60020,1371813451915 RS: ZKProcedureMemberRpcs: Member: '0.0.0.0,60020,1371814996779' joining acquired barrier for procedure (foo23) in zk ... org.apache.hadoop.hbase.errorhandling.TimeoutException: Timeout elapsed! Source:Timeout caused Foreign Exception Start:1371798732141, End:1371798792141, diff:6, max:6 ms {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8783) RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name
[ https://issues.apache.org/jira/browse/HBASE-8783?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Matteo Bertozzi updated HBASE-8783: --- Attachment: HBASE-8783-v0.patch RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name - Key: HBASE-8783 URL: https://issues.apache.org/jira/browse/HBASE-8783 Project: HBase Issue Type: Bug Components: snapshots Affects Versions: 0.94.8, 0.95.1 Reporter: Matteo Bertozzi Assignee: Matteo Bertozzi Priority: Minor Fix For: 0.95.2, 0.94.9 Attachments: HBASE-8783-0.94-v0.patch, HBASE-8783-v0.patch The ZKProcedureMemberRpcs of the RegionServerSnapshotManager may be initialized with the wrong memberName. {code} 2013-06-21 05:03:41,732 DEBUG org.apache.hadoop.hbase.regionserver.HRegionServer: Initialize Snapshot Manager ... 2013-06-21 05:03:41,875 INFO org.apache.hadoop.hbase.regionserver.HRegionServer: Master passed us hostname to use. Was=0.0.0.0, Now=srv-5.test.cloudera.com {code} The Region Server Name is used as memberName, but since the snapshot manger is initialized before the RS receives the server name used by the master, the zkprocedure will use the wrong name (0.0.0.0). This will case the snapshot to fail with a TimeoutException since the master will not receive the expected RS {code} Master: ZKProcedureCoordinatorRpcs: Watching for acquire node:/hbase/online-snapshot/acquired/foo23/srv-5.test.cloudera.com,60020,1371813451915 RS: ZKProcedureMemberRpcs: Member: '0.0.0.0,60020,1371814996779' joining acquired barrier for procedure (foo23) in zk ... org.apache.hadoop.hbase.errorhandling.TimeoutException: Timeout elapsed! Source:Timeout caused Foreign Exception Start:1371798732141, End:1371798792141, diff:6, max:6 ms {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-6295) Possible performance improvement in client batch operations: presplit and send in background
[ https://issues.apache.org/jira/browse/HBASE-6295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690262#comment-13690262 ] Jean-Marc Spaggiari commented on HBASE-6295: 0.94 tests are in progress... the should be done by 12h30 EST. I might be able to provide the results at that time. If there is any need to re-run the trunk tests with this patch, just let me know. I will most probably by a 2nd tests dedicated server soon to be able to run more tests for all those JIRAs ;) Possible performance improvement in client batch operations: presplit and send in background Key: HBASE-6295 URL: https://issues.apache.org/jira/browse/HBASE-6295 Project: HBase Issue Type: Improvement Components: Client, Performance Affects Versions: 0.95.2 Reporter: Nicolas Liochon Assignee: Nicolas Liochon Labels: noob Fix For: 0.98.0 Attachments: 6295.v11.patch, 6295.v12.patch, 6295.v14.patch, 6295.v1.patch, 6295.v2.patch, 6295.v3.patch, 6295.v4.patch, 6295.v5.patch, 6295.v6.patch, 6295.v8.patch, 6295.v9.patch today batch algo is: {noformat} for Operation o: ListOp{ add o to todolist if todolist maxsize or o last in list split todolist per location send split lists to region servers clear todolist wait } {noformat} We could: - create immediately the final object instead of an intermediate array - split per location immediately - instead of sending when the list as a whole is full, send it when there is enough data for a single location It would be: {noformat} for Operation o: ListOp{ get location add o to todo location.todolist if (location.todolist maxLocationSize) send location.todolist to region server clear location.todolist // don't wait, continue the loop } send remaining wait {noformat} It's not trivial to write if you add error management: retried list must be shared with the operations added in the todolist. But it's doable. It's interesting mainly for 'big' writes -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8783) RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name
[ https://issues.apache.org/jira/browse/HBASE-8783?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690264#comment-13690264 ] Matteo Bertozzi commented on HBASE-8783: patch to delay the memberName initialization on start() instead of doing that in the constructor. RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name - Key: HBASE-8783 URL: https://issues.apache.org/jira/browse/HBASE-8783 Project: HBase Issue Type: Bug Components: snapshots Affects Versions: 0.94.8, 0.95.1 Reporter: Matteo Bertozzi Assignee: Matteo Bertozzi Priority: Minor Fix For: 0.95.2, 0.94.9 Attachments: HBASE-8783-0.94-v0.patch, HBASE-8783-v0.patch The ZKProcedureMemberRpcs of the RegionServerSnapshotManager may be initialized with the wrong memberName. {code} 2013-06-21 05:03:41,732 DEBUG org.apache.hadoop.hbase.regionserver.HRegionServer: Initialize Snapshot Manager ... 2013-06-21 05:03:41,875 INFO org.apache.hadoop.hbase.regionserver.HRegionServer: Master passed us hostname to use. Was=0.0.0.0, Now=srv-5.test.cloudera.com {code} The Region Server Name is used as memberName, but since the snapshot manger is initialized before the RS receives the server name used by the master, the zkprocedure will use the wrong name (0.0.0.0). This will case the snapshot to fail with a TimeoutException since the master will not receive the expected RS {code} Master: ZKProcedureCoordinatorRpcs: Watching for acquire node:/hbase/online-snapshot/acquired/foo23/srv-5.test.cloudera.com,60020,1371813451915 RS: ZKProcedureMemberRpcs: Member: '0.0.0.0,60020,1371814996779' joining acquired barrier for procedure (foo23) in zk ... org.apache.hadoop.hbase.errorhandling.TimeoutException: Timeout elapsed! Source:Timeout caused Foreign Exception Start:1371798732141, End:1371798792141, diff:6, max:6 ms {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8755) A new write thread model for HLog to improve the overall HBase write throughput
[ https://issues.apache.org/jira/browse/HBASE-8755?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690288#comment-13690288 ] Lars Hofhansl commented on HBASE-8755: -- Interesting. For writing the WAL it should not make any difference whether we write sequentially or at random. A possible reason is that the batching there is less efficient, maybe that brings out the extra thread hand off needed here. (my test was the equivalent of a sequential write, but using a handcoded test) A new write thread model for HLog to improve the overall HBase write throughput --- Key: HBASE-8755 URL: https://issues.apache.org/jira/browse/HBASE-8755 Project: HBase Issue Type: Improvement Components: wal Reporter: Feng Honghua Attachments: HBASE-8755-0.94-V0.patch, HBASE-8755-0.94-V1.patch, HBASE-8755-trunk-V0.patch In current write model, each write handler thread (executing put()) will individually go through a full 'append (hlog local buffer) = HLog writer append (write to hdfs) = HLog writer sync (sync hdfs)' cycle for each write, which incurs heavy race condition on updateLock and flushLock. The only optimization where checking if current syncTillHere txid in expectation for other thread help write/sync its own txid to hdfs and omitting the write/sync actually help much less than expectation. Three of my colleagues(Ye Hangjun / Wu Zesheng / Zhang Peng) at Xiaomi proposed a new write thread model for writing hdfs sequence file and the prototype implementation shows a 4X improvement for throughput (from 17000 to 7+). I apply this new write thread model in HLog and the performance test in our test cluster shows about 3X throughput improvement (from 12150 to 31520 for 1 RS, from 22000 to 7 for 5 RS), the 1 RS write throughput (1K row-size) even beats the one of BigTable (Precolator published in 2011 says Bigtable's write throughput then is 31002). I can provide the detailed performance test results if anyone is interested. The change for new write thread model is as below: 1 All put handler threads append the edits to HLog's local pending buffer; (it notifies AsyncWriter thread that there is new edits in local buffer) 2 All put handler threads wait in HLog.syncer() function for underlying threads to finish the sync that contains its txid; 3 An single AsyncWriter thread is responsible for retrieve all the buffered edits in HLog's local pending buffer and write to the hdfs (hlog.writer.append); (it notifies AsyncFlusher thread that there is new writes to hdfs that needs a sync) 4 An single AsyncFlusher thread is responsible for issuing a sync to hdfs to persist the writes by AsyncWriter; (it notifies the AsyncNotifier thread that sync watermark increases) 5 An single AsyncNotifier thread is responsible for notifying all pending put handler threads which are waiting in the HLog.syncer() function 6 No LogSyncer thread any more (since there is always AsyncWriter/AsyncFlusher threads do the same job it does) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8782) Thrift2 can not parse values when using framed transport
[ https://issues.apache.org/jira/browse/HBASE-8782?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690297#comment-13690297 ] Lars George commented on HBASE-8782: Will review over weekend. Thrift2 can not parse values when using framed transport Key: HBASE-8782 URL: https://issues.apache.org/jira/browse/HBASE-8782 Project: HBase Issue Type: Bug Components: Thrift Affects Versions: 0.95.1 Reporter: Hamed Madani Attachments: HBASE_8782.patch ThriftHBaseServiceHandler.java use .array() on table names , and values (family , qualifier in checkandDelete , etc) which resulted in incorrect values with framed transport. Replacing .array() with getBytes() fixed this problem. I've attached the patch EDIT: updated the patch to cover checkAndPut(), checkAndDelete() -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-6295) Possible performance improvement in client batch operations: presplit and send in background
[ https://issues.apache.org/jira/browse/HBASE-6295?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Nicolas Liochon updated HBASE-6295: --- Attachment: 6295.v15.patch Possible performance improvement in client batch operations: presplit and send in background Key: HBASE-6295 URL: https://issues.apache.org/jira/browse/HBASE-6295 Project: HBase Issue Type: Improvement Components: Client, Performance Affects Versions: 0.95.2 Reporter: Nicolas Liochon Assignee: Nicolas Liochon Labels: noob Fix For: 0.98.0 Attachments: 6295.v11.patch, 6295.v12.patch, 6295.v14.patch, 6295.v15.patch, 6295.v1.patch, 6295.v2.patch, 6295.v3.patch, 6295.v4.patch, 6295.v5.patch, 6295.v6.patch, 6295.v8.patch, 6295.v9.patch today batch algo is: {noformat} for Operation o: ListOp{ add o to todolist if todolist maxsize or o last in list split todolist per location send split lists to region servers clear todolist wait } {noformat} We could: - create immediately the final object instead of an intermediate array - split per location immediately - instead of sending when the list as a whole is full, send it when there is enough data for a single location It would be: {noformat} for Operation o: ListOp{ get location add o to todo location.todolist if (location.todolist maxLocationSize) send location.todolist to region server clear location.todolist // don't wait, continue the loop } send remaining wait {noformat} It's not trivial to write if you add error management: retried list must be shared with the operations added in the todolist. But it's doable. It's interesting mainly for 'big' writes -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8755) A new write thread model for HLog to improve the overall HBase write throughput
[ https://issues.apache.org/jira/browse/HBASE-8755?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690375#comment-13690375 ] stack commented on HBASE-8755: -- [~jmspaggi] Thanks boss. What test is this? YCSB w/ how many clients? Thank you sir. A new write thread model for HLog to improve the overall HBase write throughput --- Key: HBASE-8755 URL: https://issues.apache.org/jira/browse/HBASE-8755 Project: HBase Issue Type: Improvement Components: wal Reporter: Feng Honghua Attachments: HBASE-8755-0.94-V0.patch, HBASE-8755-0.94-V1.patch, HBASE-8755-trunk-V0.patch In current write model, each write handler thread (executing put()) will individually go through a full 'append (hlog local buffer) = HLog writer append (write to hdfs) = HLog writer sync (sync hdfs)' cycle for each write, which incurs heavy race condition on updateLock and flushLock. The only optimization where checking if current syncTillHere txid in expectation for other thread help write/sync its own txid to hdfs and omitting the write/sync actually help much less than expectation. Three of my colleagues(Ye Hangjun / Wu Zesheng / Zhang Peng) at Xiaomi proposed a new write thread model for writing hdfs sequence file and the prototype implementation shows a 4X improvement for throughput (from 17000 to 7+). I apply this new write thread model in HLog and the performance test in our test cluster shows about 3X throughput improvement (from 12150 to 31520 for 1 RS, from 22000 to 7 for 5 RS), the 1 RS write throughput (1K row-size) even beats the one of BigTable (Precolator published in 2011 says Bigtable's write throughput then is 31002). I can provide the detailed performance test results if anyone is interested. The change for new write thread model is as below: 1 All put handler threads append the edits to HLog's local pending buffer; (it notifies AsyncWriter thread that there is new edits in local buffer) 2 All put handler threads wait in HLog.syncer() function for underlying threads to finish the sync that contains its txid; 3 An single AsyncWriter thread is responsible for retrieve all the buffered edits in HLog's local pending buffer and write to the hdfs (hlog.writer.append); (it notifies AsyncFlusher thread that there is new writes to hdfs that needs a sync) 4 An single AsyncFlusher thread is responsible for issuing a sync to hdfs to persist the writes by AsyncWriter; (it notifies the AsyncNotifier thread that sync watermark increases) 5 An single AsyncNotifier thread is responsible for notifying all pending put handler threads which are waiting in the HLog.syncer() function 6 No LogSyncer thread any more (since there is always AsyncWriter/AsyncFlusher threads do the same job it does) -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8667) Master and Regionserver not able to communicate if both bound to different network interfaces on the same machine.
[ https://issues.apache.org/jira/browse/HBASE-8667?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690381#comment-13690381 ] stack commented on HBASE-8667: -- So, to be clear here... the master will use the hostname the RS gives it. It will not try to resolve the name the RS gives it and use the resolved name instead. Let me try this patch on a cluster where reverse dns is broke to make sure we don't see the doubled-RS issue. Master and Regionserver not able to communicate if both bound to different network interfaces on the same machine. -- Key: HBASE-8667 URL: https://issues.apache.org/jira/browse/HBASE-8667 Project: HBase Issue Type: Bug Components: IPC/RPC Reporter: rajeshbabu Assignee: rajeshbabu Fix For: 0.98.0, 0.95.2, 0.94.9 Attachments: HBASE-8667_trunk.patch, HBASE-8667_Trunk.patch, HBASE-8667_Trunk-V2.patch, HBASE-8667_trunk_v4.patch, HBASE-8667_trunk_v5.patch While testing HBASE-8640 fix found that master and regionserver running on different interfaces are not communicating properly. I have two interfaces 1) lo 2) eth0 in my machine and default hostname interface is lo. I have configured master ipc address to ip of eth0 interface. Started master and regionserver on the same machine. 1) master rpc server bound to eth0 and RS rpc server bound to lo 2) Since rpc client is not binding to any ip address, when RS is reporting RS startup its getting registered with eth0 ip address(but actually it should register localhost) Here are RS logs: {code} 2013-05-31 06:05:28,608 WARN [regionserver60020] org.apache.hadoop.hbase.regionserver.HRegionServer: reportForDuty failed; sleeping and then retrying. 2013-05-31 06:05:31,609 INFO [regionserver60020] org.apache.hadoop.hbase.regionserver.HRegionServer: Attempting connect to Master server at 192.168.0.100,6,1369960497008 2013-05-31 06:05:31,609 INFO [regionserver60020] org.apache.hadoop.hbase.regionserver.HRegionServer: Telling master at 192.168.0.100,6,1369960497008 that we are up with port=60020, startcode=1369960502544 2013-05-31 06:05:31,618 DEBUG [regionserver60020] org.apache.hadoop.hbase.regionserver.HRegionServer: Config from master: hbase.rootdir=hdfs://localhost:2851/hbase 2013-05-31 06:05:31,618 DEBUG [regionserver60020] org.apache.hadoop.hbase.regionserver.HRegionServer: Config from master: fs.default.name=hdfs://localhost:2851 2013-05-31 06:05:31,618 INFO [regionserver60020] org.apache.hadoop.hbase.regionserver.HRegionServer: Master passed us a different hostname to use; was=localhost, but now=192.168.0.100 {code} Here are master logs: {code} 2013-05-31 06:05:31,615 INFO [IPC Server handler 9 on 6] org.apache.hadoop.hbase.master.ServerManager: Registering server=192.168.0.100,60020,1369960502544 {code} Since master has wrong rpc server address of RS, META is not getting assigned. {code} 2013-05-31 06:05:34,362 DEBUG [master-192.168.0.100,6,1369960497008] org.apache.hadoop.hbase.master.AssignmentManager: No previous transition plan was found (or we are ignoring an existing plan) for .META.,,1.1028785192 so generated a random one; hri=.META.,,1.1028785192, src=, dest=192.168.0.100,60020,1369960502544; 1 (online=1, available=1) available servers, forceNewPlan=false - org.apache.hadoop.hbase.master.AssignmentManager: Failed assignment of .META.,,1.1028785192 to 192.168.0.100,60020,1369960502544, trying to assign elsewhere instead; try=1 of 10 java.net.ConnectException: Connection refused at sun.nio.ch.SocketChannelImpl.checkConnect(Native Method) at sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:592) at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:206) at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:511) at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:481) at org.apache.hadoop.hbase.ipc.RpcClient$Connection.setupConnection(RpcClient.java:549) at org.apache.hadoop.hbase.ipc.RpcClient$Connection.setupIOstreams(RpcClient.java:813) at org.apache.hadoop.hbase.ipc.RpcClient.getConnection(RpcClient.java:1422) at org.apache.hadoop.hbase.ipc.RpcClient.call(RpcClient.java:1315) at org.apache.hadoop.hbase.ipc.RpcClient.callBlockingMethod(RpcClient.java:1532) at org.apache.hadoop.hbase.ipc.RpcClient$BlockingRpcChannelImplementation.callBlockingMethod(RpcClient.java:1587) at org.apache.hadoop.hbase.protobuf.generated.AdminProtos$AdminService$BlockingStub.openRegion(AdminProtos.java:15039) at
[jira] [Commented] (HBASE-8015) Support for Namespaces
[ https://issues.apache.org/jira/browse/HBASE-8015?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690392#comment-13690392 ] Francis Liu commented on HBASE-8015: {quote} You mean Y! They are using '.' for separator currently? {quote} The only dots we use are for namespaces and that's only in our sandbox so no worries there. My concern was that we'd have to ask users to upgrade their code in order to start using namespaces. So we'll have an internal delimiter '.' and an external one for external tools such as cli, rest(?), etc. But for the java apis we won't recognize an FQTN string in the public apis? {quote} I thought you had trick to make '.' work? {quote} Yes, I do. [~enis] pointed out that we will have to live with that trick in later versions. Just making sure you guys are ok with that. Have a look at it on github, just look at TableName.java that should help you get the gist of it. Support for Namespaces -- Key: HBASE-8015 URL: https://issues.apache.org/jira/browse/HBASE-8015 Project: HBase Issue Type: New Feature Reporter: Francis Liu Assignee: Francis Liu Attachments: HBASE-8015_draft_94.patch, Namespace Design.pdf -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8015) Support for Namespaces
[ https://issues.apache.org/jira/browse/HBASE-8015?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690410#comment-13690410 ] stack commented on HBASE-8015: -- The legacy Y! namespacers does compllicate things. If we are not to unsettle them, the decision is made already and the override to add NS is out? This is 0.96. Y! will have to do a 'migration' to go up on 0.96 anyways? Can you think of a 'step' that you could add for Y! cluster that would help here? Your users are doing 'new HTable(conf, ns.sometable);' and away they go? bq. But for the java apis we won't recognize an FQTN string in the public apis? Well, there would be helper classes for making sense of the FQTN that could be used by shell, rest, etc., but, yeah, the thought would be that in the API, there is no namepacing, not unless you ask for it explicitly. Let me look at the trick for how much we'd have to carry into the future. Support for Namespaces -- Key: HBASE-8015 URL: https://issues.apache.org/jira/browse/HBASE-8015 Project: HBase Issue Type: New Feature Reporter: Francis Liu Assignee: Francis Liu Attachments: HBASE-8015_draft_94.patch, Namespace Design.pdf -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Created] (HBASE-8784) Wildcard/Range/Partition Delete Support
Lars George created HBASE-8784: -- Summary: Wildcard/Range/Partition Delete Support Key: HBASE-8784 URL: https://issues.apache.org/jira/browse/HBASE-8784 Project: HBase Issue Type: New Feature Components: Client, Deletes, regionserver Reporter: Lars George We often see use-cases where users, for example with timeseries data, would like to do deletes of large ranges of data, basically like a delete of a partition as supported by RDBMSs. We should support regular expressions or range expressions for the matches (supporting binary keys obviously). The idea is to store the deletes not with the data, but the meta data. When we read files we read the larger deletes first, and then the inline ones. Of course, this should be reserved for few but very data intensive deletes. This reduces the number of deletes to write to one, instead of many (often thousands, if not millions). This is different from the BulkDeleteEndpoint introduced in HBASE-6942. It should support similar Scan based selectiveness. The new range deletes will mask out all the matching data and handled otherwise like other deletes, for example being dropped during major compactions, once all masked data has been dropped too. To be discussed is how and where we store the delete entry in practice, since meta data might not be wanted. But it seems like a reasonable choice. The DeleteTracker can handle the delete the same with additional checks for wildcards/ranges. If the deletes are not used, no critical path is affected, therefore not causing any additional latencies or other regressions. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8783) RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name
[ https://issues.apache.org/jira/browse/HBASE-8783?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690415#comment-13690415 ] stack commented on HBASE-8783: -- This is right Matteo: -LOG.debug(Starting the controller for procedure member: + zkProc.getMemberName()); +LOG.debug(Starting the controller for procedure member: + coordName); ... because above it you undo use of coordName. ZKProcedureUtil does not need memberName? Was just a nice-to-have? Otherwise patch looks good to me. +1 RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name - Key: HBASE-8783 URL: https://issues.apache.org/jira/browse/HBASE-8783 Project: HBase Issue Type: Bug Components: snapshots Affects Versions: 0.94.8, 0.95.1 Reporter: Matteo Bertozzi Assignee: Matteo Bertozzi Priority: Minor Fix For: 0.95.2, 0.94.9 Attachments: HBASE-8783-0.94-v0.patch, HBASE-8783-v0.patch The ZKProcedureMemberRpcs of the RegionServerSnapshotManager may be initialized with the wrong memberName. {code} 2013-06-21 05:03:41,732 DEBUG org.apache.hadoop.hbase.regionserver.HRegionServer: Initialize Snapshot Manager ... 2013-06-21 05:03:41,875 INFO org.apache.hadoop.hbase.regionserver.HRegionServer: Master passed us hostname to use. Was=0.0.0.0, Now=srv-5.test.cloudera.com {code} The Region Server Name is used as memberName, but since the snapshot manger is initialized before the RS receives the server name used by the master, the zkprocedure will use the wrong name (0.0.0.0). This will case the snapshot to fail with a TimeoutException since the master will not receive the expected RS {code} Master: ZKProcedureCoordinatorRpcs: Watching for acquire node:/hbase/online-snapshot/acquired/foo23/srv-5.test.cloudera.com,60020,1371813451915 RS: ZKProcedureMemberRpcs: Member: '0.0.0.0,60020,1371814996779' joining acquired barrier for procedure (foo23) in zk ... org.apache.hadoop.hbase.errorhandling.TimeoutException: Timeout elapsed! Source:Timeout caused Foreign Exception Start:1371798732141, End:1371798792141, diff:6, max:6 ms {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8783) RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name
[ https://issues.apache.org/jira/browse/HBASE-8783?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690425#comment-13690425 ] Matteo Bertozzi commented on HBASE-8783: {quote}ZKProcedureUtil does not need memberName? Was just a nice-to-have?{quote} the class operates only on the procedure and not on the member. ZKProcedureMemberRpcs (the user of ZKProcedureUtil) should know the memberName (coordName). I think that both class names are quite explanatory, my guess is that was something not cleaned up. RSSnapshotManager.ZKProcedureMemberRpcs may be initialized with the wrong server name - Key: HBASE-8783 URL: https://issues.apache.org/jira/browse/HBASE-8783 Project: HBase Issue Type: Bug Components: snapshots Affects Versions: 0.94.8, 0.95.1 Reporter: Matteo Bertozzi Assignee: Matteo Bertozzi Priority: Minor Fix For: 0.95.2, 0.94.9 Attachments: HBASE-8783-0.94-v0.patch, HBASE-8783-v0.patch The ZKProcedureMemberRpcs of the RegionServerSnapshotManager may be initialized with the wrong memberName. {code} 2013-06-21 05:03:41,732 DEBUG org.apache.hadoop.hbase.regionserver.HRegionServer: Initialize Snapshot Manager ... 2013-06-21 05:03:41,875 INFO org.apache.hadoop.hbase.regionserver.HRegionServer: Master passed us hostname to use. Was=0.0.0.0, Now=srv-5.test.cloudera.com {code} The Region Server Name is used as memberName, but since the snapshot manger is initialized before the RS receives the server name used by the master, the zkprocedure will use the wrong name (0.0.0.0). This will case the snapshot to fail with a TimeoutException since the master will not receive the expected RS {code} Master: ZKProcedureCoordinatorRpcs: Watching for acquire node:/hbase/online-snapshot/acquired/foo23/srv-5.test.cloudera.com,60020,1371813451915 RS: ZKProcedureMemberRpcs: Member: '0.0.0.0,60020,1371814996779' joining acquired barrier for procedure (foo23) in zk ... org.apache.hadoop.hbase.errorhandling.TimeoutException: Timeout elapsed! Source:Timeout caused Foreign Exception Start:1371798732141, End:1371798792141, diff:6, max:6 ms {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8784) Wildcard/Range/Partition Delete Support
[ https://issues.apache.org/jira/browse/HBASE-8784?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690437#comment-13690437 ] Lars Hofhansl commented on HBASE-8784: -- Interesting idea. You want to store these in the HFiles' metadata block? Or somehow in .META.? Or in a new new DeleteRange table? We have a similar problem, and we decided to resort to coprocessor hooks during compactions, where the hook reads the metadata from somewhere else and then just filters the data out by some criteria. Obviously this only works in delete this stuff some time when you get to it type scenarios. Wildcard/Range/Partition Delete Support --- Key: HBASE-8784 URL: https://issues.apache.org/jira/browse/HBASE-8784 Project: HBase Issue Type: New Feature Components: Client, Deletes, regionserver Reporter: Lars George We often see use-cases where users, for example with timeseries data, would like to do deletes of large ranges of data, basically like a delete of a partition as supported by RDBMSs. We should support regular expressions or range expressions for the matches (supporting binary keys obviously). The idea is to store the deletes not with the data, but the meta data. When we read files we read the larger deletes first, and then the inline ones. Of course, this should be reserved for few but very data intensive deletes. This reduces the number of deletes to write to one, instead of many (often thousands, if not millions). This is different from the BulkDeleteEndpoint introduced in HBASE-6942. It should support similar Scan based selectiveness. The new range deletes will mask out all the matching data and handled otherwise like other deletes, for example being dropped during major compactions, once all masked data has been dropped too. To be discussed is how and where we store the delete entry in practice, since meta data might not be wanted. But it seems like a reasonable choice. The DeleteTracker can handle the delete the same with additional checks for wildcards/ranges. If the deletes are not used, no critical path is affected, therefore not causing any additional latencies or other regressions. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8721) Deletes can mask puts that happen after the delete
[ https://issues.apache.org/jira/browse/HBASE-8721?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690464#comment-13690464 ] Andrew Purtell commented on HBASE-8721: --- [~saint@gmail.com] Did that once before. Looking at votes, we have: Lars (-1), Sergey (-0), me (-0). If we tease this apart, we get HBASE-8770, where looks like we have a way forward on addressing this part: Feng: {quote} User can always read the put by 4. It's more natural and intuitive: 1 put a kv (timestamp = T0), and flush; 2 delete that kv using a DeleteColumn type kv with timestamp T0 (or any timestamp = T0), and flush; 3 a major compact occurs [or not]; 4 put that kv again (timestamp = T0); 5 read that kv; === a) if a major compact occurs at step 3, then step 5 will get the put written at step 4 b) if no major compact occurs at step 3, then step 5 get nothing {quote} But for the other part of the argument, expressed by Hangjun: {quote} tiemstamp is a logical version, which is often the same as the happened-before relationship inside hbase, but not necessarily have to be. User could assign any semantics to it since it has been exposed and user could set it explicitly. [...] Conceptually decoupling the timestamp and the happened-before relationship inside hbase should give users more flexibility to decide how to use it. {quote} the discussion consensus reads to me as: users submitting their own timestamps have to actually produce happened-before relationships by issuing ops with _different_ timestamps, and not rely on HBase to also remember op arrival order internally for breaking ties when the ops have the same logical time. We have a standing firm -1 on changing that part. What do you think? Would you +1 it? Under what circumstances would Lars change his -1 to a +1? I don't see that but don't presume to speak for him. Deletes can mask puts that happen after the delete -- Key: HBASE-8721 URL: https://issues.apache.org/jira/browse/HBASE-8721 Project: HBase Issue Type: Improvement Components: regionserver Reporter: Feng Honghua Attachments: HBASE-8721-0.94-V0.patch this fix aims for bug mentioned in http://hbase.apache.org/book.html 5.8.2.1: Deletes mask puts, even puts that happened after the delete was entered. Remember that a delete writes a tombstone, which only disappears after then next major compaction has run. Suppose you do a delete of everything = T. After this you do a new put with a timestamp = T. This put, even if it happened after the delete, will be masked by the delete tombstone. Performing the put will not fail, but when you do a get you will notice the put did have no effect. It will start working again after the major compaction has run. These issues should not be a problem if you use always-increasing versions for new puts to a row. But they can occur even if you do not care about time: just do delete and put immediately after each other, and there is some chance they happen within the same millisecond. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8721) Deletes can mask puts that happen after the delete
[ https://issues.apache.org/jira/browse/HBASE-8721?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690482#comment-13690482 ] Sergey Shelukhin commented on HBASE-8721: - note that there are two arguments here, one is for real glitch with major compactions removing the markers as described; and one for adding a delete with a semantic that will be internal sequence-based and ignore put timestamps completely (previous-in-sequence puts removed, next-in-sequence puts visible despite timestamps. By extension this delete semantic will obviously not have the major-compaction-related glitch, but this is a side-effect, not the main argument for such semantics. Let's not conflate them... Deletes can mask puts that happen after the delete -- Key: HBASE-8721 URL: https://issues.apache.org/jira/browse/HBASE-8721 Project: HBase Issue Type: Improvement Components: regionserver Reporter: Feng Honghua Attachments: HBASE-8721-0.94-V0.patch this fix aims for bug mentioned in http://hbase.apache.org/book.html 5.8.2.1: Deletes mask puts, even puts that happened after the delete was entered. Remember that a delete writes a tombstone, which only disappears after then next major compaction has run. Suppose you do a delete of everything = T. After this you do a new put with a timestamp = T. This put, even if it happened after the delete, will be masked by the delete tombstone. Performing the put will not fail, but when you do a get you will notice the put did have no effect. It will start working again after the major compaction has run. These issues should not be a problem if you use always-increasing versions for new puts to a row. But they can occur even if you do not care about time: just do delete and put immediately after each other, and there is some chance they happen within the same millisecond. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8015) Support for Namespaces
[ https://issues.apache.org/jira/browse/HBASE-8015?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690489#comment-13690489 ] Francis Liu commented on HBASE-8015: {quote} The legacy Y! namespacers does compllicate things. If we are not to unsettle them, the decision is made already and the override to add NS is out? {quote} We are not married to the current implementation yet. But we have production users who are married to the old api and would require them to upgrade their code to use the new override apis as opposed to a table name change if we recognized FQTN strings in the existing api. I suspect other users will encounter the same problem. Essentially what I'm asking is if it would be acceptable to recognize FQTN strings in the old api alongside implementing override? What are we buying if we are going to support an external delimiter as well as an internal delimiter but avoid the old api from recognizing FQTN string? *Nit side note: Shouldn't it be be called overload (not override), since we are planning on overloading a a method or am I thinking of one of the other approaches? Support for Namespaces -- Key: HBASE-8015 URL: https://issues.apache.org/jira/browse/HBASE-8015 Project: HBase Issue Type: New Feature Reporter: Francis Liu Assignee: Francis Liu Attachments: HBASE-8015_draft_94.patch, Namespace Design.pdf -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8662) [rest] support impersonation
[ https://issues.apache.org/jira/browse/HBASE-8662?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Jimmy Xiang updated HBASE-8662: --- Attachment: trunk-8662_v4.patch I attached patch v4. It uses AuthFilter which can pass configuration to auth handlers to support plugability. It uses a context to store thread local effective user for impersonation per RPC call, instead of maintaining connections per context. This way doesn't involve too much code change to pass the effective user from client down to the RPC layer. [rest] support impersonation Key: HBASE-8662 URL: https://issues.apache.org/jira/browse/HBASE-8662 Project: HBase Issue Type: Sub-task Components: REST, security Reporter: Jimmy Xiang Assignee: Jimmy Xiang Fix For: 0.98.0 Attachments: method_doas.patch, secure_rest.patch, trunk-8662.patch, trunk-8662_v2.patch, trunk-8662_v3.patch, trunk-8662_v4.patch Currently, our client API uses a fixed user: the current user. It should accept a user passed in, if authenticated. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8776) port HBASE-8723 to 0.94
[ https://issues.apache.org/jira/browse/HBASE-8776?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690508#comment-13690508 ] Sergey Shelukhin commented on HBASE-8776: - Default ZK timeout is 40s due to default in ZK config trumping out 180s. default. The problem, with 40s and especially 180s, is that with current retries we cannot even ride over one RS crash if it goes down in a bad way (w/o closing the socket to ZK resulting in immediate recovery). This is not specific to integration test. port HBASE-8723 to 0.94 --- Key: HBASE-8776 URL: https://issues.apache.org/jira/browse/HBASE-8776 Project: HBase Issue Type: Bug Affects Versions: 0.94.8 Reporter: Sergey Shelukhin Assignee: Sergey Shelukhin Fix For: 0.94.9 Attachments: HBASE-8776-v0.patch -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8776) port HBASE-8723 to 0.94
[ https://issues.apache.org/jira/browse/HBASE-8776?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690509#comment-13690509 ] Sergey Shelukhin commented on HBASE-8776: - Interesting fact about integration test is that by default, when CM kills RS, socket is closed to ZK so ZK session insta-terminates, and master insta-recovers. A more realistic scenario for e.g. network issues is that ZK session timeout actually takes place, so recovery is delayed by 40s., and put is highly likely to fail because current retries are no more than ~71sec. long, and last server selection is done at 39sec. in 94 port HBASE-8723 to 0.94 --- Key: HBASE-8776 URL: https://issues.apache.org/jira/browse/HBASE-8776 Project: HBase Issue Type: Bug Affects Versions: 0.94.8 Reporter: Sergey Shelukhin Assignee: Sergey Shelukhin Fix For: 0.94.9 Attachments: HBASE-8776-v0.patch -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Created] (HBASE-8785) revise zookeeper session timeout setting
Sergey Shelukhin created HBASE-8785: --- Summary: revise zookeeper session timeout setting Key: HBASE-8785 URL: https://issues.apache.org/jira/browse/HBASE-8785 Project: HBase Issue Type: Improvement Affects Versions: 0.95.1 Reporter: Sergey Shelukhin Fix For: 0.95.2 Current ZK session timeout is set to 90sec., and the comment in the doc says: This setting becomes zookeeper's 'maxSessionTimeout'. However, this comment is misleading - it doesn't always become maxSessionTimeout, min(our timeout, maxSessionTimeout) is chosen. Moreover, the default maxSessionTimeout in ZK that I'm looking at is 40s, so this setting doesn't do anything. Additionally, 40s. seems like a lot of time. 1) Should the comment be changed to tell the user to change ZK config if they want higher timeout? 2) Should the setting be revised down? -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8701) distributedLogReplay need to apply wal edits in the receiving order of those edits
[ https://issues.apache.org/jira/browse/HBASE-8701?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690521#comment-13690521 ] Sergey Shelukhin commented on HBASE-8701: - {code} Sounds like we can have hfiles w/ -ve sequenceid. It can contain replayed edits and edits that came in during replay. We flip the region to start taking reads (and reenable compactions). Compactions currently – until kvs include a seqid – are compacting adjacent files. If we are figuring adjaceny using seqid, the -ve file goes to the end of the line though it was most-recently-written file.{code} What is -ve? Negative? last time I checked the replayed and new KVs were supposed to go into separate memstores, right? The recovery-memstore can then flush into a file with old (WAL-based) seqId, so adjacency would be maintained, we will just have a potential gap for some time which we should be mindful of (i.e. we'll have some old, good files, some new files from writes-during-recovery, and they would look adjacent but should not be compacted together until the recovered file(s) are inserted between them). I don't think we can maintain the same guarantees if new and recovered KVs are written into mixed memstores (unless seqNums are also written there). distributedLogReplay need to apply wal edits in the receiving order of those edits -- Key: HBASE-8701 URL: https://issues.apache.org/jira/browse/HBASE-8701 Project: HBase Issue Type: Bug Components: MTTR Reporter: Jeffrey Zhong Assignee: Jeffrey Zhong Fix For: 0.98.0, 0.95.2 Attachments: 8701-v3.txt, hbase-8701-v4.patch, hbase-8701-v5.patch, hbase-8701-v6.patch, hbase-8701-v7.patch This issue happens in distributedLogReplay mode when recovering multiple puts of the same key + version(timestamp). After replay, the value is nondeterministic of the key h5. The original concern situation raised from [~eclark]: For all edits the rowkey is the same. There's a log with: [ A (ts = 0), B (ts = 0) ] Replay the first half of the log. A user puts in C (ts = 0) Memstore has to flush A new Hfile will be created with [ C, A ] and MaxSequenceId = C's seqid. Replay the rest of the Log. Flush The issue will happen in similar situation like Put(key, t=T) in WAL1 and Put(key,t=T) in WAL2 h5. Below is the option(proposed by Ted) I'd like to use: a) During replay, we pass original wal sequence number of each edit to the receiving RS b) In receiving RS, we store negative original sequence number of wal edits into mvcc field of KVs of wal edits c) Add handling of negative MVCC in KVScannerComparator and KVComparator d) In receiving RS, write original sequence number into an optional field of wal file for chained RS failure situation e) When opening a region, we add a safety bumper(a large number) in order for the new sequence number of a newly opened region not to collide with old sequence numbers. In the future, when we stores sequence number along with KVs, we can adjust the above solution a little bit by avoiding to overload MVCC field. h5. The other alternative options are listed below for references: Option one a) disallow writes during recovery b) during replay, we pass original wal sequence ids c) hold flush till all wals of a recovering region are replayed. Memstore should hold because we only recover unflushed wal edits. For edits with same key + version, whichever with larger sequence Id wins. Option two a) During replay, we pass original wal sequence ids b) for each wal edit, we store each edit's original sequence id along with its key. c) during scanning, we use the original sequence id if it's present otherwise its store file sequence Id d) compaction can just leave put with max sequence id Please let me know if you have better ideas. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8701) distributedLogReplay need to apply wal edits in the receiving order of those edits
[ https://issues.apache.org/jira/browse/HBASE-8701?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690524#comment-13690524 ] Sergey Shelukhin commented on HBASE-8701: - Well, it's also possible to ensure there's only one mixed memstore, then if recovery can resolve conflicts inside it (using seqNums that are available from recovery I suppose), it can be flushed into correct file. But this is not practical... distributedLogReplay need to apply wal edits in the receiving order of those edits -- Key: HBASE-8701 URL: https://issues.apache.org/jira/browse/HBASE-8701 Project: HBase Issue Type: Bug Components: MTTR Reporter: Jeffrey Zhong Assignee: Jeffrey Zhong Fix For: 0.98.0, 0.95.2 Attachments: 8701-v3.txt, hbase-8701-v4.patch, hbase-8701-v5.patch, hbase-8701-v6.patch, hbase-8701-v7.patch This issue happens in distributedLogReplay mode when recovering multiple puts of the same key + version(timestamp). After replay, the value is nondeterministic of the key h5. The original concern situation raised from [~eclark]: For all edits the rowkey is the same. There's a log with: [ A (ts = 0), B (ts = 0) ] Replay the first half of the log. A user puts in C (ts = 0) Memstore has to flush A new Hfile will be created with [ C, A ] and MaxSequenceId = C's seqid. Replay the rest of the Log. Flush The issue will happen in similar situation like Put(key, t=T) in WAL1 and Put(key,t=T) in WAL2 h5. Below is the option(proposed by Ted) I'd like to use: a) During replay, we pass original wal sequence number of each edit to the receiving RS b) In receiving RS, we store negative original sequence number of wal edits into mvcc field of KVs of wal edits c) Add handling of negative MVCC in KVScannerComparator and KVComparator d) In receiving RS, write original sequence number into an optional field of wal file for chained RS failure situation e) When opening a region, we add a safety bumper(a large number) in order for the new sequence number of a newly opened region not to collide with old sequence numbers. In the future, when we stores sequence number along with KVs, we can adjust the above solution a little bit by avoiding to overload MVCC field. h5. The other alternative options are listed below for references: Option one a) disallow writes during recovery b) during replay, we pass original wal sequence ids c) hold flush till all wals of a recovering region are replayed. Memstore should hold because we only recover unflushed wal edits. For edits with same key + version, whichever with larger sequence Id wins. Option two a) During replay, we pass original wal sequence ids b) for each wal edit, we store each edit's original sequence id along with its key. c) during scanning, we use the original sequence id if it's present otherwise its store file sequence Id d) compaction can just leave put with max sequence id Please let me know if you have better ideas. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Comment Edited] (HBASE-8701) distributedLogReplay need to apply wal edits in the receiving order of those edits
[ https://issues.apache.org/jira/browse/HBASE-8701?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690524#comment-13690524 ] Sergey Shelukhin edited comment on HBASE-8701 at 6/21/13 5:59 PM: -- Well, it's also possible to ensure there's only one mixed memstore (as in, entire recovery and writes-during-recovery go into one single memstore), then if recovery can resolve conflicts inside it (using seqNums that are available from recovery I suppose), it can be flushed into correct file. But this is not practical... was (Author: sershe): Well, it's also possible to ensure there's only one mixed memstore, then if recovery can resolve conflicts inside it (using seqNums that are available from recovery I suppose), it can be flushed into correct file. But this is not practical... distributedLogReplay need to apply wal edits in the receiving order of those edits -- Key: HBASE-8701 URL: https://issues.apache.org/jira/browse/HBASE-8701 Project: HBase Issue Type: Bug Components: MTTR Reporter: Jeffrey Zhong Assignee: Jeffrey Zhong Fix For: 0.98.0, 0.95.2 Attachments: 8701-v3.txt, hbase-8701-v4.patch, hbase-8701-v5.patch, hbase-8701-v6.patch, hbase-8701-v7.patch This issue happens in distributedLogReplay mode when recovering multiple puts of the same key + version(timestamp). After replay, the value is nondeterministic of the key h5. The original concern situation raised from [~eclark]: For all edits the rowkey is the same. There's a log with: [ A (ts = 0), B (ts = 0) ] Replay the first half of the log. A user puts in C (ts = 0) Memstore has to flush A new Hfile will be created with [ C, A ] and MaxSequenceId = C's seqid. Replay the rest of the Log. Flush The issue will happen in similar situation like Put(key, t=T) in WAL1 and Put(key,t=T) in WAL2 h5. Below is the option(proposed by Ted) I'd like to use: a) During replay, we pass original wal sequence number of each edit to the receiving RS b) In receiving RS, we store negative original sequence number of wal edits into mvcc field of KVs of wal edits c) Add handling of negative MVCC in KVScannerComparator and KVComparator d) In receiving RS, write original sequence number into an optional field of wal file for chained RS failure situation e) When opening a region, we add a safety bumper(a large number) in order for the new sequence number of a newly opened region not to collide with old sequence numbers. In the future, when we stores sequence number along with KVs, we can adjust the above solution a little bit by avoiding to overload MVCC field. h5. The other alternative options are listed below for references: Option one a) disallow writes during recovery b) during replay, we pass original wal sequence ids c) hold flush till all wals of a recovering region are replayed. Memstore should hold because we only recover unflushed wal edits. For edits with same key + version, whichever with larger sequence Id wins. Option two a) During replay, we pass original wal sequence ids b) for each wal edit, we store each edit's original sequence id along with its key. c) during scanning, we use the original sequence id if it's present otherwise its store file sequence Id d) compaction can just leave put with max sequence id Please let me know if you have better ideas. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8741) Mutations on Regions in recovery mode might have same sequenceIDs
[ https://issues.apache.org/jira/browse/HBASE-8741?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690536#comment-13690536 ] Sergey Shelukhin commented on HBASE-8741: - that's not such a large complication. We already account for seqNums per region we'd just have to look at all of them when cleaning instead of looking at the minimum. Mutations on Regions in recovery mode might have same sequenceIDs - Key: HBASE-8741 URL: https://issues.apache.org/jira/browse/HBASE-8741 Project: HBase Issue Type: Bug Components: MTTR Affects Versions: 0.95.1 Reporter: Himanshu Vashishtha Assignee: Himanshu Vashishtha Currently, when opening a region, we find the maximum sequence ID from all its HFiles and then set the LogSequenceId of the log (in case the later is at a small value). This works good in recovered.edits case as we are not writing to the region until we have replayed all of its previous edits. With distributed log replay, if we want to enable writes while a region is under recovery, we need to make sure that the logSequenceId maximum logSequenceId of the old regionserver. Otherwise, we might have a situation where new edits have same (or smaller) sequenceIds. We can store region level information in the WALTrailer, than this scenario could be avoided by: a) reading the trailer of the last completed file, i.e., last wal file which has a trailer and, b) completely reading the last wal file (this file would not have the trailer, so it needs to be read completely). In future, if we switch to multi wal file, we could read the trailer for all completed WAL files, and reading the remaining incomplete files. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-6295) Possible performance improvement in client batch operations: presplit and send in background
[ https://issues.apache.org/jira/browse/HBASE-6295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690540#comment-13690540 ] Sergey Shelukhin commented on HBASE-6295: - can you please update RB? thanks Possible performance improvement in client batch operations: presplit and send in background Key: HBASE-6295 URL: https://issues.apache.org/jira/browse/HBASE-6295 Project: HBase Issue Type: Improvement Components: Client, Performance Affects Versions: 0.95.2 Reporter: Nicolas Liochon Assignee: Nicolas Liochon Labels: noob Fix For: 0.98.0 Attachments: 6295.v11.patch, 6295.v12.patch, 6295.v14.patch, 6295.v15.patch, 6295.v1.patch, 6295.v2.patch, 6295.v3.patch, 6295.v4.patch, 6295.v5.patch, 6295.v6.patch, 6295.v8.patch, 6295.v9.patch today batch algo is: {noformat} for Operation o: ListOp{ add o to todolist if todolist maxsize or o last in list split todolist per location send split lists to region servers clear todolist wait } {noformat} We could: - create immediately the final object instead of an intermediate array - split per location immediately - instead of sending when the list as a whole is full, send it when there is enough data for a single location It would be: {noformat} for Operation o: ListOp{ get location add o to todo location.todolist if (location.todolist maxLocationSize) send location.todolist to region server clear location.todolist // don't wait, continue the loop } send remaining wait {noformat} It's not trivial to write if you add error management: retried list must be shared with the operations added in the todolist. But it's doable. It's interesting mainly for 'big' writes -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8721) Deletes can mask puts that happen after the delete
[ https://issues.apache.org/jira/browse/HBASE-8721?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690553#comment-13690553 ] Lars Hofhansl commented on HBASE-8721: -- I would change the -1 to a -0 if: # we make this configurable # the code the changes are not too messy (i.e. no if statements littered everywhere) # this is carefully tested with all features mentioned above Then we'd have 3 -0's. Even the major compaction glitch is only an issue when the client messes with timestamps (or regions are moved between RSs and clocks that are wildly out of sync). As mentioned above there is a proposed solution in form of a long TTL for delete markers, but that will only work if the timestamps represent wall clock time (otherwise TTL is meaning less). Deletes can mask puts that happen after the delete -- Key: HBASE-8721 URL: https://issues.apache.org/jira/browse/HBASE-8721 Project: HBase Issue Type: Improvement Components: regionserver Reporter: Feng Honghua Attachments: HBASE-8721-0.94-V0.patch this fix aims for bug mentioned in http://hbase.apache.org/book.html 5.8.2.1: Deletes mask puts, even puts that happened after the delete was entered. Remember that a delete writes a tombstone, which only disappears after then next major compaction has run. Suppose you do a delete of everything = T. After this you do a new put with a timestamp = T. This put, even if it happened after the delete, will be masked by the delete tombstone. Performing the put will not fail, but when you do a get you will notice the put did have no effect. It will start working again after the major compaction has run. These issues should not be a problem if you use always-increasing versions for new puts to a row. But they can occur even if you do not care about time: just do delete and put immediately after each other, and there is some chance they happen within the same millisecond. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8785) revise zookeeper session timeout setting
[ https://issues.apache.org/jira/browse/HBASE-8785?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690561#comment-13690561 ] Lars Hofhansl commented on HBASE-8785: -- Isn't the default 180s? 180s is long, indeed. The trick is to find a timeout that catches actual machine failures quickly, but does not trip on temporary network glitches or GC/etc. revise zookeeper session timeout setting Key: HBASE-8785 URL: https://issues.apache.org/jira/browse/HBASE-8785 Project: HBase Issue Type: Improvement Affects Versions: 0.95.1 Reporter: Sergey Shelukhin Fix For: 0.95.2 Current ZK session timeout is set to 90sec., and the comment in the doc says: This setting becomes zookeeper's 'maxSessionTimeout'. However, this comment is misleading - it doesn't always become maxSessionTimeout, min(our timeout, maxSessionTimeout) is chosen. Moreover, the default maxSessionTimeout in ZK that I'm looking at is 40s, so this setting doesn't do anything. Additionally, 40s. seems like a lot of time. 1) Should the comment be changed to tell the user to change ZK config if they want higher timeout? 2) Should the setting be revised down? -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8776) port HBASE-8723 to 0.94
[ https://issues.apache.org/jira/browse/HBASE-8776?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690568#comment-13690568 ] Lars Hofhansl commented on HBASE-8776: -- I guess the argument is whether by default we should be able to ride over a RS crash, or just over regular splits/moves. port HBASE-8723 to 0.94 --- Key: HBASE-8776 URL: https://issues.apache.org/jira/browse/HBASE-8776 Project: HBase Issue Type: Bug Affects Versions: 0.94.8 Reporter: Sergey Shelukhin Assignee: Sergey Shelukhin Fix For: 0.94.9 Attachments: HBASE-8776-v0.patch -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8750) MetaServerShutdownHandler stucks if .META. assignment fails in previous attempt
[ https://issues.apache.org/jira/browse/HBASE-8750?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690574#comment-13690574 ] Jimmy Xiang commented on HBASE-8750: +1 MetaServerShutdownHandler stucks if .META. assignment fails in previous attempt --- Key: HBASE-8750 URL: https://issues.apache.org/jira/browse/HBASE-8750 Project: HBase Issue Type: Bug Components: MTTR Affects Versions: 0.95.1 Reporter: Himanshu Vashishtha Assignee: Himanshu Vashishtha Attachments: HBASE-8750-v0.patch, HBASE-8750-v1.patch While running log replay on a one node setup, I killed meta regionserver. The MetaSSH tries to assign the meta table, but it failed as there was no other regionservers to assign to. But the meta server znode was already updated to null. When the assignment fails, the metaSSH is retried. But from the next iteration, it will not try to assign the meta region, but keeps on waiting for meta region. This keeps on going even after regionserver is brought up again. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-5083) Backup HMaster should have http infoport open with link to the active master
[ https://issues.apache.org/jira/browse/HBASE-5083?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Lars Hofhansl updated HBASE-5083: - Attachment: HBASE-5083_trunk.patch Reattaching trunk patch for Hadoop QA Backup HMaster should have http infoport open with link to the active master Key: HBASE-5083 URL: https://issues.apache.org/jira/browse/HBASE-5083 Project: HBase Issue Type: Improvement Components: master Affects Versions: 0.92.0 Reporter: Jonathan Hsieh Assignee: Cody Marcel Fix For: 0.94.9 Attachments: backup_master.png, HBASE-5083.patch, HBASE-5083.patch, HBASE-5083.patch, HBASE-5083.patch, HBASE-5083.patch, HBASE-5083_trunk.patch, HBASE-5083_trunk.patch, master.png, Trunk_Backup_Master.png, Trunk_Master.png Without ssh'ing and jps/ps'ing, it is difficult to see if a backup hmaster is up. It seems like it would be good for a backup hmaster to have a basic web page up on the info port so that users could see that it is up. Also it should probably either provide a link to the active master or automatically forward to the active master. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-5083) Backup HMaster should have http infoport open with link to the active master
[ https://issues.apache.org/jira/browse/HBASE-5083?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Lars Hofhansl updated HBASE-5083: - Status: Open (was: Patch Available) Backup HMaster should have http infoport open with link to the active master Key: HBASE-5083 URL: https://issues.apache.org/jira/browse/HBASE-5083 Project: HBase Issue Type: Improvement Components: master Affects Versions: 0.92.0 Reporter: Jonathan Hsieh Assignee: Cody Marcel Fix For: 0.94.9 Attachments: backup_master.png, HBASE-5083.patch, HBASE-5083.patch, HBASE-5083.patch, HBASE-5083.patch, HBASE-5083.patch, HBASE-5083_trunk.patch, HBASE-5083_trunk.patch, master.png, Trunk_Backup_Master.png, Trunk_Master.png Without ssh'ing and jps/ps'ing, it is difficult to see if a backup hmaster is up. It seems like it would be good for a backup hmaster to have a basic web page up on the info port so that users could see that it is up. Also it should probably either provide a link to the active master or automatically forward to the active master. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-5083) Backup HMaster should have http infoport open with link to the active master
[ https://issues.apache.org/jira/browse/HBASE-5083?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Lars Hofhansl updated HBASE-5083: - Status: Patch Available (was: Open) Backup HMaster should have http infoport open with link to the active master Key: HBASE-5083 URL: https://issues.apache.org/jira/browse/HBASE-5083 Project: HBase Issue Type: Improvement Components: master Affects Versions: 0.92.0 Reporter: Jonathan Hsieh Assignee: Cody Marcel Fix For: 0.94.9 Attachments: backup_master.png, HBASE-5083.patch, HBASE-5083.patch, HBASE-5083.patch, HBASE-5083.patch, HBASE-5083.patch, HBASE-5083_trunk.patch, HBASE-5083_trunk.patch, master.png, Trunk_Backup_Master.png, Trunk_Master.png Without ssh'ing and jps/ps'ing, it is difficult to see if a backup hmaster is up. It seems like it would be good for a backup hmaster to have a basic web page up on the info port so that users could see that it is up. Also it should probably either provide a link to the active master or automatically forward to the active master. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8785) revise zookeeper session timeout setting
[ https://issues.apache.org/jira/browse/HBASE-8785?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690587#comment-13690587 ] Jean-Daniel Cryans commented on HBASE-8785: --- The reason it's so high is that when it's low we get more emails on the mailing list about people killing their clusters doing some huge import on a cluster with default configs. revise zookeeper session timeout setting Key: HBASE-8785 URL: https://issues.apache.org/jira/browse/HBASE-8785 Project: HBase Issue Type: Improvement Affects Versions: 0.95.1 Reporter: Sergey Shelukhin Fix For: 0.95.2 Current ZK session timeout is set to 90sec., and the comment in the doc says: This setting becomes zookeeper's 'maxSessionTimeout'. However, this comment is misleading - it doesn't always become maxSessionTimeout, min(our timeout, maxSessionTimeout) is chosen. Moreover, the default maxSessionTimeout in ZK that I'm looking at is 40s, so this setting doesn't do anything. Additionally, 40s. seems like a lot of time. 1) Should the comment be changed to tell the user to change ZK config if they want higher timeout? 2) Should the setting be revised down? -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8721) Deletes can mask puts that happen after the delete
[ https://issues.apache.org/jira/browse/HBASE-8721?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690588#comment-13690588 ] Lars Hofhansl commented on HBASE-8721: -- But of course we can leave this issue open to indicate that we're still discussing this. Deletes can mask puts that happen after the delete -- Key: HBASE-8721 URL: https://issues.apache.org/jira/browse/HBASE-8721 Project: HBase Issue Type: Improvement Components: regionserver Reporter: Feng Honghua Attachments: HBASE-8721-0.94-V0.patch this fix aims for bug mentioned in http://hbase.apache.org/book.html 5.8.2.1: Deletes mask puts, even puts that happened after the delete was entered. Remember that a delete writes a tombstone, which only disappears after then next major compaction has run. Suppose you do a delete of everything = T. After this you do a new put with a timestamp = T. This put, even if it happened after the delete, will be masked by the delete tombstone. Performing the put will not fail, but when you do a get you will notice the put did have no effect. It will start working again after the major compaction has run. These issues should not be a problem if you use always-increasing versions for new puts to a row. But they can occur even if you do not care about time: just do delete and put immediately after each other, and there is some chance they happen within the same millisecond. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8721) Deletes can mask puts that happen after the delete
[ https://issues.apache.org/jira/browse/HBASE-8721?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690592#comment-13690592 ] Andrew Purtell commented on HBASE-8721: --- I closed this issue because I don't see us ending with a commit here as proposed, and there is follow up on the parts we seem to agree on at HBASE-8770. Deletes can mask puts that happen after the delete -- Key: HBASE-8721 URL: https://issues.apache.org/jira/browse/HBASE-8721 Project: HBase Issue Type: Improvement Components: regionserver Reporter: Feng Honghua Attachments: HBASE-8721-0.94-V0.patch this fix aims for bug mentioned in http://hbase.apache.org/book.html 5.8.2.1: Deletes mask puts, even puts that happened after the delete was entered. Remember that a delete writes a tombstone, which only disappears after then next major compaction has run. Suppose you do a delete of everything = T. After this you do a new put with a timestamp = T. This put, even if it happened after the delete, will be masked by the delete tombstone. Performing the put will not fail, but when you do a get you will notice the put did have no effect. It will start working again after the major compaction has run. These issues should not be a problem if you use always-increasing versions for new puts to a row. But they can occur even if you do not care about time: just do delete and put immediately after each other, and there is some chance they happen within the same millisecond. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-6295) Possible performance improvement in client batch operations: presplit and send in background
[ https://issues.apache.org/jira/browse/HBASE-6295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690658#comment-13690658 ] Jean-Marc Spaggiari commented on HBASE-6295: Numbers for 0.94... ||Test||0.94|| |org.apache.hadoop.hbase.PerformanceEvaluation$FilteredScanTest|543237.9| |org.apache.hadoop.hbase.PerformanceEvaluation$RandomReadTest|1110772.6| |org.apache.hadoop.hbase.PerformanceEvaluation$RandomScanWithRange100Test|20998.3| |org.apache.hadoop.hbase.PerformanceEvaluation$RandomSeekScanTest|159891.1| |org.apache.hadoop.hbase.PerformanceEvaluation$RandomWriteTest|100201.9| |org.apache.hadoop.hbase.PerformanceEvaluation$SequentialWriteTest|38577.08| Again, it's time. So you need to compare with the first tab I sent. If you need I can convert that to rows/time. Possible performance improvement in client batch operations: presplit and send in background Key: HBASE-6295 URL: https://issues.apache.org/jira/browse/HBASE-6295 Project: HBase Issue Type: Improvement Components: Client, Performance Affects Versions: 0.95.2 Reporter: Nicolas Liochon Assignee: Nicolas Liochon Labels: noob Fix For: 0.98.0 Attachments: 6295.v11.patch, 6295.v12.patch, 6295.v14.patch, 6295.v15.patch, 6295.v1.patch, 6295.v2.patch, 6295.v3.patch, 6295.v4.patch, 6295.v5.patch, 6295.v6.patch, 6295.v8.patch, 6295.v9.patch today batch algo is: {noformat} for Operation o: ListOp{ add o to todolist if todolist maxsize or o last in list split todolist per location send split lists to region servers clear todolist wait } {noformat} We could: - create immediately the final object instead of an intermediate array - split per location immediately - instead of sending when the list as a whole is full, send it when there is enough data for a single location It would be: {noformat} for Operation o: ListOp{ get location add o to todo location.todolist if (location.todolist maxLocationSize) send location.todolist to region server clear location.todolist // don't wait, continue the loop } send remaining wait {noformat} It's not trivial to write if you add error management: retried list must be shared with the operations added in the todolist. But it's doable. It's interesting mainly for 'big' writes -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-6295) Possible performance improvement in client batch operations: presplit and send in background
[ https://issues.apache.org/jira/browse/HBASE-6295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690693#comment-13690693 ] Lars Hofhansl commented on HBASE-6295: -- So the RandomReadTest takes ~76 (ms?) in 0.95/trunk but takes ~110 ms in 0.94? I wonder why this is. Possible performance improvement in client batch operations: presplit and send in background Key: HBASE-6295 URL: https://issues.apache.org/jira/browse/HBASE-6295 Project: HBase Issue Type: Improvement Components: Client, Performance Affects Versions: 0.95.2 Reporter: Nicolas Liochon Assignee: Nicolas Liochon Labels: noob Fix For: 0.98.0 Attachments: 6295.v11.patch, 6295.v12.patch, 6295.v14.patch, 6295.v15.patch, 6295.v1.patch, 6295.v2.patch, 6295.v3.patch, 6295.v4.patch, 6295.v5.patch, 6295.v6.patch, 6295.v8.patch, 6295.v9.patch today batch algo is: {noformat} for Operation o: ListOp{ add o to todolist if todolist maxsize or o last in list split todolist per location send split lists to region servers clear todolist wait } {noformat} We could: - create immediately the final object instead of an intermediate array - split per location immediately - instead of sending when the list as a whole is full, send it when there is enough data for a single location It would be: {noformat} for Operation o: ListOp{ get location add o to todo location.todolist if (location.todolist maxLocationSize) send location.todolist to region server clear location.todolist // don't wait, continue the loop } send remaining wait {noformat} It's not trivial to write if you add error management: retried list must be shared with the operations added in the todolist. But it's doable. It's interesting mainly for 'big' writes -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-2600) Change how we do meta tables; from tablename+STARTROW+randomid to instead, tablename+ENDROW+randomid
[ https://issues.apache.org/jira/browse/HBASE-2600?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Alex Newman updated HBASE-2600: --- Assignee: (was: Alex Newman) Change how we do meta tables; from tablename+STARTROW+randomid to instead, tablename+ENDROW+randomid Key: HBASE-2600 URL: https://issues.apache.org/jira/browse/HBASE-2600 Project: HBase Issue Type: Bug Reporter: stack Attachments: 0001-Changed-regioninfo-format-to-use-endKey-instead-of-s.patch, 0001-HBASE-2600.-Change-how-we-do-meta-tables-from-tablen.patch, 0001-HBASE-2600.-Change-how-we-do-meta-tables-from-tablen-v2.patch, 0001-HBASE-2600.-Change-how-we-do-meta-tables-from-tablen-v4.patch, 0001-HBASE-2600.-Change-how-we-do-meta-tables-from-tablen-v6.patch, 0001-HBASE-2600.-Change-how-we-do-meta-tables-from-tablen-v7.2.patch, 0001-HBASE-2600.-Change-how-we-do-meta-tables-from-tablen-v8, 0001-HBASE-2600.-Change-how-we-do-meta-tables-from-tablen-v8.1, 0001-HBASE-2600.-Change-how-we-do-meta-tables-from-tablen-v9.patch, 0001-HBASE-2600.v10.patch, 0001-HBASE-2600-v11.patch, 2600-trunk-01-17.txt, HBASE-2600+5217-Sun-Mar-25-2012-v3.patch, HBASE-2600+5217-Sun-Mar-25-2012-v4.patch, hbase-2600-root.dir.tgz, jenkins.pdf This is an idea that Ryan and I have been kicking around on and off for a while now. If regionnames were made of tablename+endrow instead of tablename+startrow, then in the metatables, doing a search for the region that contains the wanted row, we'd just have to open a scanner using passed row and the first row found by the scan would be that of the region we need (If offlined parent, we'd have to scan to the next row). If we redid the meta tables in this format, we'd be using an access that is natural to hbase, a scan as opposed to the perverse, expensive getClosestRowBefore we currently have that has to walk backward in meta finding a containing region. This issue is about changing the way we name regions. If we were using scans, prewarming client cache would be near costless (as opposed to what we'll currently have to do which is first a getClosestRowBefore and then a scan from the closestrowbefore forward). Converting to the new method, we'd have to run a migration on startup changing the content in meta. Up to this, the randomid component of a region name has been the timestamp of region creation. HBASE-2531 32-bit encoding of regionnames waaay too susceptible to hash clashes proposes changing the randomid so that it contains actual name of the directory in the filesystem that hosts the region. If we had this in place, I think it would help with the migration to this new way of doing the meta because as is, the region name in fs is a hash of regionname... changing the format of the regionname would mean we generate a different hash... so we'd need hbase-2531 to be in place before we could do this change. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-4616) Update hregion encoded name to reduce logic and prevent region collisions in META
[ https://issues.apache.org/jira/browse/HBASE-4616?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Alex Newman updated HBASE-4616: --- Assignee: (was: Alex Newman) Update hregion encoded name to reduce logic and prevent region collisions in META - Key: HBASE-4616 URL: https://issues.apache.org/jira/browse/HBASE-4616 Project: HBase Issue Type: Umbrella Reporter: Alex Newman Attachments: HBASE-4616.patch, HBASE-4616-v2.patch, HBASE-4616-v3.patch -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-5275) Create migration for hbase-2600 meta table rejigger so regions denoted by end row
[ https://issues.apache.org/jira/browse/HBASE-5275?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Alex Newman updated HBASE-5275: --- Assignee: (was: Alex Newman) Create migration for hbase-2600 meta table rejigger so regions denoted by end row - Key: HBASE-5275 URL: https://issues.apache.org/jira/browse/HBASE-5275 Project: HBase Issue Type: Task Reporter: stack Chatting with Alex, we'd do as was done previous where we'll can data from 0.92 and then have a test that unbundles this canned data, migrates it and then makes sure all still works. Migration test would include verification of idempotency; i.e. if migration fails midway, we should be able to rerun it. Canned data should include a meta with splits and WALs to split (migrations usually require clean shutdown so no WALs should be in place but just in case... And replication is reading logs) We were thinking that on startup, we'd check hbase.version file. If not updated, we'd rewrite .META. offline before starting up. In offline mode -- open of the .META. regions -- we'd do a rewrite per row changing the HRegionInfo version from VERSION=1 to VERSION=2. VERSION=2 is the new format HRegionInfo. VERSION=2 will use endrow but it will keep its current encoded name (though it was generated with startrow as input) so we don't have to move stuff around in filesystem. New HRIs subsequent to the migration will be written out as VERSION=3. A VERSION=3 has endrow in its name but the encoded name will be made using startrow+endrow+regionid+tablename rather than just startrow+regionid+tablename as in VERSION=1. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-4895) Change tablename format in meta to be the UUID of the tablename rather than the tablename.
[ https://issues.apache.org/jira/browse/HBASE-4895?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Alex Newman updated HBASE-4895: --- Assignee: (was: Alex Newman) Change tablename format in meta to be the UUID of the tablename rather than the tablename. -- Key: HBASE-4895 URL: https://issues.apache.org/jira/browse/HBASE-4895 Project: HBase Issue Type: Sub-task Reporter: Alex Newman Attachments: 0002-Moved-to-a-uuid-tablename.patch This is something stack and I discussed at hadoop world. Overall I think it cleans thing up significantly. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-5240) HBase internalscanner.next javadoc doesn't imply whether or not results are appended or not
[ https://issues.apache.org/jira/browse/HBASE-5240?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Alex Newman updated HBASE-5240: --- Assignee: (was: Alex Newman) HBase internalscanner.next javadoc doesn't imply whether or not results are appended or not --- Key: HBASE-5240 URL: https://issues.apache.org/jira/browse/HBASE-5240 Project: HBase Issue Type: Bug Reporter: Alex Newman Attachments: 0001-HBASE-5240.-HBase-internalscanner.next-javadoc-doesn.patch Just looking at http://hbase.apache.org/apidocs/org/apache/hadoop/hbase/regionserver/InternalScanner.html. We don't know whether or not the results are appended to results list, or if we always clear it first. boolean next(ListKeyValue results) Grab the next row's worth of values. boolean next(ListKeyValue result, int limit) Grab the next row's worth of values with a limit on the number of values to return. Method Detail next boolean next(ListKeyValue results) throws IOException Grab the next row's worth of values. Parameters: results - return output array Returns: true if more rows exist after this one, false if scanner is done Throws: IOException - e next boolean next(ListKeyValue result, int limit) throws IOException Grab the next row's worth of values with a limit on the number of values to return. Parameters: result - return output array limit - limit on row count to get Returns: true if more rows exist after this one, false if scanner is done Throws: IOException - e -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-5969) HRI.getRegionName/AsString are inconsistent for regions with the old encoding scheme
[ https://issues.apache.org/jira/browse/HBASE-5969?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Alex Newman updated HBASE-5969: --- Assignee: (was: Alex Newman) HRI.getRegionName/AsString are inconsistent for regions with the old encoding scheme Key: HBASE-5969 URL: https://issues.apache.org/jira/browse/HBASE-5969 Project: HBase Issue Type: Bug Affects Versions: 0.90.6, 0.92.1 Reporter: Jean-Daniel Cryans HRI.getRegionName and getRegionNameAsString don't give consistent results for regions created with the old encoding scheme. See Aravind's comment in HBASE-5929 on how a region was appended with .1290583321 when its HRI was queried with getRegionNameAsString and, once passed to HBA, wasn't able to compact it (I checked .META. and it doesn't have that last part so it must come from getRegionName). This one might be a little hard to fix if we're already dependent on the broken behavior of getRegionName. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-5217) Reenable the thrift tests, and add a new one for getRegionInfo
[ https://issues.apache.org/jira/browse/HBASE-5217?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Alex Newman updated HBASE-5217: --- Assignee: (was: Alex Newman) Reenable the thrift tests, and add a new one for getRegionInfo -- Key: HBASE-5217 URL: https://issues.apache.org/jira/browse/HBASE-5217 Project: HBase Issue Type: Improvement Reporter: Alex Newman Priority: Minor Attachments: 0001-Fixing-thrift-tests.patch, 0001-Fixing-thrift-tests-v2.patch, 0002-HBASE-5217.-Reenable-the-thrift-tests-and-add-a-new-.patch, 0002-HBASE-5217-v3.patch, 0002-HBASE-5217-v4.patch, 0002-HBASE-5217-v5.patch, -hbase-posix4e #92 Console [Jenkins].pdf At some point we disabled tests for the thrift server. In addition, it looks like the getRegionInfo no longer functions. I'd like to reenable the tests and add one for getRegionInfo. I had to write this to test my changes in HBASE-2600 anyway. I figured I would break it out. We shouldn't commit it until we have fixed getting the regioninfo from the thriftserver. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-4382) Region encoded name is hash of tablename + start key + regionid (timestamp); should include end key when hashing.
[ https://issues.apache.org/jira/browse/HBASE-4382?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Alex Newman updated HBASE-4382: --- Assignee: (was: Alex Newman) Region encoded name is hash of tablename + start key + regionid (timestamp); should include end key when hashing. - Key: HBASE-4382 URL: https://issues.apache.org/jira/browse/HBASE-4382 Project: HBase Issue Type: Sub-task Reporter: stack Labels: noob Attachments: 0003-Verify-start-and-end-key-are-contained-in-the-encode.patch Seems odd that region encoded name is same for regions if made in same second with same start key tough their end keys are different. It can happen in unit test. Should mix in the end key when coming up w/ the region name encoded name. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-6295) Possible performance improvement in client batch operations: presplit and send in background
[ https://issues.apache.org/jira/browse/HBASE-6295?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690705#comment-13690705 ] Jean-Marc Spaggiari commented on HBASE-6295: 114272ms in trunk 100201ms in 0.94 076990ms in trunk+5295 114798ms im 0.95 So Trunk and 0.95 are about 10% slower than 0.94 (Which I have already figured with previous tests), however, with Nic's patch trunk is faster than all the other versions. On my own cluster I'm doing almost only random writes... So I'm really looking forward to see this in 0.9x ;) Possible performance improvement in client batch operations: presplit and send in background Key: HBASE-6295 URL: https://issues.apache.org/jira/browse/HBASE-6295 Project: HBase Issue Type: Improvement Components: Client, Performance Affects Versions: 0.95.2 Reporter: Nicolas Liochon Assignee: Nicolas Liochon Labels: noob Fix For: 0.98.0 Attachments: 6295.v11.patch, 6295.v12.patch, 6295.v14.patch, 6295.v15.patch, 6295.v1.patch, 6295.v2.patch, 6295.v3.patch, 6295.v4.patch, 6295.v5.patch, 6295.v6.patch, 6295.v8.patch, 6295.v9.patch today batch algo is: {noformat} for Operation o: ListOp{ add o to todolist if todolist maxsize or o last in list split todolist per location send split lists to region servers clear todolist wait } {noformat} We could: - create immediately the final object instead of an intermediate array - split per location immediately - instead of sending when the list as a whole is full, send it when there is enough data for a single location It would be: {noformat} for Operation o: ListOp{ get location add o to todo location.todolist if (location.todolist maxLocationSize) send location.todolist to region server clear location.todolist // don't wait, continue the loop } send remaining wait {noformat} It's not trivial to write if you add error management: retried list must be shared with the operations added in the todolist. But it's doable. It's interesting mainly for 'big' writes -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8656) Rpc call may not be notified in SecureClient
[ https://issues.apache.org/jira/browse/HBASE-8656?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690724#comment-13690724 ] Lars Hofhansl commented on HBASE-8656: -- +1 on patch. Makes sense and brings it (more) in line with HBaseClient. Rpc call may not be notified in SecureClient Key: HBASE-8656 URL: https://issues.apache.org/jira/browse/HBASE-8656 Project: HBase Issue Type: Bug Components: Client, IPC/RPC, security Affects Versions: 0.94.7 Reporter: cuijianwei Assignee: cuijianwei Priority: Critical Fix For: 0.94.9 Attachments: HBASE-8656-0.94-v1.txt In SecureClient.java, rpc responses will be processed by receiveResponse() which looks like: {code} try { int id = in.readInt();// try to read an id if (LOG.isDebugEnabled()) LOG.debug(getName() + got value # + id); Call call = calls.remove(id); int state = in.readInt(); // read call status if (LOG.isDebugEnabled()) { LOG.debug(call #+id+ state is + state); } if (state == Status.SUCCESS.state) { Writable value = ReflectionUtils.newInstance(valueClass, conf); value.readFields(in); // read value if (LOG.isDebugEnabled()) { LOG.debug(call #+id+, response is:\n+value.toString()); } // it's possible that this call may have been cleaned up due to a RPC // timeout, so check if it still exists before setting the value. if (call != null) { call.setValue(value); } } else if (state == Status.ERROR.state) { if (call != null) { call.setException(new RemoteException(WritableUtils.readString(in), WritableUtils .readString(in))); } } else if (state == Status.FATAL.state) { // Close the connection markClosed(new RemoteException(WritableUtils.readString(in), WritableUtils.readString(in))); } } catch (IOException e) { if (e instanceof SocketTimeoutException remoteId.rpcTimeout 0) { // Clean up open calls but don't treat this as a fatal condition, // since we expect certain responses to not make it by the specified // {@link ConnectionId#rpcTimeout}. closeException = e; } else { // Since the server did not respond within the default ping interval // time, treat this as a fatal condition and close this connection markClosed(e); } } finally { if (remoteId.rpcTimeout 0) { cleanupCalls(remoteId.rpcTimeout); } } } {code} In above code, in the try block, the call will be firstly removed from call map by: {code} Call call = calls.remove(id); {code} There may be two cases leading the call couldn't be notified and the invoking thread will wait forever. Firstly, if the returned status is Status.FATAL.state by: {code} int state = in.readInt(); // read call status {code} The code will come into: {code} } else if (state == Status.FATAL.state) { // Close the connection markClosed(new RemoteException(WritableUtils.readString(in), WritableUtils.readString(in))); } {code} Here, the SecureConnection is marked as closed and all rpc calls in call map of this connection will be notified to receive an exception. However, the current rpc call has been removed from the call map, it won't be notified. Secondly, after the call has been removed by: {code} Call call = calls.remove(id); {code} If we encounter any exception before the 'try' block finished, the code will come into 'catch' and 'finally' block, neither 'catch' block nor 'finally' block will notify the rpc call because it has been removed from call map. Compared with receiveResponse() in HBaseClient.java, it may be better to get the rpc call from call map and remove it at the end of the 'try' block. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8143) HBase on Hadoop 2 with local short circuit reads (ssr) causes OOM
[ https://issues.apache.org/jira/browse/HBASE-8143?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Lars Hofhansl updated HBASE-8143: - Priority: Major (was: Critical) Fix Version/s: (was: 0.94.9) 0.94.10 HBase on Hadoop 2 with local short circuit reads (ssr) causes OOM -- Key: HBASE-8143 URL: https://issues.apache.org/jira/browse/HBASE-8143 Project: HBase Issue Type: Bug Components: hadoop2 Affects Versions: 0.98.0, 0.94.7, 0.95.0 Reporter: Enis Soztutar Assignee: Enis Soztutar Fix For: 0.98.0, 0.95.2, 0.94.10 Attachments: OpenFileTest.java We've run into an issue with HBase 0.94 on Hadoop2, with SSR turned on that the memory usage of the HBase process grows to 7g, on an -Xmx3g, after some time, this causes OOM for the RSs. Upon further investigation, I've found out that we end up with 200 regions, each having 3-4 store files open. Under hadoop2 SSR, BlockReaderLocal allocates DirectBuffers, which is unlike HDFS 1 where there is no direct buffer allocation. It seems that there is no guards against the memory used by local buffers in hdfs 2, and having a large number of open files causes multiple GB of memory to be consumed from the RS process. This issue is to further investigate what is going on. Whether we can limit the memory usage in HDFS, or HBase, and/or document the setup. Possible mitigation scenarios are: - Turn off SSR for Hadoop 2 - Ensure that there is enough unallocated memory for the RS based on expected # of store files - Ensure that there is lower number of regions per region server (hence number of open files) Stack trace: {code} org.apache.hadoop.hbase.DroppedSnapshotException: region: IntegrationTestLoadAndVerify,yC^P\xD7\x945\xD4,1363388517630.24655343d8d356ef708732f34cfe8946. at org.apache.hadoop.hbase.regionserver.HRegion.internalFlushcache(HRegion.java:1560) at org.apache.hadoop.hbase.regionserver.HRegion.internalFlushcache(HRegion.java:1439) at org.apache.hadoop.hbase.regionserver.HRegion.flushcache(HRegion.java:1380) at org.apache.hadoop.hbase.regionserver.MemStoreFlusher.flushRegion(MemStoreFlusher.java:449) at org.apache.hadoop.hbase.regionserver.MemStoreFlusher.flushOneForGlobalPressure(MemStoreFlusher.java:215) at org.apache.hadoop.hbase.regionserver.MemStoreFlusher.access$500(MemStoreFlusher.java:63) at org.apache.hadoop.hbase.regionserver.MemStoreFlusher$FlushHandler.run(MemStoreFlusher.java:237) at java.lang.Thread.run(Thread.java:662) Caused by: java.lang.OutOfMemoryError: Direct buffer memory at java.nio.Bits.reserveMemory(Bits.java:632) at java.nio.DirectByteBuffer.init(DirectByteBuffer.java:97) at java.nio.ByteBuffer.allocateDirect(ByteBuffer.java:288) at org.apache.hadoop.hdfs.util.DirectBufferPool.getBuffer(DirectBufferPool.java:70) at org.apache.hadoop.hdfs.BlockReaderLocal.init(BlockReaderLocal.java:315) at org.apache.hadoop.hdfs.BlockReaderLocal.newBlockReader(BlockReaderLocal.java:208) at org.apache.hadoop.hdfs.DFSClient.getLocalBlockReader(DFSClient.java:790) at org.apache.hadoop.hdfs.DFSInputStream.getBlockReader(DFSInputStream.java:888) at org.apache.hadoop.hdfs.DFSInputStream.blockSeekTo(DFSInputStream.java:455) at org.apache.hadoop.hdfs.DFSInputStream.readWithStrategy(DFSInputStream.java:645) at org.apache.hadoop.hdfs.DFSInputStream.read(DFSInputStream.java:689) at java.io.DataInputStream.readFully(DataInputStream.java:178) at org.apache.hadoop.hbase.io.hfile.FixedFileTrailer.readFromStream(FixedFileTrailer.java:312) at org.apache.hadoop.hbase.io.hfile.HFile.pickReaderVersion(HFile.java:543) at org.apache.hadoop.hbase.io.hfile.HFile.createReaderWithEncoding(HFile.java:589) at org.apache.hadoop.hbase.regionserver.StoreFile$Reader.init(StoreFile.java:1261) at org.apache.hadoop.hbase.regionserver.StoreFile.open(StoreFile.java:512) at org.apache.hadoop.hbase.regionserver.StoreFile.createReader(StoreFile.java:603) at org.apache.hadoop.hbase.regionserver.Store.validateStoreFile(Store.java:1568) at org.apache.hadoop.hbase.regionserver.Store.commitFile(Store.java:845) at org.apache.hadoop.hbase.regionserver.Store.access$500(Store.java:109) at org.apache.hadoop.hbase.regionserver.Store$StoreFlusherImpl.commit(Store.java:2209) at org.apache.hadoop.hbase.regionserver.HRegion.internalFlushcache(HRegion.java:1541) {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please
[jira] [Updated] (HBASE-8656) Rpc call may not be notified in SecureClient
[ https://issues.apache.org/jira/browse/HBASE-8656?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Lars Hofhansl updated HBASE-8656: - Priority: Major (was: Critical) Not critical, though. Rpc call may not be notified in SecureClient Key: HBASE-8656 URL: https://issues.apache.org/jira/browse/HBASE-8656 Project: HBase Issue Type: Bug Components: Client, IPC/RPC, security Affects Versions: 0.94.7 Reporter: cuijianwei Assignee: cuijianwei Fix For: 0.94.9 Attachments: HBASE-8656-0.94-v1.txt In SecureClient.java, rpc responses will be processed by receiveResponse() which looks like: {code} try { int id = in.readInt();// try to read an id if (LOG.isDebugEnabled()) LOG.debug(getName() + got value # + id); Call call = calls.remove(id); int state = in.readInt(); // read call status if (LOG.isDebugEnabled()) { LOG.debug(call #+id+ state is + state); } if (state == Status.SUCCESS.state) { Writable value = ReflectionUtils.newInstance(valueClass, conf); value.readFields(in); // read value if (LOG.isDebugEnabled()) { LOG.debug(call #+id+, response is:\n+value.toString()); } // it's possible that this call may have been cleaned up due to a RPC // timeout, so check if it still exists before setting the value. if (call != null) { call.setValue(value); } } else if (state == Status.ERROR.state) { if (call != null) { call.setException(new RemoteException(WritableUtils.readString(in), WritableUtils .readString(in))); } } else if (state == Status.FATAL.state) { // Close the connection markClosed(new RemoteException(WritableUtils.readString(in), WritableUtils.readString(in))); } } catch (IOException e) { if (e instanceof SocketTimeoutException remoteId.rpcTimeout 0) { // Clean up open calls but don't treat this as a fatal condition, // since we expect certain responses to not make it by the specified // {@link ConnectionId#rpcTimeout}. closeException = e; } else { // Since the server did not respond within the default ping interval // time, treat this as a fatal condition and close this connection markClosed(e); } } finally { if (remoteId.rpcTimeout 0) { cleanupCalls(remoteId.rpcTimeout); } } } {code} In above code, in the try block, the call will be firstly removed from call map by: {code} Call call = calls.remove(id); {code} There may be two cases leading the call couldn't be notified and the invoking thread will wait forever. Firstly, if the returned status is Status.FATAL.state by: {code} int state = in.readInt(); // read call status {code} The code will come into: {code} } else if (state == Status.FATAL.state) { // Close the connection markClosed(new RemoteException(WritableUtils.readString(in), WritableUtils.readString(in))); } {code} Here, the SecureConnection is marked as closed and all rpc calls in call map of this connection will be notified to receive an exception. However, the current rpc call has been removed from the call map, it won't be notified. Secondly, after the call has been removed by: {code} Call call = calls.remove(id); {code} If we encounter any exception before the 'try' block finished, the code will come into 'catch' and 'finally' block, neither 'catch' block nor 'finally' block will notify the rpc call because it has been removed from call map. Compared with receiveResponse() in HBaseClient.java, it may be better to get the rpc call from call map and remove it at the end of the 'try' block. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8619) [HBase Client]: Improve client to retry if master is down when requesting getHTableDescriptor
[ https://issues.apache.org/jira/browse/HBASE-8619?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Lars Hofhansl updated HBASE-8619: - Fix Version/s: (was: 0.94.9) 0.94.10 [HBase Client]: Improve client to retry if master is down when requesting getHTableDescriptor - Key: HBASE-8619 URL: https://issues.apache.org/jira/browse/HBASE-8619 Project: HBase Issue Type: Bug Components: Client Affects Versions: 0.94.8 Reporter: Aleksandr Shulman Assignee: Elliott Clark Priority: Minor Fix For: 0.94.10 In our rolling upgrade testing, running ImportTsv failed in the job submission phase when the master was down. This was when the master was failing over to the backup master. In this case, a retry would have been helpful and made sure that the job would get submitted. A good solution would be to refresh the master information before placing the call to getHTableDescriptor. Command: {code} sudo -u hbase hbase org.apache.hadoop.hbase.mapreduce.ImportTsv -Dimporttsv.columns=HBASE_ROW_KEY,c1,c2,c3 -Dimporttsv.bulk.output=/user/hbase/storeFiles2_2/import2_table1369439156 import2_table1369439156 /user/hbase/tsv2{code} Here is the stack trace: {code} 13/05/24 16:55:49 INFO compress.CodecPool: Got brand-new compressor [.deflate] 16:45:44 Exception in thread main java.lang.reflect.UndeclaredThrowableException 16:45:44 at $Proxy7.getHTableDescriptors(Unknown Source) 16:45:44 at org.apache.hadoop.hbase.client.HConnectionManager$HConnectionImplementation.getHTableDescriptor(HConnectionManager.java:1861) 16:45:44 at org.apache.hadoop.hbase.client.HTable.getTableDescriptor(HTable.java:440) 16:45:44 at org.apache.hadoop.hbase.mapreduce.HFileOutputFormat.configureCompression(HFileOutputFormat.java:458) 16:45:44 at org.apache.hadoop.hbase.mapreduce.HFileOutputFormat.configureIncrementalLoad(HFileOutputFormat.java:375) 16:45:44 at org.apache.hadoop.hbase.mapreduce.ImportTsv.createSubmittableJob(ImportTsv.java:280) 16:45:44 at org.apache.hadoop.hbase.mapreduce.ImportTsv.main(ImportTsv.java:424) 16:45:44 Caused by: java.io.IOException: Call to hbase-rolling-6.ent.cloudera.com/10.20.186.99:22001 failed on local exception: java.io.EOFException 16:45:44 at org.apache.hadoop.hbase.ipc.HBaseClient.wrapException(HBaseClient.java:1030) 16:45:44 at org.apache.hadoop.hbase.ipc.HBaseClient.call(HBaseClient.java:999) 16:45:44 at org.apache.hadoop.hbase.ipc.WritableRpcEngine$Invoker.invoke(WritableRpcEngine.java:86) 16:45:44 ... 7 more 16:45:44 Caused by: java.io.EOFException 16:45:44 at java.io.DataInputStream.readInt(DataInputStream.java:375) 16:45:44 at org.apache.hadoop.hbase.ipc.HBaseClient$Connection.receiveResponse(HBaseClient.java:646) 16:45:44 at org.apache.hadoop.hbase.ipc.HBaseClient$Connection.run(HBaseClient.java:580){code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8752) Backport HBASE-6466 to 0.94
[ https://issues.apache.org/jira/browse/HBASE-8752?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Lars Hofhansl updated HBASE-8752: - Fix Version/s: (was: 0.94.9) 0.94.10 Backport HBASE-6466 to 0.94 --- Key: HBASE-8752 URL: https://issues.apache.org/jira/browse/HBASE-8752 Project: HBase Issue Type: Improvement Components: regionserver Affects Versions: 0.94.8 Reporter: Richard Ding Assignee: Richard Ding Priority: Minor Fix For: 0.94.10 Attachments: HBASE-8752.patch 0.94 already supports multi-thread compaction. It will be good it also supports multi-thread memstore flush, so that users can tune the number of threads for both compaction and flushing when running a heavy-write load. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8771) ensure replication_scope's value is either local(0) or global(1)
[ https://issues.apache.org/jira/browse/HBASE-8771?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Lars Hofhansl updated HBASE-8771: - Fix Version/s: (was: 0.94.9) 0.94.10 Still discussing. Moving out. ensure replication_scope's value is either local(0) or global(1) Key: HBASE-8771 URL: https://issues.apache.org/jira/browse/HBASE-8771 Project: HBase Issue Type: Bug Components: Replication Affects Versions: 0.94.8 Reporter: Demai Ni Priority: Minor Fix For: 0.94.10 Attachments: HBASE-8771-0.94.8-v0.patch For replication_scope, only two values are meaningful: {code} public static final int REPLICATION_SCOPE_LOCAL = 0; public static final int REPLICATION_SCOPE_GLOBAL = 1; {code} However, there is no checking for that, so currently user can set it to any integer value. And all non-zero value will be treated as 1(GLOBAL). This jira is to add a checking in HColumnDescriptor#setScope() so that only 0 and 1 will be accept during create_table or alter_table. In the future, we can leverage replication_scope to store for info. For example: -1: A columnfam is replicated from another cluster in MASTER_SLAVE setup (i.e readonly) 2 : A columnfam is set MASTER_MASTER Probably a major improve JIRA is needed for the future usage. It will be good to ensure the scope value at this moment. {code:title=Testing|borderStyle=solid} hbase(main):002:0 create 't1_dn',{NAME='cf1',REPLICATION_SCOPE=2} ERROR: java.lang.IllegalArgumentException: Replication Scope must be either 0(local) or 1(global) ... hbase(main):004:0 alter 't1_dn',{NAME='cf1',REPLICATION_SCOPE=-1} ERROR: java.lang.IllegalArgumentException: Replication Scope must be either 0(local) or 1(global) ... {code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8752) Backport HBASE-6466 to 0.94
[ https://issues.apache.org/jira/browse/HBASE-8752?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690732#comment-13690732 ] Lars Hofhansl commented on HBASE-8752: -- Thanks [~rding]. Did you performance test this? I remember in trunk there locking issue that at first prevented the extra threads from causing any performance improvements. Backport HBASE-6466 to 0.94 --- Key: HBASE-8752 URL: https://issues.apache.org/jira/browse/HBASE-8752 Project: HBase Issue Type: Improvement Components: regionserver Affects Versions: 0.94.8 Reporter: Richard Ding Assignee: Richard Ding Priority: Minor Fix For: 0.94.9 Attachments: HBASE-8752.patch 0.94 already supports multi-thread compaction. It will be good it also supports multi-thread memstore flush, so that users can tune the number of threads for both compaction and flushing when running a heavy-write load. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Created] (HBASE-8786) Creating a table with a Bloom filter on the shell is broken.
Elliott Clark created HBASE-8786: Summary: Creating a table with a Bloom filter on the shell is broken. Key: HBASE-8786 URL: https://issues.apache.org/jira/browse/HBASE-8786 Project: HBase Issue Type: Bug Components: shell Affects Versions: 0.95.1 Reporter: Elliott Clark Assignee: Elliott Clark {code}create 'tsdb', {NAME = 't', VERSIONS = 1, BLOOMFILTER = 'row'}{code} results in: {code}ERROR: uninitialized constant Java::OrgApacheHadoopHbaseRegionserver::StoreFile::BloomType{code} -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8595) Add rename operation in hbase shell
[ https://issues.apache.org/jira/browse/HBASE-8595?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Lars Hofhansl updated HBASE-8595: - Fix Version/s: (was: 0.94.9) 0.94.10 Add rename operation in hbase shell --- Key: HBASE-8595 URL: https://issues.apache.org/jira/browse/HBASE-8595 Project: HBase Issue Type: New Feature Components: shell Affects Versions: 0.94.8, 0.95.1 Reporter: Aleksandr Shulman Assignee: Aleksandr Shulman Priority: Minor Fix For: 0.95.2, 0.94.10 Attachments: HBASE-8595-v0.patch We can use a set of snapshot commands to elegantly rename a table. It would be nice to wrap all those commands in a single call. http://hbase.apache.org/book.html#table.rename Also -- the documentation is missing the last step where the original table needs to be deleted. I can add that to the docbook. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8329) Limit compaction speed
[ https://issues.apache.org/jira/browse/HBASE-8329?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690737#comment-13690737 ] Sergey Shelukhin commented on HBASE-8329: - +1 Limit compaction speed -- Key: HBASE-8329 URL: https://issues.apache.org/jira/browse/HBASE-8329 Project: HBase Issue Type: Improvement Components: Compaction Reporter: binlijin Attachments: HBASE-8329-2-trunk.patch, HBASE-8329-3-trunk.patch, HBASE-8329-4-trunk.patch, HBASE-8329-trunk.patch There is no speed or resource limit for compaction,I think we should add this feature especially when request burst. -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8565) stop-hbase.sh clean up: backup master
[ https://issues.apache.org/jira/browse/HBASE-8565?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Lars Hofhansl updated HBASE-8565: - Fix Version/s: (was: 0.94.9) 0.94.10 stop-hbase.sh clean up: backup master - Key: HBASE-8565 URL: https://issues.apache.org/jira/browse/HBASE-8565 Project: HBase Issue Type: Bug Components: master, scripts Affects Versions: 0.94.7, 0.95.0 Reporter: Jerry He Priority: Minor Fix For: 0.98.0, 0.95.2, 0.94.10 In stop-hbase.sh: {code} # TODO: store backup masters in ZooKeeper and have the primary send them a shutdown message # stop any backup masters $bin/hbase-daemons.sh --config ${HBASE_CONF_DIR} \ --hosts ${HBASE_BACKUP_MASTERS} stop master-backup {code} After HBASE-5213, stop-hbase.sh - hbase master stop will bring up the backup master too via the cluster status znode. We should not need the above code anymore. Another issue happens when the current master died and the backup master became the active master. {code} nohup nice -n ${HBASE_NICENESS:-0} $HBASE_HOME/bin/hbase \ --config ${HBASE_CONF_DIR} \ master stop $@ $logout 21 /dev/null waitForProcessEnd `cat $pid` 'stop-master-command' {code} We can still issue 'hbase-stop.sh' from the old master. stop-hbase.sh - hbase master stop - look for active master - request shutdown This process still works. But the waitForProcessEnd statement will not work since the local master pid is not relevant anymore. What is the best way in the this case? -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8779) add mutateRow method support to thrift2
[ https://issues.apache.org/jira/browse/HBASE-8779?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Lars Hofhansl updated HBASE-8779: - Fix Version/s: (was: 0.94.9) 0.94.10 add mutateRow method support to thrift2 --- Key: HBASE-8779 URL: https://issues.apache.org/jira/browse/HBASE-8779 Project: HBase Issue Type: New Feature Components: Thrift Reporter: duanhongyi Fix For: 0.94.10 Attachments: 0.94.patch examples py: TPut put = TPut() m1 = TMutation(put=put) TDelete single_delete = TDelete() m2 = TMutation(singleDelete=single_delete) row_mu = TRowMutations(row,[m1,m2]) thbase_service.mutateRow(table,row_mu) # atomically on a single row -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8773) Can be setup the COMPRESSION base on HTable in meta or user set in Configuration
[ https://issues.apache.org/jira/browse/HBASE-8773?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Lars Hofhansl updated HBASE-8773: - Fix Version/s: (was: 0.94.9) 0.94.10 Can be setup the COMPRESSION base on HTable in meta or user set in Configuration Key: HBASE-8773 URL: https://issues.apache.org/jira/browse/HBASE-8773 Project: HBase Issue Type: New Feature Components: HFile Affects Versions: 0.94.8 Reporter: jay wong Fix For: 0.94.10 Attachments: HBASE-8773.patch when I want create HFile with the ImportTsv. I found that if i set the compression in the Configuration or not, It's always invalid。 It because of the method 'configureIncrementalLoad' in HFileOutputFormat will set the compression with the HTable in meta. So if add a configuration to switch use set compression with HTable or Not -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8776) port HBASE-8723 to 0.94
[ https://issues.apache.org/jira/browse/HBASE-8776?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690739#comment-13690739 ] Sergey Shelukhin commented on HBASE-8776: - I'd say we should :) port HBASE-8723 to 0.94 --- Key: HBASE-8776 URL: https://issues.apache.org/jira/browse/HBASE-8776 Project: HBase Issue Type: Bug Affects Versions: 0.94.8 Reporter: Sergey Shelukhin Assignee: Sergey Shelukhin Fix For: 0.94.9 Attachments: HBASE-8776-v0.patch -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Updated] (HBASE-8773) Can be setup the COMPRESSION base on HTable in meta or user set in Configuration
[ https://issues.apache.org/jira/browse/HBASE-8773?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ] Lars Hofhansl updated HBASE-8773: - Priority: Minor (was: Major) Can be setup the COMPRESSION base on HTable in meta or user set in Configuration Key: HBASE-8773 URL: https://issues.apache.org/jira/browse/HBASE-8773 Project: HBase Issue Type: New Feature Components: HFile Affects Versions: 0.94.8 Reporter: jay wong Priority: Minor Fix For: 0.94.10 Attachments: HBASE-8773.patch when I want create HFile with the ImportTsv. I found that if i set the compression in the Configuration or not, It's always invalid。 It because of the method 'configureIncrementalLoad' in HFileOutputFormat will set the compression with the HTable in meta. So if add a configuration to switch use set compression with HTable or Not -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira
[jira] [Commented] (HBASE-8785) revise zookeeper session timeout setting
[ https://issues.apache.org/jira/browse/HBASE-8785?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanelfocusedCommentId=13690741#comment-13690741 ] Sergey Shelukhin commented on HBASE-8785: - I see it's changed to 90s on trunk. Regardless, as I said by default it won't apply because ZK default is 40s, and minimum is taken. revise zookeeper session timeout setting Key: HBASE-8785 URL: https://issues.apache.org/jira/browse/HBASE-8785 Project: HBase Issue Type: Improvement Affects Versions: 0.95.1 Reporter: Sergey Shelukhin Fix For: 0.95.2 Current ZK session timeout is set to 90sec., and the comment in the doc says: This setting becomes zookeeper's 'maxSessionTimeout'. However, this comment is misleading - it doesn't always become maxSessionTimeout, min(our timeout, maxSessionTimeout) is chosen. Moreover, the default maxSessionTimeout in ZK that I'm looking at is 40s, so this setting doesn't do anything. Additionally, 40s. seems like a lot of time. 1) Should the comment be changed to tell the user to change ZK config if they want higher timeout? 2) Should the setting be revised down? -- This message is automatically generated by JIRA. If you think it was sent incorrectly, please contact your JIRA administrators For more information on JIRA, see: http://www.atlassian.com/software/jira