Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jsp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 如何完成作业';Hadoop执行的统计数据?_Java_Hadoop_Hdfs_Hadoop Plugins - Fatal编程技术网

Java 如何完成作业';Hadoop执行的统计数据?

Java 如何完成作业';Hadoop执行的统计数据?,java,hadoop,hdfs,hadoop-plugins,Java,Hadoop,Hdfs,Hadoop Plugins,当我们在Hadoop上运行数据密集型作业时。Hadoop执行作业。 现在我想要的是工作什么时候完成。它会给我有关的统计数字 执行的工作,即:;所用时间、映射器数量、还原器数量和其他有用信息 作业执行期间在浏览器中显示的信息,如作业跟踪器、数据节点。 但是我如何在我的应用程序中获得统计数据呢?该应用程序通过Hadoop运行作业,并在作业完成后向我提供类似报告的结果。我的应用程序是用JAVA编写的 任何可以帮助我的API。 建议将不胜感激。研究以下方法: 这两个调用都返回对象数组,您可以从中

当我们在Hadoop上运行数据密集型作业时。Hadoop执行作业。 现在我想要的是工作什么时候完成。它会给我有关的统计数字 执行的工作,即:;所用时间、映射器数量、还原器数量和其他有用信息

作业执行期间在浏览器中显示的信息,如作业跟踪器、数据节点。 但是我如何在我的应用程序中获得统计数据呢?该应用程序通过Hadoop运行作业,并在作业完成后向我提供类似报告的结果。我的应用程序是用JAVA编写的

任何可以帮助我的API。
建议将不胜感激。

研究以下方法:


这两个调用都返回对象数组,您可以从中提取开始/完成时间,每个任务的单个计数器都是正确的。的文档说明,
org.apache.hadoop.mapred.TaskReport
继承了
org.apache.hadoop.mapreduce.TaskReport
中的这些方法。因此,可以得到这样的值

以下是获取作业开始和结束时间的代码,针对每个映射和减少任务进行分组

import org.apache.hadoop.mapred.JobClient;
import org.apache.hadoop.mapred.JobStatus;
import org.apache.hadoop.conf.Configuration;
import java.net.InetSocketAddress;
import java.util.*;
import org.apache.hadoop.mapred.TaskReport;
import org.apache.hadoop.mapred.RunningJob;
import org.apache.hadoop.util.StringUtils;
import java.text.SimpleDateFormat;

public class mini{
        public static void main(String args[]){
                String jobTrackerHost = "192.168.151.14";
                int jobTrackerPort = 54311;

                try{
                        Configuration conf = new Configuration();
                        JobClient jobClient = new JobClient(new InetSocketAddress(jobTrackerHost, jobTrackerPort), conf);
                        JobStatus[] activeJobs = jobClient.jobsToComplete();
                        SimpleDateFormat dateFormat = new SimpleDateFormat("d-MMM-yyyy HH:mm:ss");
                        for(JobStatus js: activeJobs){
                                System.out.println(js.getJobID());
                                RunningJob runningjob = jobClient.getJob(js.getJobID());
                                            while(runningjob.isComplete() == false){ /*Wait till the job completes.*/}
                                TaskReport[] maptaskreports = jobClient.getMapTaskReports(js.getJobID());
                                for(TaskReport tr: maptaskreports){
                                        System.out.println("Task ID: "+tr.getTaskID()+" Start TIme: "+StringUtils.getFormattedTimeWithDiff(dateFormat, tr.getStartTime(), 0)+" Finish Time: "+StringUtils.getFormattedTimeWithDiff(dateFormat, tr.getFinishTime(), tr.getStartTime()));
                                }
                                TaskReport[] reducetaskreports = jobClient.getReduceTaskReports(js.getJobID());
                                for(TaskReport tr: reducetaskreports){
                                        System.out.println("Task ID: "+tr.getTaskID()+" Start TIme: "+StringUtils.getFormattedTimeWithDiff(dateFormat, tr.getStartTime(), 0)+" Finish Time: "+StringUtils.getFormattedTimeWithDiff(dateFormat, tr.getFinishTime(), tr.getStartTime()));
                                }

                        }
                }catch(Exception ex){
                        ex.printStackTrace();
                }
        }
}
这是一个获取正在运行作业的开始和完成时间的简单示例。你可以随心所欲

下面是“字数统计”MapReduce作业的程序运行

[root@dev1-slave1 ~]# java -classpath /usr/lib/hadoop/hadoop-core.jar:/usr/lib/hadoop/lib/jackson-core-asl-1.8.8.jar:/usr/lib/hadoop/lib/jackson-mapper-asl-1.8.8.jar:/usr/lib/hadoop/lib/commons-logging-1.1.1.jar:/usr/lib/hadoop/lib/commons-configuration-1.6.jar:/usr/lib/hadoop/lib/commons-lang-2.4.jar:. mini
job_201501151144_0042
Task ID: task_201501151144_0042_m_000000 Start TIme: 16-Jan-2015 17:07:35 Finish Time: 16-Jan-2015 17:07:43 (7sec)
Task ID: task_201501151144_0042_m_000001 Start TIme: 16-Jan-2015 17:07:35 Finish Time: 16-Jan-2015 17:07:56 (20sec)
Task ID: task_201501151144_0042_m_000002 Start TIme: 16-Jan-2015 17:07:35 Finish Time: 16-Jan-2015 17:07:43 (7sec)
Task ID: task_201501151144_0042_m_000003 Start TIme: 16-Jan-2015 17:07:43 Finish Time: 16-Jan-2015 17:07:53 (10sec)
Task ID: task_201501151144_0042_m_000004 Start TIme: 16-Jan-2015 17:07:43 Finish Time: 16-Jan-2015 17:07:53 (10sec)
Task ID: task_201501151144_0042_r_000000 Start TIme: 16-Jan-2015 17:07:43 Finish Time: 16-Jan-2015 17:08:00 (17sec)
Task ID: task_201501151144_0042_r_000001 Start TIme: 16-Jan-2015 17:07:43 Finish Time: 16-Jan-2015 17:08:05 (22sec)
Task ID: task_201501151144_0042_r_000002 Start TIme: 16-Jan-2015 17:07:43 Finish Time: 16-Jan-2015 17:08:05 (21sec)
在hadoop的
mapreduce/src/webapps/job/
目录中打开所需的
jsp
文件,了解JOBTRACKER Web UI是如何显示信息的,这很好

我从中导出了上述代码

希望有帮助。:)