The only way I know of is try using different Scheduling Queue's for each group

Billy

"nguyenhuynh.mr" <nguyenhuynh...@gmail.com> wrote in message news:49ee6e56.7080...@gmail.com...
Tom White wrote:

You need to start each JobControl in its own thread so they can run
concurrently. Something like:

    Thread t = new Thread(jobControl);
    t.start();

Then poll the jobControl.allFinished() method.

Tom

On Tue, Apr 21, 2009 at 10:02 AM, nguyenhuynh.mr
<nguyenhuynh...@gmail.com> wrote:

Hi all!


I have some jobs: job1, job2, job3,... . Each job working with the
group. To control jobs, I have JobControllers, each JobController
control  jobs  follow the  specified  group.


Example:

- Have 2 Group: g1 and g2

-> 2 JobController: jController1, jcontroller2

 + jController1 contains jobs: job1, job2, job3, ...

 + jController2 contains jobs: job1, job2, job3, ...


* To run jobs, I sue:

for (i=0; i<2; i++){

   jCtrl[i]= new jController(group i);

   jCtrl[i].run();

}


* I want jController1 and jController2 run parallel. But actual, when
jController1 finished,  jController2 begin run.


Why?

Please help me!


* P/s: jController use org.apache.hadoop.mapred.jobcontrol.JobControl


Thanks,


cheer,

Nguyen.





Thanks for your response!

I have used Thread to start JobControl, some things like:

public class JobController{

   public JobController(String g){
      .....
   }

   public run(){
      Job j1 = new Job(..);
      Job j2 =new Job(..);
      JobControl jc = new JobControl("group1");

      Threat t=new Thread(jc);
      t.start();

     while(! jc.allFinish()){
         // Display state ....
      }
   }
}

* To run the code some like:
JobController[] jController=new JController[2];
for (int i=0; i<2; i++){
   jController[i]=new JobController(group[i]);
   JCOntroller[i].run();

}

* But not parallel run :( !

Please help me!

Thanks,

Best regards,
Nguyen,




Reply via email to