[ 
https://issues.apache.org/jira/browse/HBASE-7236?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13507594#comment-13507594
 ] 

Sergey Shelukhin commented on HBASE-7236:
-----------------------------------------

[~stack]
bq. IIUC, you are expanding CompoundConfiguration to do table and 'overrides'?
Currently it already has metadata, I am adding overrides. The method name is 
special only because Java won't allow two method differing only by typename 
part of the parameter. It's no different than other "add"-s :)

bq. How would this help us get to changing configuration on the fly? Looks like 
it doesn't change our current story. CompoundConfiguration is setup in HRegion 
or ColumnFamily setup still..
It doesn't (well, other than setting overrides after disabling the table, which 
is more dynamic than XML config replacement).
For XML config, there's HBASE-3909 to solve that problem; for column updates, 
I'd prefer to make online-alter "bulletproof" - that way we'd get this config 
to be fully dynamic as a side benefit.
Two ideas we had was tracking schema version on master and server, and 
validating on master what server has, but that's inconvenient right now given 
how it's stored, and may lead to other race conditions; or using new 2pc-ish 
barrier mechanism that is being introduced for snapshots, somehow.
Regardless, in this JIRA I do not aim to solve this problem...


bq. If we start to record metadata on a table, say column types, would we use 
this mechanism?
You mean CompoundConfiguration mechanism, or overrides mechanism?
Not overrides (they are intended for config), but as CompoundConfiguration is 
already used for cf metadata, I don't see why not use it also for table 
metadata if appropriate.

bq. How would 'overrides' be specified in the shell say? (Patch doesn't seem to 
say) We have means of altering table and column descriptors. Where would 
'overrides' go?
Similarly to metadata. I am going to rename "CONFIG" to something indicating 
it's actually user metadata, and use name like CONFIGURATION_OVERRIDES - a 
separate Ruby hash with values.
Didn't want to go thru it before confirmation on the viability of this approach 
:)

bq. bq. however, making it explicit and separate from miscellaneous metadata 
would be cleaner imho.
bq. Can you say more on above?
See below.
bq. HTableDescriptor and HColumnDescriptor dictionaries are key/value maps that 
get persisted into the filesystem when changed. We read them them throughout 
the codebase and we list them in master UIs, etc. Will they blow up under this 
new use case? HTD and HCD are mostly schema with a little config. This 
direction would seem to be using these descriptors to add table or column 
scoped configs. Should we be working to undo schema and config conflation 
rather than compound it?
They may blow up (depending on how much config one wants to override), this is 
one of the reasons I want to keep it separate, to have finer grained control 
for things like UI or shell.
Do you suggest we keep them even more separate, e.g. separate 
class/serialization mechanism? It seems it would add complexity, esp. given 
that some of the existing METADATA is config additions/overrides with custom 
names, essentially.
Can you elaborate on example mechanism (e.g. meta-like table for tables/cfs, 
different file from tableinfo, ...)?

The other thing about the current map is that it's already multi-purpose (see 
HBASE-7237; in the discussion in the shell issue when I wanted to keep CONFIG 
separate from system stuff I didn't realize they were still stored in the same 
map in HTD).
Dumping config overrides there in addition to system metadata and user metadata 
is inelegant imho.

Finally, the third thing is that if it's separate we can have stricter 
validation - e.g. whitelist what can and cannot be overridden, or even validate 
values.
                
> add per-table/per-cf compaction configuration via metadata
> ----------------------------------------------------------
>
>                 Key: HBASE-7236
>                 URL: https://issues.apache.org/jira/browse/HBASE-7236
>             Project: HBase
>          Issue Type: New Feature
>          Components: Compaction
>    Affects Versions: 0.96.0
>            Reporter: Sergey Shelukhin
>            Assignee: Sergey Shelukhin
>         Attachments: HBASE-7236-PROTOTYPE.patch, HBASE-7236-PROTOTYPE.patch
>
>
> Regardless of the compaction policy, it makes sense to have separate 
> configuration for compactions for different tables and column families, as 
> their access patterns and workloads can be different. In particular, for 
> tiered compactions that are being ported from 0.89-fb branch it is necessary 
> to have, to use it properly.
> We might want to add support for compaction configuration via metadata on 
> table/cf.

--
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

Reply via email to