하둡 척와(Hadoop Chukwa) 초보 가이드 – 에이전트 영향도 분석

이 글은 크몽 재능인, socurites님이 원고를 기고하셨습니다.

척와 초보자를 위한 가이드로, 총 3개로 구성되어 있습니다.

  1. 기본
  2. 설치하기
  3. 에이전트 영향도 분석

척와 에이전트의 경우, 로그를 수집할 대상 서버에 설치된다. 따라서 에이전트로 인해 해당 서버의 본래의 기능에 영향을 미쳐서는 안된다. 이를 위해 척와 에이전트가 설치되었을 때 로그 수집 대상 서버에 미치는 영향도를 분석하고자 한다.

준비사항

로그 생성 서버

테스트 목적으로 로그를 생성하는 데모 서버를 다운 받는다.

demo_loggers.jar

해당 서버를 실행하면, /tmp/ws_demo_log 디렉토리에 demo라는 이름의 로그를 생성한다.

척와 어댑터

데모 서버가 생성한 로그를 tailing할 어댑터를 initial_adaptors 설정 파일에 등록한다.

add filetailer.FileTailingAdaptor DaemonData /tmp/ws_demo_log/demo 0

성능 측정 스크립트

성능 측정 스크립트인 usage_ps.sh 스크립트를 아래와 같이 작성한다

pid=`cat /tmp/chukwa/pidDir/Agent.pid`
out_file="output_$1.txt"
rm -rf $out_file
echo "%CPU $MEM VSZ RSS" >> $out_file
while (true)
do
    sleep 3
ps aux | grep $pid | grep -v grep | awk '{print $3, $4, $5, %6 }' &>> $out_file
done

영향도 분석 시나라오

영향도 분석을 위한 시나리오는 다음과 같다.

  1. 척와 컬렉터, 척와 에이전트를 실행한다.
  2. 로그 생성 데몬 서버를 실행한다.
    java -cp ./demo_loggers.jar com.socurites.utils.web.server.demo.Main [number of Visitor]
    

    [number of Visitor]에는 실제 서버에서 발생하는 접속자 수 증가 등을 반영하기 위해 임의의 숫자를 입력한다. 여기에서는 3, 100, 1000을 사용했다.

  3. 성능 측정 스크립트를 실행한다.
    sh usage_ps.sh [number of Visitor]
    

    [number of Visitor]는 선택적인 옵션으로, 데모 서버를 실행할 때 사용했던 숫자와 동일한 숫자를 입력한다. 성능 결과는 현재 디렉토리에 output_[number of Visitor].txt 라는 이름으로 생성된다. 따라서 [number of Visitor]를 인자로 주지 않으면 output_.txt 라는 이름으로 생성되며, 여기에서는 옵션을 주지않고 실행했다.

 작업 과정

아래와 절차에 따라 작업을 수행했다.

[number of Visitor] = 3인 경우

시나리오 1번 과정, 3번 과정을 먼저 처리 한후, [number of Visitor]에 3을 설정한 후 그 결과를 수집했다. 이에 따른 데모 서버의 처리 결과는 다음과 같다.

===========================================
SUMMARY
===========================================
= Started At: 2011-11-29 20:14:30
= Ended At: 2011-11-29 20:15:20
= Size(bytes): " + fileSize); 84162
= Log Size/Time(Bytes/Sec): 1
===========================================

[number of Visitor] = 100인 경우

로그 데모 서버를 중지한 후, [number of Visitor]에 100을 설정해서 서버를 재실행하여 그 결과를 수집했다. 이에 따른 데모 서버의 처리 결과는 다음과 같다.

===========================================
SUMMARY
===========================================
= Started At: 2011-11-29 20:15:24
= Ended At: 2011-11-29 20:16:13
= Size(bytes): " + fileSize); 2754700
= Log Size/Time(Bytes/Sec): 55
===========================================
<p>

[number of Visitor] = 1000인 경우

로그 데모 서버를 중지한 후, [number of Visitor]에 1000을 설정해서 서버를 재실행하여 그 결과를 수집했다. 이에 따른 데모 서버의 처리 결과는 다음과 같다.

===========================================
SUMMARY
===========================================
= Started At: 2011-11-29 20:16:29
= Ended At: 2011-11-29 20:17:10
= Size(bytes): &quot; + fileSize); 21950227
= Log Size/Time(Bytes/Sec): 538
===========================================

서버 처리 결과에서 보는 바와 같이 로그 생성 속도는 선형적으로(1 -> 55 -> 538)로 증가함을 알 수 있다.

결과 분석

영향도를 측정한 결과 파일은 다음과 같다 (중간 부분은 일부 생략했다).

%CPU %MEM VSZ RSS
1.4 1.5 419024 27224
1.3 1.5 419024 27224
1.3 1.5 419024 27224
1.1 1.5 419024 27224
1.1 1.5 418928 27292
0.9 1.5 418928 27324

확인 결과 오히려 CPU와 메모리 사용률이 증가하지 않고, 적어지는 결과가 나왔다. 눈으로 보이는 결과만 봐서는 두 가지 결론을 내릴 수 있다.

  • 측정 방법에 문제가 있다.
  • 실제로 척와 에이전트가 로그 수집 대상 서버에는 영향을 미치지 않는다.

추가적인 분석

분석작업을 수행하면서 이와 동시에 척와 에이전트 로그를 tailing해서 실제로 에이전트가 어떻게 로그를 처리하고 있는지 함께 확인했다. 물론 정량적인인 분석은 아니며, 육안으로 확인할 결과다.

  • [number of Visitor]를 증가시켜 로그 생성 데모 서버를 실행하더라도, 척와 에이전트 로그의 생성 속도가 더 빨라지지 않았다. 이 현상을 통해 “로그 생성 속도가 빨라지더라도 척와 에이전트의 처리 속도가 그에 맞게 빨라지는게 아니라 정해진 속도를 따라 로그를 수집함”을 추정해볼 수 있다.
  • 앞의 두 작업([number of Visitor]가 3과 100이었던 경우)에서는 로그 데모 서버가 중지한 경우, 척와 에이전트 로그 또한 더 이상 로그가 쌓이지 않았다. 반면에 마지막 작업([number of Visitor]를 1000으로 지정한 경우)에서는 로그 데모 서버를 죽이고 나서도 척와 에이전트 로그가 한참동안 계속해서 쌓였다. 결국 “로그 생성 속도가 특정 값을 넘어서면 척와 에이전트의 로그 수집 속도가 따라가지 못하게 됨“을 추정해 볼 수 있다. 따라서 날짜가 바뀌는 경우 어떻게 처리할 것인지에 대한 문제가 숙제로 남았다.

참고자료

  • 클라우드 컴퓨팅 구현 기술 / 깅형준, 조준호, 안성화, 김병준 저 / 에이콘 출판사
  • 하둡 완벽 가이드 / 톰 화이트 지음 / 오라일리 출판사
  • Chukwa Documentation 4.0

크몽 재능

댓글 남기기