::: 데이터 분석 :::

Ambari Metrics Collector 로그에 WARN 메시지의 지속 발생 조치

곰탱이푸우 2023. 5. 11. 08:20
Ambari Metrics 관련 트러블 슈팅을 진행하고 METRIC 탭의 그래프까지 표시되는데도 WARN 메시지가 계속 발생하는 경우가 있다.
 
Ambari Metrics 관련 트러블 슈팅은 다음 포스팅을 참고한다.
Ambari 설치는 다음 포스팅을 참고한다.
 

증상 확인

프록시를 사용하는 폐쇄망 환경에서 Ambari Metrics 서비스의 로그에 경고 메시지가 지속적으로 발생한다.
약 1~3분 간격으로 생성되며, 로그 파일은 11KB 씩 크기가 증가한다. 
$ cat /var/log/ambari-metrics-collector/ambari-metrics-collector.out
...
### 생략 ###
...

23/03/28 13:01:01 [pool-3-thread-1] WARN timeline.PhoenixHBaseAccessor: Failed on insert records to store : null
23/03/28 13:01:01 [pool-3-thread-1] WARN timeline.PhoenixHBaseAccessor: Metric that cannot be stored :
[default.General.hs2_avg_open_session_time,hiveserver2]{1679975968850=NaN, 1679975998848=NaN, 1679976028849=NaN, 1679976058847=NaN}
23/03/28 13:01:07 [qtp1872774414-99145] WARN webapp.GenericExceptionHandler: INTERNAL_SERVER_ERROR
javax.ws.rs.WebApplicationException: java.sql.SQLException: Encountered exception in sub plan [0] execution.
    at org.apache.ambari.metrics.webapp.TimelineWebServices.getTimelineMetrics(TimelineWebServices.java:285)
    at sun.reflect.GeneratedMethodAccessor24.invoke(Unknown Source)
... 생략 ...
Caused by: java.lang.NoClassDefFoundError: Could not initialize class org.apache.hadoop.hbase.ipc.RemoteWithExtrasException$ClassLoaderHolder
    at org.apache.hadoop.hbase.ipc.RemoteWithExtrasException.unwrapRemoteException(RemoteWithExtrasException.java:78)
    at org.apache.hadoop.hbase.protobuf.ProtobufUtil.makeIOExceptionOfException(ProtobufUtil.java:282)
    at org.apache.hadoop.hbase.protobuf.ProtobufUtil.handleRemoteException(ProtobufUtil.java:269)
    at org.apache.hadoop.hbase.client.RegionServerCallable.call(RegionServerCallable.java:129)
    at org.apache.hadoop.hbase.client.RpcRetryingCallerImpl.callWithRetries(RpcRetryingCallerImpl.java:107)
    ... 10 more
 
하루 정도 경과하면 아래와 같이 100M 이상 차지하는 것을 확인할 수 있다.
 

원인 확인

인터넷 환경에서 Ambari를 설치한 경우에도 동일하게 발생한다.
이러한 점으로 보아 Bigtop 배포판의 고유한 문제로 추정된다.
 
Ambari Metrics Collector에 사용된 hbase와 pheonix 라이브러리들의 버전 호환 이슈인 것으로 추정되나 정확하지 않다.
(버전 확인과 의존성 체크를 다 해봐야하는데... 현실적으로 쉽지 않다..)
 
사실 약 1달이 넘도록 삽질 (Digging)을 계속했으나 정확한 원인은 찾지 못했다.
구글링해서 나온 솔루션들은 거의 다 시도해봤으나 해결되지 않았다.
구글 검색에서도 잘 안나오는 걸로 봐서는 Bigtop Ambari 사용자가 적거나, 해당 이슈가 발생하지 않은 것 같다.
 
 

해결 방법

Ambari Metrics가 정상 동작하고, 주 사용 목적이 Hadoop과 Spark을 사용하는 것이기 때문에 큰 문제는 아니다.
그러나 로그 파일이 디스크의 용량을 지속적으로 차지하기 때문에 문제가 된다.
 
아래와 같이 조치를 취하면 해당 파일이 생성되는 것을 막을 수 있다. (단, 서비스를 재시작하면 다시 생성된다.)
# Ambari Metrics 서비스를 시작한 이후 적용한다.

$ cd /var/log/ambari-metrics-collector
$ ls -al ambari-metrics-collector.out
$ cat ambari-metrics-collector.out  # 위의 WARN이 지속 발생하는지 확인

$ sudo rm -rf ambari-metrics-collector.out​
 
표준 출력으로 생성되는 로그 메시지를 파일에 기록하는 것이라서, 해당 파일을 삭제하면 더 이상 생성되지 않는다.
일종의 꼼수이지만 hbase와 pheonix의 코드를 확인하면서 해결해야 하는 문제라 임시 방편을 적용하는 방향으로 진행한다.

(해결 방법 아시는 분은 도움 부탁드립니다.)