You are viewing a plain text version of this content. The canonical link for it is here.
Posted to common-commits@hadoop.apache.org by Apache Wiki <wi...@apache.org> on 2012/02/21 23:54:18 UTC

[Hadoop Wiki] Update of "HBaseWireCompatibility20120221" by ToddLipcon

Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Hadoop Wiki" for change notification.

The "HBaseWireCompatibility20120221" page has been changed by ToddLipcon:
http://wiki.apache.org/hadoop/HBaseWireCompatibility20120221

New page:
= HBase wire compatibility meeting notes =
2/21/2012

== Versioning: ==
=== 0.94: just make it a performance release ===
keep wire compatibility with 92 for:
- 0.92 clients to 0.94 servers
- 0.94 clients to 0.92 servers
(we’ll check if this is possible, but we think so.. maybe one or two spots. Lars and Stack to investigate)
- rolling upgrade within the cluster for advanced users only (eg they have to turn off prefix compression during upgrade, etc)

=== 0.96: “the singularity” ===
- aim to have stuff moved over to protobuf at this time, and probably remove old writable-based calls.
- try to remove ROOT, maybe HBASE-2600 if it got done?
- migration: perhaps offline, but has to be in-place, and preferably automatically done (eg master rewrites META)

=== ideas for compatibility of old clients to 0.96 (to help people move to singularity): ===
- maybe we backport a forward-compatible client onto 0.94 or 0.92 releases (rather than trying to make 0.96 back-compatible). eg. if we remove ROOT, add a forward-compatibility path which can use either ROOTless or with-ROOT, make people upgrade to 0.94.X client, then can upgrade server

== Tasks: ==
=== Core types: ===
- KeyValue, HRegionInfo, HRegionLocation, HTableDescriptor, ServerName,
- some deprecated but still all over: HServerLoad?
- ClusterStatus


=== Actual conversion to protobuf RPCs: ===
- HRegionInterface - Jimmy
- HMasterInterface - Greg
- HMasterRegionInterface - Greg
(while doing this, collapse RPCs where necessary)

=== Zookeeper data: ===
- Client-facing stuff: data in ROOT region location node, master address node (Stack)
- Cluster-internal stuff:
  - /hbase/regionservers znodes
  - distributed log splitting status, etc

=== Filters: (tricky because they’re user-definable?) ===
- todd to investigate

=== Coprocessors: ===
- this is somewhat tricky
- Enis to investigate

=== Security: ===
 salesforce folks to investigate (might come for free)

=== Replication: ===
- there’s stuff in ZK, also uses client APIs (Lars/Chris/Jesse)

=== RPC payload + envelope ===
-  Devaraj
- (move the headers, etc to Protobuf)

=== Management stuff for multi-version: ===
- add version string for each node in the cluster to ZK
- display this info on web UIs, JMX, etc

=== HBase shell: (Chris) ===
- has to know to deserialize the proto types instead, for example? we’re not sure if it ever reads/deserializes stuff directly

=== On-disk formats: ===
- eg reference files use Writable
- HLog: HLogKey, WALEdits, etc (affects unclean upgrade, and replication)
- HFile metadata - currently it’s a MapWritable - need to figure out how to keep this back-compat against Writable
- /hbase/hbase.version file

=== How to integrate with Thrift? (facebook to investigate) ===