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
> <[email protected]> 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,