[HADOOP] 어떻게 하둡에 의해 실행 완료된 작업의 통계를 얻으려면?
HADOOP어떻게 하둡에 의해 실행 완료된 작업의 통계를 얻으려면?
우리는 하둡을 통해 데이터 집약적 인 작업을 실행합니다. 하둡 작업을 실행합니다. 작업이 완료되면 이제 내가 원하는 것입니다. 그것은 나에게에 관한 통계를 줄 것이다 작업 즉 실행; 시간은 매퍼 수량, 감속기 수량 및 기타 유용한 정보를 소비했다.
작업을 실행하는 동안 작업 추적기, 데이터 노드와 같은 브라우저에 표시되는 정보. 하지만 하둡을 통해 작업을 실행하고 나 작업 완료의 끝에 보고서와 같은 결과를 제공 내 응용 프로그램에서 통계를 얻을 수있는 방법. 내 응용 프로그램은 JAVA에
나를 도울 수있는 모든 API. 제안을 이해할 수있을 것이다.
해결법
-
==============================
1.JobClient의 다음과 같은 방법으로 봐 :
JobClient의 다음과 같은 방법으로 봐 :
이 두 호출은 각 작업에 대해 당신이 / 마무리 시작 시간을 당길 수있는 TaskReport 객체의 배열, 개별 카운터를 반환
-
==============================
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에서 코드 위에 도출했다.
희망이 도움이. :)
from https://stackoverflow.com/questions/16180654/how-to-get-completed-jobs-statistics-executed-by-hadoop by cc-by-sa and MIT license
'HADOOP' 카테고리의 다른 글
[HADOOP] 맵리 듀스에 MySQL의 오류로 Sqoop을 수출 지역 CSV (0) | 2019.09.19 |
---|---|
[HADOOP] 어떻게 쿼리에서 하이브 날짜 시간에 그물의 DateTime.Ticks를 변환하는? (0) | 2019.09.19 |
[HADOOP] oozie와 예 스파크 작업을 실행할 수 없습니다 (0) | 2019.09.19 |
[HADOOP] MiniDFSCluster와 단위 테스트 하둡 HDFS의 글 (0) | 2019.09.19 |
[HADOOP] 에서 java.lang.UnsatisfiedLinkError : org.apache.hadoop.io.nativeio.NativeIO $ Windows.createDirectoryWithMode0 (0) | 2019.09.19 |