Hadoop JobClient getJob方法执行时间太长

时间:2015-09-21 06:32:50

标签: java hadoop hadoop2

我正在尝试使用 jobId Hadoop 2.6.0群集中获取当前正在运行的作业。

我输入了当前正在运行的Hadoop作业的jobId。使用RunningJob对象,我想获取有关Hadoop作业的详细信息

我正在使用Hadoop 2.x Java API。

为此,我使用了以下代码:

JobID jobID = JobID.forName(jobId);
Configuration conf = new Configuration();
JobClient client = new JobClient(new InetSocketAddress(ip,conf));
RunningJob job = client.getJob(jobId);

如果作业当前处于RUNNING阶段,则getJob()执行时间过长。

我无法理解为什么这需要花费太多时间来获取RunningJob对象。

我在Hadoop 1.1.2版本中尝试过相同的版本,但我没有遇到过这个问题。在这种情况下,我使用了Hadoop 1.x Java API。

1 个答案:

答案 0 :(得分:0)

我今天也有同样的问题。 Hadoop的JobClient需要3个必须参数来跟踪你的纱线作业。

<强> 1。 yarn.resourcemanager.address

<强> 2。 mapreduce.jobhistory.address

第3。 mapreduce.framework.name

应该按照以下方式调用它来创建jobClient

Configuration conf = new Configuration();
conf.set("mapreduce.framework.name", "yarn");
conf.set("yarn.resourcemanager.address",jobTrackerIp);
conf.set("mapreduce.jobhistory.address",jobHistoryIp);
JobClient client = new JobClient(conf);

一旦以这种方式创建它,jobClient就可以使用了。它们抑制了后端的一些错误并使用了重试逻辑。这就是我们无法在代码中看到任何错误的原因。