java - 从集群中获取现有的 mapreduce 作业(作业可能正在运行或已完成)

标签 java apache hadoop mapreduce

以前,我使用 org.apache.hadoop.mapred.JobClient#getJob(org.apache.hadoop.mapred.JobID) 来获取 RunningJob 。此调用是从作业完成回调方法进行的,但是,在我看来,存在时间问题,如果作业已经完成,则上述 getJob() 方法找不到它并返回 null。我可以从集群 UI 确认作业已完成。

保持 RunningJob 分开,有没有办法在给定 org. apache.hadoop.mapreduce.JobID ,无论作业当前是正在运行还是已完成?

我试着编写类似这样的代码:

集群 cluster = jobClient.getClusterHandle(); 作业 job = cluster.getJob(JobID.forName(jobId)); log.info("尝试获取 ID 为 {} 的实际作业,在集群 {} 上找到了 {}",JobID.forName(jobId),job,cluster);

我可以看到正确的 jobId,也可以看到集群对象。但是 cluster.getJob() 方法返回 null,所以作业本身是 null。

我在这里遗漏了什么吗?

最佳答案

问题是最近的 yarn 升级需要在我的系统上启用 MR 历史服务器。这解决了这个问题。我最近从 MR v1 升级到 v2,在升级中,所有已完成的作业现在都移到了历史服务器。

关于java - 从集群中获取现有的 mapreduce 作业(作业可能正在运行或已完成),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43922791/

相关文章:

java - CucumberOptions Java 命令行

amazon-web-services - Elastic Beanstalk 不创建 ssl.conf

java - 两次调用 Vertex.get EdgeValue() 后边值不一样

java - Solr 突出显示返回 id

Hadoop HDFS : Read sequence files that are being written

windows - sh for Windows哪里适合搭建Hadoop?

java - 关闭使用 FileOutputStream 创建的文件,以便进行下一次删除

java - 当我使用 BufferedReader 获取 HTML 时,我需要的部分不存在

java - 如何在dialog.open()之后阻止JFace对话框关闭

php - 更新 Centos 软件包吗?