Changing the configurations is a big and very touchy job. It is touchy in
that it is very exposed to the users and many many applications assume the
configuration is dealt with in particular ways. It is a requirement to
maintain compatibility and thus that needs to be factored in to the work.
Furthermore, you not only have the local configuration, but the way that
configuration is done between the clients, servers, and mapreduce tasks.
Even little changes in the past (eg. making a copy of a configuration at
one spot) have broken both users and frameworks built on top (eg. Pig,
Hive, Oozie).

As Bobby said, Configuration is absolutely not a singleton. Many of the
servers (JobTracker, Oozie, etc.) use configurations to keep track of the
different contexts for each user. You could go to a dependency injection
approach based on Guice to make it pluggable and yet context sensitive.

-- Owen

Reply via email to