Cloudera Manager 는 설정 파일을 직접 고치지 못하게 하고, 대신 관리 화면에서 만든 파일 뒤에 사용자가 넣은 내용을 덧붙이는 자리를 제공한다. 그 자리를 Safety Valve 라고 부른다. 화면에 없는 속성이나 로그 설정을 넣을 때 쓴다. 관리 도구가 파일을 다시 만들어도 Safety Valve 내용은 유지된다.
YARN 에는 용도별로 여러 개가 있고, 무엇을 넣느냐에 따라 자리가 다르다.
| 넣을 것 | 자리 |
|---|---|
yarn-site.xml 속성 |
YARN 서비스 → yarn-site.xml 에 대한 YARN 서비스 고급 구성 스니펫 |
| 로그 설정 | ResourceManager · NodeManager 역할의 로깅 고급 구성 스니펫 |
| 환경변수 | yarn-env.sh 에 대한 고급 구성 스니펫 |
로그 설정은 서비스 단위가 아니라 역할 단위다. ResourceManager 와 NodeManager 각각에 넣어야 한다.
로그가 너무 많아 디스크를 잡아먹을 때 수준을 올린다. 로깅 스니펫에 넣는다.
log4j.logger.org.apache.hadoop.yarn=WARN
log4j.logger.org.apache.hadoop.yarn.server.resourcemanager=WARN
log4j.logger.org.apache.hadoop.yarn.server.nodemanager=WARN
루트 로거를 통째로 내리는 것은 권하지 않는다. 다른 컴포넌트의 오류까지 묻힐 수 있고, 무엇보다 문제가 생겼을 때 되돌리기 전까지 아무 단서도 남지 않는다. 시끄러운 로거를 특정해 내리는 편이 안전하다. 어느 로거가 시끄러운지는 기존 로그의 클래스 이름을 보고 고른다.
감사 로그(SecurityLogger 계열)는 따로 관리되므로 위 설정으로 같이 내려가지 않는다. 감사 로그를 줄이려면 해당 로거를 따로 지정한다.
변경 후에는 ResourceManager 와 NodeManager 를 재시작해야 반영된다.
진단할 때는 데몬을 재시작하지 않고 특정 클래스의 로그 수준만 잠시 바꿀 수 있다.
yarn daemonlog -getlevel rm01.example.net:8088 org.apache.hadoop.yarn.server.resourcemanager
yarn daemonlog -setlevel rm01.example.net:8088 org.apache.hadoop.yarn.server.resourcemanager DEBUG
데몬을 재시작하면 원래 설정으로 돌아간다. 보안이 켜진 클러스터에서는 인증이 필요하고, 관리자 권한이 있는 계정이어야 한다.
수준을 내리는 것 말고도 보관 정책으로 줄일 수 있다. 롤링 파일 어펜더의 크기와 개수를 조정하는 편이 원인 추적을 포기하지 않으면서 디스크를 지키는 방법이다. Cloudera Manager 에서는 역할별 설정에 "Maximum Log File Backups" 와 "Max Log Size" 항목이 있다. 애플리케이션 로그는 별개로 yarn.log-aggregation.retain-seconds 가 보관 기간을 정한다.
Cloudera Manager 의 화면 항목 이름은 버전에 따라 달라진다. 위의 자리 이름과 항목 이름은 화면에서 실제 문구를 확인하고 쓴다. (확인 필요)