MapReduce2 히스토리 서버를 시작할 때 일부 JVM 매개 변수를 설정해야합니다. 즉, mapred-env.sh를 일부 변경해야합니다. HADOOP_OPTS에 매개 변수를 설정할 수는 있지만 히스토리 서버에만 영향을 미치므로 HADOOP_JOB_HISTORYSERVER_OPTS
으로 설정하는 것이 좋습니다.
이제 JVM 매개 변수에 대해 설명합니다.
파일에 GC 로깅을 사용하려면 -verbose:gc -Xloggc:<log-file-location>
을 추가해야합니다.
서버를 다시 시작할 때마다 덮어 쓰기를 방지하려면 로그 파일 이름을 특별히 고려해야합니다. 모든 호출에 대해 고유 한 이름이 있어야 타임 스탬프를 추가하는 것이 가장 좋은 옵션 인 것처럼 보입니다. 타임 스탬프를 추가하기 위해`date + '% Y % m % d % H % M' '과 같은 것을 포함 할 수 있습니다. 이 예에서는 YYYYMMDDHHMM 형식입니다. 일부 Java 버전에서는 로그 파일 위치에 "% t"를 넣을 수 있으며 YYYY-MM-DD_HH-MM-SS 형식의 서버 시작 시간 소인으로 바뀝니다.
이제 디스크 공간 사용을 관리하십시오. 내가 가지고있는 것보다 더 간단한 방법이 있다면 나는 행복 할 것이다.
먼저 Java의 내장 GC 로그 파일 순환을 이용하십시오. -XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M
은 JVM에서 최대 10 개의 GC 로그 파일 (각 크기는 약 10MB 이하)을 사용하여이 순환 게재를 사용하는 예입니다. 10 x 10MB는 최대 100MB입니다.
최대 10 개의 파일로 GC 로그 파일을 순환 시키면 Xloggc
에 지정한 파일 이름에 '.0', '.1', ... '.9'이 추가됩니다. .0이 먼저 나오고 .9에 도달하면 .0을 대체하고 라운드 로빈 방식으로 계속 진행합니다. Java의 일부 버전에서는 .current가 현재 쓰여지고있는 로그 파일의 이름 끝에 더 추가됩니다.
우리가 분명히 덮어 쓰기하지 않아야하는 고유 한 파일 이름 지정으로 인해 내역 서버 호출 당 100MB 을 가질 수 있으므로 서버의 GC 로그에서 사용되는 디스크 공간을 관리하는 토탈 솔루션이 아닙니다. 각 서버 호출시 최대 10 개의 GC 로그 파일 세트로 끝날 것입니다. 이는 시간이 지남에 따라 늘어날 수 있습니다. 가장 좋은 해결책은 (* nix 아래) logrotate 유틸리티 (또는 다른 유틸리티)를 사용하여 마지막 N 일 동안 수정되지 않은 GC 로그를 정기적으로 정리하는 것입니다.
수학을 수행하고 충분한 디스크 공간이 있는지 확인하십시오.
사람들은 GC 로그에서 세부 정보와 컨텍스트를 기본값보다 자주 원하기 때문에 -XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps
을 추가하는 것이 좋습니다.
함께이 퍼팅, 당신은 mapred-ENV이 뭔가를 추가 할 수 있습니다 : 당신은 아직 당신이 교체 또는에 추가해야합니다 HADOOP_JOB_HISTORYSERVER_OPTS
에 대한 참조를 찾을 수 있습니다
## enable GC logging for MR2 History Server:
TIMESTAMP=`date +'%Y%m%d%H%M'`
# GC log location/name prior to .n addition by log rotation
JOB_HISTORYSERVER_GC_LOG_NAME="{{mapred_log_dir_prefix}}/$USER/mapred-jobhistory-gc.log-$TIMESTAMP"
JOB_HISTORYSERVER_GC_LOG_ENABLE_OPTS="-verbose:gc -Xloggc:$JOB_HISTORYSERVER_GC_LOG_NAME"
JOB_HISTORYSERVER_GC_LOG_ROTATION_OPTS="-XX:+UseGCLogFileRotation -XX:NumberOfGCLogFiles=10 -XX:GCLogFileSize=10M"
JOB_HISTORYSERVER_GC_LOG_FORMAT_OPTS="-XX:+PrintGCDetails -XX:+PrintGCTimeStamps -XX:+PrintGCDateStamps"
JOB_HISTORYSERVER_GC_LOG_OPTS="$JOB_HISTORYSERVER_GC_LOG_ENABLE_OPTS $JOB_HISTORYSERVER_GC_LOG_ROTATION_OPTS $JOB_HISTORYSERVER_GC_LOG_FORMAT_OPTS"
export HADOOP_JOB_HISTORYSERVER_OPTS="$HADOOP_JOB_HISTORYSERVER_OPTS $JOB_HISTORYSERVER_GC_LOG_OPTS"
.
위의 경우 {{mapred_log_dir_prefix}}/$USER
을 GC 로그를 원하는 위치 (원하는 경우 MapReduce 내역 서버 로그와 동일한 위치로 이동하려는 경우)로 변경할 수 있습니다. 로그 파일 이름을 변경할 수도 있습니다.
Apache Ambari로 Hadoop 클러스터를 관리하는 경우 이러한 변경 사항은 MapReduce2 서비스> 구성> 고급> 고급 mapred-env> mapred-env 템플릿에 있습니다. Ambari를 사용하면 {{mapred_log_dir_prefix}}
이 자동으로 필드 위에 몇 줄 정의 된 Mapreduce Log Dir Prefix로 바뀝니다.
GC 로깅은 서버가 서버를 다시 시작하면 발생하기 시작하므로 잠시 중단해야 사용할 수 있습니다.