I'm looking at extending HBASE-6721 to apply it to WALs such that WALs are created & replicated within an RSGroup. This extends multi-tenancy to WALs also, and not just cover Hbase data. I was working out of 1.2.x code.
The approach I'm using is - Strategy interface for WAL placement on the filesystem. Default to delegate it to respective filesystem (which is the old behavior). FavoredNode strategy computes the favoured nodes from the RSGroup memberships. - FavoredNode strategy requires instance of hbase.Server, to get the current server name and an instance of Zookeeper watch to listen for changes to RSGroup memberships - The strategy is initialised in HRegionServer init and set in a static field in DefaultWALProvider - DefaultWALProvider.Writer takes the strategy in its init, and invokes it before output stream creation and passes the favored nodes information to DistributedFileSystem.create() Few questions - Any glaring miss in the approach? - I have hesitation in setting the strategy in static field in DefaultWALProvider. I would have preferred it to be passed in "init" itself, but that change seems to be too expansive. - Also, this introduces the dependency of server/zookeeper instance inside the WAL code path, which seems to be not there till now. Is that an explicit choice to keep them separate? - If it seems like a useful change, should I open a JIRA and add patches and seek feedback there? -- Nikhil Bafna | 8095234263
