/* * Helper function to create Vertex for given ReduceWork. */ private Vertex createVertex( JobConf conf, ReduceWork reduceWork, LocalResource appJarLr, List<LocalResource> additionalLr, FileSystem fs, Path mrScratchDir, Context ctx) throws Exception { // set up operator plan Utilities.setReduceWork(conf, reduceWork, mrScratchDir, false); // create the directories FileSinkOperators need Utilities.createTmpDirs(conf, reduceWork); // Call once here, will be updated when we find edges MultiStageMRConfToTezTranslator.translateVertexConfToTez(conf, null); // create the vertex Vertex reducer = new Vertex( reduceWork.getName(), new ProcessorDescriptor(ReduceTezProcessor.class.getName()) .setUserPayload(MRHelpers.createUserPayloadFromConf(conf)), reduceWork.getNumReduceTasks(), getContainerResource(conf)); Map<String, String> environment = new HashMap<String, String>(); MRHelpers.updateEnvironmentForMRTasks(conf, environment, false); reducer.setTaskEnvironment(environment); reducer.setJavaOpts(getContainerJavaOpts(conf)); Map<String, LocalResource> localResources = new HashMap<String, LocalResource>(); localResources.put(getBaseName(appJarLr), appJarLr); for (LocalResource lr : additionalLr) { localResources.put(getBaseName(lr), lr); } reducer.setTaskLocalResources(localResources); return reducer; }