分享

有不有什么方法可以通api查看一个已经执行成功的job呢?


版本1.0.4我现在需要记录每个ob的开始时间,结束时间,为了得到执行时间。
现在我可以通过JobStatus得到job的startTime,但是我还想得到finishtime,我看了下jsp文件,所有的job信息,都被存在JobInfoProcess这个类的向量里面,但是客户端这边是拿不到的?也尝试了通过jobHistory拿到log文件信息,但是返回的是空,是因为我没有配置jobHistory吗?

已有(8)人评论

跳转到指定楼层
arsenduan 发表于 2016-1-8 15:35:44
hadoop是开源的,应该都能拿到。第二种如果没有配置的话,应该是空的,必须启动服务,程序才会有记录
回复

使用道具 举报

C4TMAN 发表于 2016-1-8 15:50:21
arsenduan 发表于 2016-1-8 15:35
hadoop是开源的,应该都能拿到。第二种如果没有配置的话,应该是空的,必须启动服务,程序才会有记录

大兄弟再指导我一下
回复

使用道具 举报

langke93 发表于 2016-1-8 17:07:01

查看其相关api
http://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapreduce/Job.html

首先记录job开始时间
getStartTime(),这个函数可以获取开始时间

job什么时候结束,可以通过下面函数
isComplete()
Check if the job is finished or not【检查job是否完成】

isSuccessful()
Check if the job completed successfully.【检查job是否成功完成】

然后获取当前时间,这样结束时间-开始时间。
楼主可以试验下

推荐:
hadoop2获取job执行进度
http://www.aboutyun.com/thread-7996-1-1.html



回复

使用道具 举报

xuanxufeng 发表于 2016-1-8 17:10:12




1.png

这里有提供的相关api
回复

使用道具 举报

C4TMAN 发表于 2016-1-11 10:32:47
langke93 发表于 2016-1-8 17:07
查看其相关api
http://hadoop.apache.org/docs/current/api/org/apache/hadoop/mapreduce/Job.html

这种方式不可行啊,需要一直跟踪一个job。而且得到的执行时间不准确。
回复

使用道具 举报

C4TMAN 发表于 2016-1-11 10:34:01
xuanxufeng 发表于 2016-1-8 17:10
这里有提供的相关api

这个是JobInProcess类的方法嘛,它是在server端被创建出来跟踪job的,是由JobTracker得到的,请问有不有在客户端访问的方法呢?
回复

使用道具 举报

C4TMAN 发表于 2016-1-11 10:38:37
我现在有两种方案:
1.读取log日志,解析日志,可以得到具体的job结束时间,但是日志文件非常多,有好几个G。
2.向jobTracker服务端发送http请求,比如像50030端口发送
                String url = "http://localhost:50030/jobdetails.jsp";
                String param = "jobid=job_201512081506_31789";
   这样的请求,会返回得到一个完整的网页,有结束时间信息。但是这种方法和第一种其实是差不多的。

求问有其他效率高的方法吗?我可不可以在客户端得到服务端的调用呢,就像RMI那样,可以在客户端直接调用服务端的方法。
回复

使用道具 举报

wscl1213 发表于 2016-1-11 11:29:20
C4TMAN 发表于 2016-1-11 10:38
我现在有两种方案:
1.读取log日志,解析日志,可以得到具体的job结束时间,但是日志文件非常多,有好几个 ...

hadoop是用rpc通信的,楼主可以考虑rpc编程
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条