하둡에서 제공해주는 다양한 맵리듀스 빌트인 카운터들
on Hadoop
맵리듀스에서는 실행중인 잡에 대한 통계치를 확인할 수 있는 카운터들을 제공해준다.
카운터를 활용하여 잡의 맵태스크, 리듀스태스크의 수, 맵의 출력 크기 등의 일반적인 정보들을 얻을 수도 있고, 문제에 대한 간단한 디버깅이나 병목 지점 등을 확인해볼 수도 있다.
jar 파일을 빌드하여 실행시켰을 때, 표준에러에 출력되는 무수히 많은 정보들이 이러한 카운터를 기반으로 찍히는 값들이다.
하둡에서는 맵리듀스 잡을 위한 이런 빌트인 카운터들을 만들어놓았을 뿐만 아니라 사용자가 자신의 필요에 맞게 정의하여 사용하도록 인터페이스를 제공하고 있지만, 단순하게 enum 으로 정의해서 사용하기도 한다.
아래는 빌트인 카운터들이다.
JobCounter
레퍼런스 링크 : JobCounter
이름 | 설명 |
---|---|
DATA_LOCAL_MAPS | 데이터를 가지고 있는 노드와 동일한 노드에서 실행된 맵태스크의 수 |
RACK_LOCAL_MAPS | 데이터를 가지고 있는 노드와 동일한 랙에서 실행된 맵태스크의 수 |
OTHER_LOCAL_MAPS | 데이터를 가지고 있는 노드와 다른 랙에서 실행된 맵태스크의 수 |
TOTAL_LAUNCHED_MAPS | 실행된 맵태스크의 전체 개수 |
NUM_FAILED_MAPS | 실패한 맵태스크의 수 |
NUM_KILLED_MAPS | 종료된 맵태스크의 수 |
MILLIS_MAPS | 모든 맵태스크를 수행하는데 걸린 시간 |
VCORES_MILLIS_MAPS | 모든 맵태스크가 사용한 전체 vcore 사용시간 |
TOTAL_LAUNCHED_REDUCES | 실행된 리듀스태스크의 전체 개수 |
NUM_FAILED_REDUCES | 실패한 리듀스태스크의 수 |
NUM_KILLED_REDUCES | 종료된 리듀스태스크의 수 |
MILLIS_REDUCES | 모든 리듀스태스크를 수행하는데 걸린 시간 |
VCORES_MILLIS_REDUCES | 모든 리듀스태스크들이 사용한 전체 vcore 사용시간 |
TOTAL_LAUNCHED_UBERTASKS | 실행된 우버모드 태스크의 전체 개수 |
NUM_UBER_SUBMAPS | 우버모드로 실행된 맵의 수 |
NUM_UBER_SUBREDUCES | 우버모드로 실행된 리듀스의 수 |
NUM_FAILED_UBERTASKS | 실패한 우버태스크의 수 |
TASKS_REQ_PREEMPT | 선점스케줄링을 요청한 태스크의 수 |
TaskCounter
레퍼런스 링크 : TaskCounter
이름 | 설명 |
---|---|
COMMITTED_HEAP_BYTES | 사용 가능한 힙 메모리의 전체 크기 |
SPLIT_RAW_BYTES | 입력 스플릿들에 대한 메테데이터의 바이트 크기 |
MAP_INPUT_RECORDS | 모든 맵태스크에서 입력으로 받은 레코드의 수 |
MAP_OUTPUT_BYTES | 모든 맵태스크에서 출력한 결과의 바이트 크기 |
MAP_OUTPUT_MATERIALIZED_BYTES | 디스크에 쓰여진 결과 바이트 크기 |
MAP_OUTPUT_RECORDS | 모든 맵태스크에서 출력한 결과의 레코드 수 |
MAP_SKIPPED_RECORDS | 전체 맵태스크에서 처리가 스킵된 레코드의 수 |
COMBINE_INPUT_RECORDS | 컴바이너에 입력된 레코드의 수 |
COMBINE_OUTPUT_RECORDS | 컴바이너가 출력한 레코드의 수 |
SHUFFLED_MAPS | 리듀서가 실행중인 노드들로 복사된 맵 출력 레코드 수 |
FAILED_SHUFFLE | 셔플 과정에서 실패한 맵 출력의 수 |
MERGED_MAP_OUTPUTS | 리듀서의 입력으로 들어가기 위해 머지된 맵 출력 레코드의 수 |
REDUCE_INPUT_GROUPS | 모든 리듀스태스크에서 처리된 키의 수 |
REDUCE_INPUT_RECORDS | 모든 리듀스태스크로 입력으로 들어온 레코드의 수 |
REDUCE_OUTPUT_RECORDS | 모든 리듀스태스크에서 출력한 결과 레코드의 수 |
REDUCE_SHUFFLE_BYTES | 리듀서로 셔플되어 들어온 맵 출력들의 전체 바이트 크기 |
REDUCE_SKIPPED_GROUPS | 모든 리듀스태스크에서 처리가 스킵된 키의 수 |
REDUCE_SKIPPED_RECORDS | 모든 리듀스태스크에서 처리가 스킵된 레코드의 수 |
SPILLED_RECORDS | 디스크로 넘어간 레코드의 수 |
PHYSICAL_MEMORY_BYTES | 전체 물리메모리 사용량 |
VIRTUAL_MEMORY_BYTES | 전체 가상메모리 사용량 |
CPU_MILLISECONDS | 태스크를 수행하는데 사용된 cpu 시간 |
GC_TIME_MILLIS | GC가 작동한 시간 |
FileInput(Output)FormatCounter
레퍼런스 링크 : FileInputFormatCounter, FileOutputFormatCounter
이름 | 설명 |
---|---|
BYTES_READ | 맵과 리듀스 태스크에 의해 읽혀진 바이트 크기 |
BYTES_WRITTEN | 맵과 리듀스 태스크에 의해 쓰여진 바이트 크기 |