2016년 2월 24일 수요일

Spark Job On Mesos - Log Handling

Spark 스탠드얼론 모드에서는 Conf 디렉토리 안의 log4j.properties 정보를 수정하면, 로그 핸들링을 개별 프로그램안에서 해주지 않아도, Log 핸들링이 가능하다.

문제는 Spark Job 을 Mesos 위에서 구동할 때 인데..

Spark 의 log4j 옵션과 Mesos 의 Log 관련 옵션을 모두 수정해 주어도, Log 핸들링이 잘 안된다. ( 아직 내가 찾지 못한 다른 이유가 있을 지도 모른다.)

여하튼, 혹시나 하고, Programmatic 하게  소스에서 로그 레벨 수정을 해보았더니...
역시 된다.

사실, 일반적인 Java 프로그램이었다면, 되는게 당연한 거지만, Scala Job 이 Spark 엔진 위에서 구동되는데, 그게 또다시 Mesos 로 추상화 된 리소스 관리하에 구동되는 상황에서 이옵션이 먹다니.....

역시, Conf 보다 Source 가 앞서는 일반적인 Spark 옵션들과 마찬가지로, Log 또한 Source 에서 잡아 주니 모든 중간 Tier 와 무관하게 전면 적용이 되었다.
(부연하자면, Spark-submit 의 옵션이나 Conf 파일보다.. Source 상의 new SparkConf().set() 옵션이 최 우선 적용되는 다른 옵션과 같은 맥락이다는 뜻이다.)

여하튼....Spark Job 을 Mesos 위에서 구동시 Log  해들링 하는 방법은 그냥 Java 에서 하듯이 아래처럼 하면 된다.

[1] import


[2] set



저렇게 하면... 네임스페이스에 따라 완전 깨끗하게 지울수도 있고....
위처럼 org.apache.spark 까지 주면, spark 관련된 로그만 깨끗하게 지울수가 있음.