::: 데이터 분석 :::

Ambari Metrics Collector의 javax/ws/rs/core/Link$Builder 오류

곰탱이푸우 2023. 5. 1. 08:20
Bigtop에서 배포한 Ambari 설치를 완료하고 서비스를 시작했을 때 유독 Ambari Metrics만 빨간 불인 경우가 있다.
다양한 오류가 발생하는데 이번엔 javax/ws/rs/core/Link$Builder 오류 해결 방법을 확인한다.
 
Ambari 설치 방법은 아래 포스팅을 확인한다.
Ambari 설치를 위한 CentOS 7 환경 설정은 아래 포스팅을 참고한다.
 

오류 메시지 확인

Ambari Metrics를 설치한 가상 환경에 접근하고 로그를 확인한다.
# bdp01 가상 머신에 Ambari Metrics Master를 설치한 경우
$ ssh ambari@bdp01.bearpooh.com

# ambari-metrics-collector 로그 확인
$ cat /var/log/ambari-metrics-collector/ambari-metrics-collector.out

 

로그를 확인해보면 아래와 같은 경고 (Warning)를 확인할 수 있다.
23/03/25 23:52:16 [main] WARN webapp.WebAppContext: 
Failed startup of context o.e.j.w.WebAppContext@2349f14d{timeline,/,
file:///tmp/jetty-bdp01_bearpooh_com-6188-hadoop-yarn-common-3_3_4_jar
-_-any-1171929678932464264/webapp/,UNAVAILABLE}
{jar:file:/usr/lib/ambari-metrics-collector/hadoop-yarn-common-3.3.4.jar!/webapps/timeline}
java.lang.NoClassDefFoundError: javax/ws/rs/core/Link$Builder
 

원인 확인

프록시를 사용하는 폐쇄망에서 Ambari를 설치할 때 일부 jar 패키지가 누락되어 발생하는 문제이다.
 
실제로 Master Node에서 ambari-metrics-collector를 삭제하다보면 아래와 같은 메시지가 출력된다.
$ sudo yum remove ambari-metrics-collector

... 생략 ...
경고: file /usr/lib/ambari-metrics-collector/servlet-api-2.5.jar: remove failed: 
그런 파일이나 디렉터리가 없습니다
경고: file /usr/lib/ambari-metrics-collector/protobuf-java-3.17.3.jar: remove failed: 
그런 파일이나 디렉터리가 없습니다
경고: file /usr/lib/ambari-metrics-collector/jakarta.ws.rs-api-2.1.6.jar: remove failed: 
그런 파일이나 디렉터리가 없습니다

 

위에 발생한 javax 오류는 위의 jakarta.ws.rs-api-2.1.6.jar 파일이 없어서 발생하는 것이다.
해당 파일들을 해당 경로에 넣어주면 해결된다.
 
 

해결 방법

Master Node에서 find로 찾아보면 동일 파일명이 다른 경로에 위치한다.
해당 파일들을 /usr/lib/ambari-metrics-collector 경로로 복사한다.

jar 파일들이 없는 경우

만약 없는 경우 maven 사이트와 같이 jar 파일을 다운로드 할 수 있는 곳에서 다운로드한다.
mvnrepository.com 사이트의 경우 Files의 jar 또는 bundle을 클릭하면 다운로드 받을 수 있다.
 
또는 아래 파일들을 다운로드하여 사용한다.
 

 

다운로드한 파일들을 /usr/lib/ambari-metrics-collector 경로로 복사한다.
 

jar 파일들이 있는 경우

아래 명령어를 사용해서 jar 파일들의 경로를 확인한다.
$ sudo find / jakarta.ws.rs-api-2.1.6.jar
$ sudo find / javax.ws.rs-api-2.1.jar
$ sudo find / protobuf-java-3.17.3.jar 
$ sudo find / sevlet-api-2.5.jar
 
확인한 파일 경로를 이용하여 아래와 같이 복사를 진행한다.
$ sudo cp /jar파일경로 /usr/lib/ambari-metrics-collector
 
 

결과 확인

위의 파일들을 복사하고 ambari-metrics-collector를 재시작하면 파란불이 활성화되면서 동작한다.

 

그러나 로그를 출력하면 아래와 같은 경고(Warning)가 확인된다.
# ambari-metrics-collector 로그 확인
$ cat /var/log/ambari-metrics-collector/ambari-metrics-collector.out

23/03/26 16:23:56 [qtp892262157-123] 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)

 

이 부분은 아직 해결하지 못했으나 일단 나머지 부분이 동작하기 때문에 NEXT 로 남겨두고 다른 작업을 진행한다.
  • 사실 Hbase, Phoenix까지 확인하고 분석해봐야 하는데... 아직은... ㅠㅠ
  • 인터넷 환경은 jar 파일 이슈는 없지만 위의 경고와 동일하게 발생한다... (Bigtop에서 못잡은 warning인 걸로 추정...)