Java Hadoop:获取特定MapReuce任务的计算机主机名
对于Java Hadoop:获取特定MapReuce任务的计算机主机名,java,hadoop,mapreduce,Java,Hadoop,Mapreduce,对于任务的特定尝试,是否有任何方法可以通过编程方式获取机器主机名 hadoop的jobracker WebUI中会显示相同的信息,如下所示: 以下是迄今为止我所知道的实现这一目标的方法: // How to instantiate JobTracker ?? JobTracker tracker = (JobTracker) application.getAttribute("job.tracker"); JobID jobidObj = JobID.forName(
任务的特定尝试
,是否有任何方法可以通过编程方式获取机器主机名
hadoop的jobracker WebUI
中会显示相同的信息,如下所示:
以下是迄今为止我所知道的实现这一目标的方法:
// How to instantiate JobTracker ??
JobTracker tracker = (JobTracker) application.getAttribute("job.tracker");
JobID jobidObj = JobID.forName(jobid);
JobInProgress job = tracker.getJob(jobidObj);
TaskID tipidObj = TaskID.forName(tipid);
TaskInProgress tip = job.getTaskInProgress(tipidObj);
TaskStatus[] ts = tip.getTaskStatuses();
for (int i = 0; i < ts.length; i++) {
TaskStatus status = ts[i];
//get the attempt name
String taskTrackerName = status.getTaskTracker();
TaskTrackerStatus taskTracker = tracker.getTaskTracker(taskTrackerName);
//get the hostname
taskTracker.getHost();
}
//如何实例化JobTracker??
JobTracker=(JobTracker)application.getAttribute(“job.tracker”);
JobID jobidbj=JobID.forName(JobID);
JobInProgress job=tracker.getJob(jobidObj);
TaskID tipidObj=TaskID.forName(tipid);
TaskInProgress tip=job.getTaskInProgress(tipidObj);
TaskStatus[]ts=tip.gettaskstatus();
对于(int i=0;i
这是我知道的获取主机名的唯一方法,但这些代码永远不会工作,因为我无法实例化JobTracker
。如果上面的代码没有解决方案,请告诉我是否还有其他方法。据我所知,它看起来不像是一个公共API,因为该信息已被写入MRv1。JIRA的解决方法是以编程方式请求JobTracker UI页面,并从中解析主机名
如果改用MRv2,则可以通过编程方式从中获取任务尝试的主机名