복붙노트

[HADOOP] 어떻게 하둡에 의해 실행 완료된 작업의 통계를 얻으려면?

HADOOP

어떻게 하둡에 의해 실행 완료된 작업의 통계를 얻으려면?

우리는 하둡을 통해 데이터 집약적 인 작업을 실행합니다. 하둡 작업을 실행합니다. 작업이 완료되면 이제 내가 원하는 것입니다. 그것은 나에게에 관한 통계를 줄 것이다 작업 즉 실행; 시간은 매퍼 수량, 감속기 수량 및 기타 유용한 정보를 소비했다.

작업을 실행하는 동안 작업 추적기, 데이터 노드와 같은 브라우저에 표시되는 정보. 하지만 하둡을 통해 작업을 실행하고 나 작업 완료의 끝에 보고서와 같은 결과를 제공 내 응용 프로그램에서 통계를 얻을 수있는 방법. 내 응용 프로그램은 JAVA에

나를 도울 수있는 모든 API. 제안을 이해할 수있을 것이다.

해결법

  1. ==============================

    1.JobClient의 다음과 같은 방법으로 봐 :

    JobClient의 다음과 같은 방법으로 봐 :

    이 두 호출은 각 작업에 대해 당신이 / 마무리 시작 시간을 당길 수있는 TaskReport 객체의 배열, 개별 카운터를 반환

  2. ==============================

    2.Chirs 올바른 것입니다. TaskReport의 문서는 org.apache.hadoop.mapred.TaskReport이 org.apache.hadoop.mapreduce.TaskReport에서 그 방법을 상속한다고. 그래서, 하나는 같은 값을 얻을 수 있습니다.

    Chirs 올바른 것입니다. TaskReport의 문서는 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();
                    }
            }
    }
    

    이것은 실행중인 작업의 시작과 마침 시간을 얻을 수있는 간단한 예입니다. 당신은 당신이 원하는 방법으로 할 수 있습니다.

    그리고 여기에 "단어 개수"맵리 듀스 작업에이 프로그램의 실행이다.

    [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)
    

    그것의 좋은는 맵리 듀스 / SRC / 웹 어플리케이션 / 작업 / 디렉토리에 하둡의 원하는 JSP 파일을 열고 JobTracker에 웹 UI는 정보를 표시하는 방법을 알아낼 수 있습니다.

    나는 jobtasks.jsp에서 코드 위에 도출했다.

    희망이 도움이. :)

  3. from https://stackoverflow.com/questions/16180654/how-to-get-completed-jobs-statistics-executed-by-hadoop by cc-by-sa and MIT license