하둡 척와(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

크몽 재능

하둡 척와(Hadoop Chukwa) 초보 가이드 – 설치하기

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

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

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

설치전 준비사항

척와를 설치하려면 아래와 같은 항목이 먼저 준비되어야 한다.

  • 리눅스 플랫폼을 사용한다.
  • 1.6 이상 버전의 자바가 설치되어 있어야 한다.
  • Hadoop 0.20.2 버전을 다운로드 받아야 한다.
  • 여기에서는 HICC를 설치하지 않을 것이므로 MySQL은 필요 없다.

척와 구성 요소

척와는 아래와 같은 요소로 구성된다. 따라서 척와를 설치하려면 하둡 클러스터, 척와 에이전트, 척와 컬렉터를 설치해야 한다.

chukwa_system_diagram

  • 데이터를 저장할 하둡 클러스터(척와 클러스터)
    여기에서는 하둡 파일 시스템을 의사 분산 모드로 설치했다고 가정한다. 자세한 내용은 의사 분산 모드로 하둡(Hadoop) 실행하기을 참고하라
  • 척와 에이전트
    로컬 머신에서 모니터링한 로그 데이터를 전송한다
  • 척오 컬렉터
    에이전트에서 수신한 데이터를 HDFS에 저장한다

예제 구성

여기에서는 아래와 같은 구성으로 척와를 구성하고자 한다.

chukwa_sample

두 대의 리눅스 머신 중에서 하나는 척와 에이전트를, 나머지 하나는 척와 컬렉터를 설치하고자 한다. 척와 컬렉터를 설치한 머신에는 하둡을 의사 분산 모드로 설치해서, 로그 데이터를 저장하는 역할까지 하도록 한다.

척와 설치 공통사항

아래의 사항은 에이전트와 컬렉트를 설치할 머신에서 공통적으로 설정해야 하는 작업이다.

척와 설치하기

척와를 척와 릴리즈 페이지에서 다운로드 받는다. 여기에서는 chukwa-0.4.0.tar.gz를 다운로드 받았다.

로컬 파일 시스템의 적당한 위치에 압축을 푼다. 이렇게 하둡이 설치된 디렉토리를 CHUKWA_HOME이라고 부르자.

$ tar xvf chukwa-0.4.0.tar.gz

척와 관련 명령어를 쉽게 실행하기 위해 척와 설치 디렉토리(CHUKWA_HOME)를 환경 변수에 설정하고, PATH를 설정한다(필수 사항은 아니다). 여기에서는 .bashrc 파일에 설정했다

#CHUKWA
export CHUKWA_HOME=척와가 설치된 경로
export PATH=$PATH:$CHUKWA_HOME/bin

척와 공통 정보 설정하기

척와 공통 정보를 conf/chukwa-env.sh에 설정한다 (에이전트와 컬렉터가 설치된 머신 모두에 설정해야 한다).

JAVA_HOME 환경변수를 설정한다. 시스템 환경변수(.bashrc)에 설정해도 상관 없지만, 여기에서는 conf/chukwa-env.sh에 설정한다.

export JAVA_HOME=/usr/lib/jvm/java-6-sun5

척와 콘솔 로그와 pid 로그를 저장할 디렉토리를 conf/chukwa-env.sh에 설정한다. 여기에서는 디폴트 값을 그대로 사용한다.

export CHUKWA_PID_DIR=/tmp/chukwa/pidDir
export CHUKWA_LOG_DIR=/tmp/chukwa/log

척와 콘솔 로그 파일에 이름을 붙일 때 사용할 CHUKWA_IDENT_STRING을 conf/chukwa-env.sh에서 설정한다. 여기에서는 디폴트 값을 그대로 사용한다.

export CHUKWA_IDENT_STRING=chukwa

척와 에이전트 설치하기

척와 에이전트를 설치 과정은 “1. 척와 에이전트 옵션 설정하기”, “2. 에이전트 등록하기”, “3. 컬렉터 등록하기”, “4. 어댑터 등록하기”, 총 4개의 작업으로 구성된다.

에이전트 옵션 설정하기

척와 에이전트는 conf/chukwa-agent-conf.xml에서 설정한다. 디폴트 그대로 사용해도 실행하는데 문제가 없으며, 필요에 따라 아래의 옵션을 설정한다.

  • chukwaAgent.tags
    척와 클러스터명으로, 모니터링하고 있는 노드에 대한 식별자다. 이 정보는 수집한 각 청크에 저장되므로, 해당 청크가 어느 머신에서 전송되었는지를 이 정보를 통해 구분할 수 있다. 여기에서는 디폴트 값 그대로 둔다.
  • chukwaAgent.checkpoint.dir
    컬렉터에 데이터를 전송하면서 장애가 발생했을 때, 마지막으로 전송한 청크의 오프셋 정보를 저장할 때 사용한다. 여기에서는 디폴트 값을 그대로 사용한다.

에이전트 등록하기

에이전트로 실행할 전체 에이전트 목록을 conf/agents에 설정한다. 여기에서는 에이전트가 로컬서버 한대이므로 localhost만 등록한다.

#agent
localhost

컬렉터 등록하기

데이터를 전송할 컬렉터를 conf/collectors에 등록한다. 척와는 이 파일에서 컬렉터를 임의로 골라서 해당 컬렉터로 데이터를 전송한다. 해당 컬렉터에 장애가 발생하면, 컬렉터 목록에서 다른 컬렉터를 선택하는 방식으로 로그 유실을 방지한다.

여기에서는 221번 서버가 컬렉터이므로, 이 컬렉터에 대한 정보를 등록한다. 실행할 전체 컬렉터 목록은 컬렉터가 설치된 머신의 conf/collectors에서 설정한다.

# collectors
http://33.33.211.221:8080

어댑터 등록하기

데이터를 수집할 어댑터를 conf/initial_adaptors에 등록한다. 이처럼 어댑터를 설정파일에 등록할 수도 있지만, 실행 중인 에이전트에 어댑터를 직접 추가할 수도 있다.

여기에서는 conf/initial_adaptors.template 파일을 참조해서 만든다. 템플릿 파일에 등록된 어댑터 중에서 Df, Top에 해당하는 어댑터 2개만 conf/initial_adpators에 등록한다.

add org.apache.hadoop.chukwa.datacollection.adaptor.ExecAdaptor Df 60 /bin/df -l 0
add org.apache.hadoop.chukwa.datacollection.adaptor.ExecAdaptor Top 60 /usr/bin/top -b -n 1 -c 0

척와 에이전트 관리하기

척와 에이전트는 아래의 명령어를 실행해서 데몬으로 실행할 수 있다.

$ bin/start-agents.sh

명령어를 실행하면 conf/agents에 나열단 각 머신에 ssh로 접속해서 에이전트를 실행한다. 이 경우 에이전트가 로컬호스트 하나 뿐이므로, 로컬호스트의 에이전트가 실행된다.

척와 에이전트를 중지하려면 아래의 명령어를 실행한다.

$ bin/stop-agents.sh

에이전트가 제대로 동작중인지는 에이전트 포트(디폴트로 9093을 사용한다)에 텔넷으로 접속해서 확인할 수 있다. 에이전트가 정상적으로 동작중이라면, 에이전트와 관련된 상태 메시지가 나온다.

척와 컬렉터 설치하기

하둡 설정하기

컬렉터에서 수집한 데이터를 저장해야 하므로, 하둡과 관련된 설정을 추가해야 한다. conf/chukwa-env.sh에 HADOOP_HOME과 HADOOP_CONF_DIR을 아래와 같이 설정한다.

export HADOOP_HOME="하둡이 설치된 위치"
export HADOOP_CONF_DIR="${HADOOP_HOME}/conf"

척와 옵션 설정하기

척와 컬렉터는 conf/chukwa-collector-conf.xml에서 옵션을 설정할 수 있다. 반드시 설정해야 하는 부분은 writer.hdfs.filesystem다. 여기에서는 의사 분산 모드로 설치한 하둡 파일 시스템을 설정한다.

<property>
    <name>writer.hdfs.filesystem</name>
    <value>hdfs://localhost:9000</value>
    <description>HDFS to dump to</description>
</property>

이 외에도 컬렉터에서는 아래와 같은 속성을 설정할 수 있다.

  • chukwaCollector.writerClass
    – 로그 레코드를 저장할 Writer 클래스
    – 디폴트: org.apache.hadoop.chukwa.datacollection.writer.PipelineStageWriter
  • chukwaCollector.pipeline
    – PipelineStageWriter에서 사용할 Writer 클래스. 콤마로 분리해서 설정한다.
    – 디폴트: org.apache.hadoop.chukwa.datacollection.writer.SocketTeeWriter, org.apache.hadoop.chukwa.datacollection.writer.SeqFileWriter
  • writer.hdfs.filesystem (필수)
    – 수집한 로그를 저장할 하둡 파일 시스템
  • chukwaCollector.outputDir
    – 수집한 로그(싱크 파일)를 저장할 하둡의 디렉토리
    – 디폴트: /chukwa/logs/
  • chukwaCollector.rotateInterval
    – 오픈한 파일을 close()하는 주기 (ms)
    – 디폴트: 300000
  • chukwaCollector.http.port
    – 컬렉터가 리스닝할 포트 번호
    – 디폴트: 8080

컬렉터 등록하기

실행할 컬렉터는 모두 conf/collectors에 등록한다. 여기에서는 221번 서버가 컬렉터이므로, 이 컬렉터에 대한 정보를 등록한다.

http://33.33.211.221:8080

척와 컬렉터 관리하기

척와 컬렉터는 아래의 명령어를 실행해서 데몬으로 실행할 수 있다.

$ bin/start-collectors.sh

그러면 conf/collectors에 나열된 각 머신에 ssh로 접속해서 컬렉터를 모두 실행한다.

척와 컬렉터를 중지하려면 아래의 명령어를 실행한다.

bin/stop-collectors.sh

컬렉터가 제대로 동작중인지 확인하려면 브라우저에서 http://collectorhost:collectorport/chukwa?ping=true 로 접속한다. 여기에서는 http://localhost:8080/chukwa?ping=true 로 접속해 보면 아래와 같이 컬렉터와 관련된 상태 정보를 확인할 수 있다.

Date:1322449269195
Now:1322449296866
numberHTTPConnection in time window:0
numberchunks in time window:0
lifetimechunks:0

마지막으로 데이터 처리 프로세스를 실행한다.

$ start-data-processors.sh

그러면 아카이빙, 디먹스, HICC용 데이터 프로세싱 작업이 실행되고 이를 통해 주기적으로 데이터를 처리하게 된다. 실제로 start-data-processors.sh를 열어서 보면 아래와 같이, archive, demux, dp를 차례대로 실행함을 알 수 있다.

# start data processors
"$bin"/chukwa-daemon.sh --config $CHUKWA_CONF_DIR start archive
"$bin"/chukwa-daemon.sh --config $CHUKWA_CONF_DIR start demux
"$bin"/chukwa-daemon.sh --config $CHUKWA_CONF_DIR start dp

실행과정 눈으로 확인하기

이렇게 설치가 끝났다면, 실제로 척와 관련 데몬을 실행해서 제대로 실행되는지 확인해 보자.

척와 실행하기

이렇게 설정을 다했다면 아래와 같은 구성으로 관련 데몬을 실행한다.

chukwa_sample_daemo

척와 에이전트 실행 확인하기

척와 에이전트가 설치된 머신에서 /tmp/chukwa/logs로 이동한다. 해당 디렉토리에는 agent.log가 아래와 같이 생성되어 있다.

HTTP post thread ChukwaHttpSender - collected 14 chunks for post_53
HTTP post thread ChukwaHttpSender - >>>>>> HTTP post_53 to http://33.33.211.211:8080/ length=18715
HTTP post thread ChukwaHttpSender - >>>>>> HTTP Got success back from http://33.33.211.211:8080/chukwa; response length 826
HTTP post thread ChukwaHttpSender - post_53 send 0 chunks, got back 14 acks

척와 컬렉터 실행 확인하기

척와 컬렉터가 설치된 머신에서 /tmp/chukwa/logs로 이동한다. 해당 디렉토리에는 collector.log가 생성되어 있으며, 컬렉터와 관련된 로그를 확인할 수 있다.

하둡 파일 시스템 확인하기

척와 컬렉터의 데이터 프로세스를 실행했다면, http://localhost:50070/ 로 접속해서 아래와 같이 척와 스토리지를 확인할 수 있다.

chukwa_hadoop_console

참고자료

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

크몽 재능

하둡 척와(Hadoop Chukwa) 초보 가이드 – 기본

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

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

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

개요

하둡 척와(Chukwa)는 분산된 서버에서 로그 데이터를 수집하여 저장하며, 저장한 데이터를 분석하기 위해서 만들어졌다. 또한 하둡 클러스터의 로그, 서버의 상태 정보 등을 관리할 수 있는 기능도 포함되어 있다.

장점

  • 로그를 생성하는 응용 프로그램의 로그 저장 모듈을 수정하지 않고도 로그를 수집할 수 있다.
  • 수집된 로그 파일을 하둡 파일 시스템(HDFS)에 저장한다. 따라서 하둡 파일 시스템의 장점을 그대로 가진다.
  • 실시간 분석도 가능하다.

단점

  •  하둡 파일 시스템이 먼저 설치되어 있어야 한다. 하지만 하둡은 단순히 압축만 풀어서 설치할 수 있으므로 큰 문제는 아니다.

척와 시스템 구성

척와 시스템은 아래와 같이 구성된다.

chukwa_system_diagram

  • 척와 에이전트(agent)
    로그를 수집할 대상 서버(Monitored Source Node)에 설치한다. 에이전트는 해당 서버의 로그 파일이나 서버 정보를 컬렉터로 전송한다.
  • 척와 컬렉터(collector)
    여러 대의 에이전트로부터 로그 정보를 수신해서 하둡 파일 시스템에 저장한다.
  • 데이터 프로세싱(data processing)
    컬렉터가 수신한 데이터에 대해 아카이빙(archiving), 디먹스(demux) 등의 작업을 수행해서 처리한다.
  • HICC(Hadoop Infrastructure Care Center)
    하둡 클러스터의 로그 파일과 시스템 정보를 수집해서 분석한 후, 웹 UI를 통해 보여준다. 일반적인 로그 수집을 위한 용도가 아니라 하둡 클러스터 자체를 관리하는 기능이므로, 여기에서는 다루지 않겠다.

에이전트

척와 에이전트 자체에서 데이터를 직접 수집하지는 않고, 어댑터(adaptor)를 통해서 수집한다. 어댑터는 에이전트 프로세스 안에서 실행되며, 데이터를 실제로 수집하는 역할을 한다. 에이전트에 어댑터를 등록하는 방법에는 두 가지가 있다.

  • 에이전트가 시작할 때 읽어들이는 환경 설정 정보(conf/initial_adaptors)에 어댑터를 추가
  • 실행 중인 에이전트에 직접 어댑터를 추가

에이전트는 실행될 때 환경 설정 파일(conf/collectors)을 읽어들인 후, 이 중에서 하나의 컬렉터를 랜덤하게 선택해서 데이터를 전송한다. 선택한 컬렉터 서버에 장애가 생긴면, 설정 파일에 등록된 다른 컬렉터 서버에 데이터를 전송한다.

  • 에이전트 쪽 로그 유실 방지
    모든 컬렉터 서버에 장애가 있다면, 마지막으로 전송된 파일의 오프셋 정보(checkpoint)를 로컬 파일 시스템에 기록해 둔다. 이후에 컬렉터에 정상적으로 데이터를 전송할 수 있을 때가 되면, 해당 오프셋 이후의 데이터를 전송한다. 이러한 방식을 통해 로그 유실을 방지한다.

컬렉터

에이전트로부터 전송된 데이터를 주기적으로 하둡 파일 시스템에 저장한다. 이때 한 컬렉터는 여러 대의 에이전트 서버로부터 데이터를 전송받지만, 이를 하나의 파일에 저장한다. 이처럼 컬렉트가 저장하는 파일을 싱크(sink) 파일이라고 부르며, 하둡 파일 시스템의 SequenceFile 포맷으로 저장한다.

  • 컬렉터 쪽 로그 유실 방지
    하둡 파일 시스템은 파일을 저장할 때 특정 크기(64MB) 이상이 되지 않으면 close() 명령을 이용해서 파일을 닫지 않는 한 파일 내용이 보이지 않는다. 따라서 파일을 저장하는 클라이언트(이 경우 컬렉터)가 비정상 종료된 경우, 해당 데이터가 유실될 수 있다. 척와에서는 데이터가 유실되는 일을 방지하기 위해, 주기적으로 새로운 파일을 생성하고 에이전트에서 전송받은 데이터를 새로운 파일에 저장한 후 close()한다.

컬렉터는 로그 파일을 하둡 파일 시스템에 저장한다. 하지만 사용자 정의 Writer를 지정할 수도 있다. 예를 들어 척와에서 제공하는 PipelineStageWriter를 사용하면, 하나의 로그에 대해 여러 개의 Writer를 사용할 수 있다. 이를 통해 로그를 저장하는 동시에, 실시간으로 분석할 수도 있다. 실제로 척와에서는 디폴트로 PipelineSgateWriter를 사용한다.


// chukwa-collector-conf.xml 중에서

....

<property>

    <name>chukwaCollector.writerClass</name>

    <value>org.apache.hadoop.chukwa.datacollection.writer.PipelineStageWriter</value>

</property>

<property>

    <name>chukwaCollector.pipeline</name

    <value>org.apache.hadoop.chukwa.datacollection.writer.SocketTeeWriter,

org.apache.hadoop.chukwa.datacollection.writer.SeqFileWriter</value>

</property>

...

데이터 프로세싱

척와에서 로그 데이터를 처리하는 작업에는 아카이빙(archiving)과 디먹스(demux), 2가지 작업이 있다.

  • 아카이빙(archiving)
    아카이빙은 컬렉터가 저장한 로그 파일을 이용해서 시간 순서와 동일한 그룹으로 묶는 작업을 수행한다. 아카이빙에서는 데이터의 중복을 제거하고 정렬작업을 수행한 후, 하둡의 SequenceFile 포맷으로 저장한다.
  • 디먹스(demux)
    디먹스는 로그 레코드를 파싱해서 키-값 쌍으로 구성되는 ChukwaRecord를 만든 후, 하둡 파일 시스템에 다시 파일로 저장한다.

뿐만 아니라 맵리듀스(MapReduce)를 직접 만들어서, 아키이빙과 디먹스 작업이 완료된 데이터에 대해 맞춤형 분석 작업을 할 수도 있다. 척와 내부적으로도 PostProcessing이라는 작업을 수행한다. 디먹스가 완료된 데이터 중에서 하둡 클러스터의 시스템 메트릭 정보 등을 HICC에서 사용하는 데이터로 변환한 후, MySQL에 저장하는 과정이 PostProcessing 작업이다. PosteProcessing 코드를 참조하면, 로그 파일을 요구에 맞게 분삭하는 시스템을 구축할 수 있을 것으로 보인다.

척와 데이터 모델

척와 어댑터는 데이터를 청크(chunk) 단위로 전송한다. 청크란 일련의 바이트로 구성되며, 메타데이터가 일부 포함된다. 이러한 메타데이터는 다음과 같다. 이 중에서 Cluster와 Datatype은 사용자가 직접 설정해야 한다.

  • Source
    청크가 생성되는 호스트명
    자동으로 설정된다
  • Cluster
    호스트가 연결된 클러스터
    conf/chukwa-env.sh에 사용자가 설정한다.
  • Datatype
    출력 포맷
    어댑터를 구동할 때 사용자가 지정한다.
  • Sequence ID
    스트림에서 청크의 오프셋
    자동으로 설정되며, 초기 오프셋은 어댑터가 실행될데 설정된다.
  • Name
    데이터 소스 이름
    자동으로 설정되며, 어댑터가 선택한다.

장애가 발생했을 때 로그를 재전송하는 경우, 로그 데이터의 중복을 방지하기 위해서 이러한 메타데이터가 추가된다. 또한 로그의 데이터 타입별로 서로 다른 분석작업이 필요한 경우, 데이터 타입 정보를 이용할 수도 있다.

척와 스토리지 구조

척와에서 사용하는 하둡 파일 시스템의 구조

일반적으로 척와의 파일 시스템은 아래와 같이 구성된다.


/chukwa/

    archivesProcessing/

    dataSinkArchives/

    demuxProcessing/

    finalArchives/

    logs/

    postProcess/

    repos/

    rolling/

    temp/

척와 데이터 프로세싱 단계

척와 에이전트에서 전송한 데이터는 아래의 단계를 따라 처리된다.

  1. 청크 사이즈가 64MB가 될때까지, 또는 지정된 시간 간격이 지날 때까지는 청크를 logs/*.chukwa 파일에 저장한다.
  2. 컬렉터는 청크를 닫고, 청크를 *.done으로 이름을 변경한다.
  3. DemuxManager가 *.done 파일이 있는지 매 20초마다 검사한 후, 있으면 처리한다.
    – *.done 파일이 있으면, 해당 파일을 디먹스 프로세싱을 하기 위한 위치(demuxProcessing/mrInput)로 옮긴다.
    – demuxProcessing/mrInput에 있는 데이터에 대해 디먹스 MapReduce 잡이 실행하고, 그 결과를 출력 위치(demuxProcessing/mrOutput)에 저장한다.
    – 디먹스가 3번 시도하고, 성공하면 처리 완료된 파일을 아카이빙(dataSinkArchives/[yyyyMMdd]/*/*.done) 한다.
    – 디먹스가 실패하면 해당 파일을 에러 폴더(dataSinkArchives/InError/[yyyyMMdd]/*/*.done)로 옮긴다.
  4. HICC를 위한 데이터 프로세싱 작업이 주기적으로 실행된다 (자세한 내용은 생략한다).
  5. ChukwaArchiveManager가 30분마다 한번 정도로 실행되어, 맵리듀스를 사용해 아카이빙 처리를 한다. 아카이빙 처리가 되면서 dataSinkArchives에 있던 데이터를 삭제한다.
    dataSinkArchives/[yyyyMMdd]/*/*.done
    => archivesProcessing/mrInput
    => archivesProcessing/mrOutput
    => finalArchives/[yyyyMMdd]/*/chukwaArchive-part-*

이제 척와에 대한 개략적인 설명은 이 정도로 해 두고, 실제로 척와를 설치해 보자. 척와 설치와 관련해서는 “하둡 척와(Hadoop Chukwa) 초보 가이드 – 설치하기”에서 살펴보겠다.

참고자료

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

크몽 재능