2012-02-20 1 views
0

Hadoop 스케줄러를 작성 중입니다. 내 스케줄링에서는 각 Map/Reduce 작업에서 소요 된 CPU 시간을 찾아야합니다.Hadoop의 Map/Reduce 작업에서 CPU 시간을 찾는 방법

  • TaskInProgress 클래스는 프로세스가 시작되고 완료되면 벽 시계 시간이있는 execStartTime 및 execFinishTime 값을 유지하지만 정확하게 작업에 의해 소비되는 CPU 시간을 표시하지 않습니다

    나는 것을 알고있다 .

  • 각 작업은 새 JVM에서 실행되며 OperatingSystemMXBean을 사용할 수 있습니다. getProcessCpuTime() 메소드를 사용하지만 메소드의 설명에서 "Java 가상 머신이 실행되는 프로세스에서 사용하는 CPU 시간을 나노초 단위로 반환합니다"라고 알려줍니다. 나는 이것이 내가 원하는 것인지 완전히 명확하지 않다.

답변

0

, 나는 SRC/mapred/조직/아파치/하둡/mapred/TaskLog.java 라인 (하둡 0.20.203) 572

mergedCmd.append("exec setsid 'time' "); // add 'time' 

는 CPU에서 변경하여이 문제를 해결 로그/userlogs/JOBID/TASKID/stderr에 기록됩니다. 나는 또한 누적 CPU 시간을 수확하는 스크립트를 작성 : 작업을 실행하기 전에 https://gist.github.com/1984365 을, 당신은 당신이 할 수 있는지 확인해야합니다 스크립트가 작동

rm -rf logs/userlogs/* 

그래서.

0

CPU 사용/유휴 시간, 스왑 사용 및 메모리 사용과 같은 리소스 메트릭을 기록하는 라이브러리를 사용하고 있습니다.

http://code.google.com/p/hadoop-toolkit/

당신은 패치를 추출하고 20.2 태그 버전에 적용해야합니다.

I am not entirely clear if this is what I want. 

저는이 메서드가 벽시계 시간도 반환한다는 것을 확신합니다. 다만 후손에 대한