private synchronized AbstractMapReduceContextBuilder getBuilder(CConfiguration conf) {
if (contextBuilder == null) {
String mrFramework = taskContext.getConfiguration().get(MRConfig.FRAMEWORK_NAME, MRConfig.LOCAL_FRAMEWORK_NAME);
if ("local".equals(mrFramework)) {
contextBuilder = new InMemoryMapReduceContextBuilder(conf, taskContext);
} else {
// mrFramework = "yarn" or "classic"
// if the jobContext is not a TaskAttemptContext, mrFramework should not be yarn.
contextBuilder = new DistributedMapReduceContextBuilder(
conf, HBaseConfiguration.create(taskContext.getConfiguration()), taskContext);