/** * Creates new shuffle job. * * @param jobId Job ID. * @return Created shuffle job. * @throws GridException If job creation failed. */ private GridHadoopShuffleJob<UUID> newJob(GridHadoopJobId jobId) throws GridException { GridHadoopMapReducePlan plan = ctx.jobTracker().plan(jobId); GridHadoopShuffleJob<UUID> job = new GridHadoopShuffleJob<>( ctx.localNodeId(), ctx.localNodeId(), log, ctx.jobTracker().job(jobId, null), mem, plan.reducers(), plan.reducers(ctx.localNodeId())); UUID[] rdcAddrs = new UUID[plan.reducers()]; for (int i = 0; i < rdcAddrs.length; i++) { UUID nodeId = plan.nodeForReducer(i); assert nodeId != null : "Plan is missing node for reducer [plan=" + plan + ", rdc=" + i + ']'; rdcAddrs[i] = nodeId; } boolean init = job.initializeReduceAddresses(rdcAddrs); assert init; return job; }