wiki:ComputeStartExample4

Version 3 (modified by george, 14 years ago) (diff)

--

Tasks distribution over different computational resources

Tasks distribution is implemented using GridGain GridTaskAdapter. In this scenario, a cloud should have several segments. Workers in the cloud can belong to one or more segments (Worker settings example). Every script should contain information about execution environment or cloud segment, where it should be executed. First, We found all Worker nodes from this segment. Then, a script is sent to one of them

public Map<? extends GridJob, GridNode> map(List<GridNode> subgrid, Script script) throws GridException
{
        
	Map<ExecuteCommandLineJob, GridNode> jobs = new HashMap<ExecuteCommandLineJob, GridNode>(1);

    //get the id of the execution environment
    String eeID = script.getExecutionEnvironmentID();

    //list of worker nodes
    List<GridNode> workerNodes = new ArrayList<GridNode>();

    //find worker nodes for the job execution
    for (Iterator it = subgrid.iterator(); it.hasNext();)
    {
       GridNode node = (GridNode) it.next();
       String segment = node.getAttribute(eeID);

       if (segment != null)
       {
          if (segment.equals("true"))
          {
             workerNodes.add(node);
          }
       }
    }
 
    if(workerNodes.size() == 0)
    {
        ...
        return null;
    }

    ...
    ExecuteCommandLineJob myJob = new ExecuteCommandLineJob(script);

    //the worker can be pick-up randomly
    //int i = rand.nextInt(workerNodes.size());

    ... 
    jobs.put(myJob, workerNodes.get(i));
    return jobs;
}

Back to Examples