Outsider's Dev Story

Stay Hungry. Stay Foolish. Don't Be Satisfied.
RetroTech 팟캐스트 44BITS 팟캐스트

Flume #2-1 간단한 사용예제

이 글은 Flume #1 소개에서 이어진 글 입니다.



Flume 설치
flume-0.9.4는 아파치 인큐베이팅에서는 링크가 사라졌기 때문에 Cloudera의 아카이브 페이지에서 다운받아야 합니다. 아카이브 페이지에서 flume-0.9.4-cdh3u4.tar.gz 파일을 찾아 다운로드 받으면 됩니다. 설치라고 할 것도 없이 이 압축파일을 원하는 곳에 풀어줍니다. 에이전트, 컬렉터, 마스터 모두 같은 소스를 사용하고 실행할 때의 명령어만 약간 다를 뿐입니다.

많은 기능을 다 설명하기는 어렵도 Flume의 동작을 이해할 수 있는 정도에서 간단히 설정해서 사용해보겠습니다. 여기서 설명할 사용예제는 간단히 Flume의 용도와 동작방식을 이해할 수 있는 수준의 예제이고(저도 거기까지밖에 모릅니다.) 실제로 업무에 사용하시려면 유저가이드를 보시거나 더 많은 테스트를 해보셔야 할 겁니다.



Flume Master
Flume Master를 먼저 실행하겠습니다. Flume 압축을 푼 디렉토리 아래 bin 디렉토리에 flume 실행파일이 존재합니다. flume를 실행하려면 FLUME_CONF_DIR 환경변수가 지정되어 있어야 합니다. FLUME_CONF_DIR 환경변수에 지정한 위치에서 flume의 설정파일인 flume-conf.xml 이나 flume-site.xml 파일을 찾고 FLUME_CONF_DIR 환경변수가 없는 경우에는 현 위치에서 conf 디렉토리에서 설정파일을 찾습니다. 이 두가지로 설정파일을 찾지 못한 경우에는 "FLUME_CONF_DIR cannot be determined, please set explicitly" 라는 오류메시지가 나옵니다. 마스터를 실행하하기 위해 다음과 같은 명령어를 입력합니다.

$ ./bin/flume master

FLUME_CONF_DIR 환경변수를 따로 지정하지 않고 현위치의 conf 디렉토리를 사용하기 위해서 flume 압축파일을 푼 디렉토리에서 bin/flume을 실행했습니다. 여기서는 마스터를 실행하는 것이므로 master 커맨드를 입력하면 flume 노드가 마스터로 실행됩니다.

Flume master 노드 실행

위처럼 실행되는 로그 메시지가 나오고 하단에 보면 마스터 노드가 실행된 포트를 볼 수 있습니다. 현재 웹서버가 35871 포트로 시작되었습니다. conf/flume-conf.xml (압축풀면 포함되어 있습니다.)을 보면  flume.master.http.port 프로퍼티로 정의된 마스터의 기본포트입니다. 원한다면 conf/flume-conf.xml에서 다른 포트로 변경할 수 있습니다. 그 아래보면 컨트롤 서버가 35872로 시작되었습니다. 이 포트는 35871을 시작으로 포트번호가 하나씩 올라간 것입니다. 이 컨트롤 서버를 통해서 에이전트가 컬렉터가 마스터서버에 접속합니다. 어드민 서버는 35873 포트로 시작되었는데 뒤에서 볼 어드면 명령어 쉘에 접속할 때 이 포트를 사용합니다. 웹브라우저에서 http://localhost:35871 로 접속하면 마스터의 정보를 볼 수 있는 페이지가 다음과 같이 나옵니다.

Flume master 상태확인 웹페이지

마스터외에는 아무런 노드를 실행하지 않았으므로 아무런 정보가 출력되지 않지만 Node의 상태와 설정내역, 물리적 노드와 논리적 노드의 매핑관계등을 볼 수 있습니다. Flume master는 Standalone 모드와 Distributed 모드가 있습니다. Standalone 모드에서는 마스터를 하나만 실행하는 것으로 간단하지만 이중화가 안되므로 확장이나 장애복구가 취약합니다. Distributed 모드는 보통 마스터를 3개나 5개를 실행하고 뒤에서 설명할 설정파일의 flume.master.servers 속성에서 여러 마스터를 가르키게 지정하면 됩니다. 마스터가 여러 개 이므로 당연히 확장성이 좋고 한대가 죽더라도 다른 마스터가 그 역할을 대신합니다.



Flume Agent
이제 에이전트를 실행할 차례입니다. 에이전트는 다음과 같이 master 명령어 대신 node_nowatch 명령어를 사용해서 실행합니다.

$ ./bin/flume node_nowatch -n agent01
$ ./bin/flume node_nowatch -n agent02

-n 옵션은 실행한 에이전트에 이름을 지정한 것입니다. 이 옵션을 사용하지 않을 경우 머신의 호스트명을 사용하게 되는데 여기서는 하나의 PC에서 여러 노드를 실행할 것이므로 이름을 지정했습니다.

Flume Agent 실행 로그

에이전트는 기본포트인 35862 포트로 실행됩니다. 이 포트는 conf/flume-conf.xml 파일에 flume.node.status.port 속성으로 정의되어 있습니다. Flume은 이 포트를 기본으로 해서 포트를 자동으로 찾아서 사용합니다. 그래서 이미 포트가 사용중이라면 하나 높은 포트를 사용하게 되고 같은 PC에서 에이전트를 추가로 실행하면 35863 포트를 사용합니다.(그래서 agent02는 35863 포트를 사용합니다) 이 로그의 하단을 localhost:35872 로 마스터 서버에 접속한 것을 확인할 수 있습니다. 마스터 서버는 기본값인 localhost에서 찾게되고 이 설정은 flume.master.servers 속성에 정의되어 있습니다. 마스터 서버의 호스트명을 이 속석에 정의하면 되고 마스터 서버가 여럿인 경우에는 이 속성에서 마스터 서버의 호스트명을 콤마(,)로 구분해서 입력하면 됩니다.

Flume Node의 상태확인 웹페이지

마스터와 동일하게 웹브라우저에서 http://localhost:35862/ 로 접속하면 위처럼 에이전트 노드의 상태를 볼 수 있습니다. 다시 마스터의 상태페이지인 http://localhost:35871로 접속해 보면 다음과 같이 실행한 에이전트가 나오는 것을 볼 수 있습니다.

Flume Msater 상태확인 페이지에서 가 추가된 화면

논리적인 노드를 따로 생성하지 않았으므로 물리적인 노드에서 같은 이름으로 논리적인 노드가 생성됩니다. 그리고 노드의 상태는 아무 설정을 하지 않았으므로 IDLE로 나타납니다. 에이전트는 컬렉터 서버를 인식할 수 있어야 하므로 conf/flume-conf.xml 파일에서 flume.collector.event.host 속성과 flume.collector.port 속성으로 지정해주어야 합니다. 기본값으로 localhost와 35853 포트로 지정되어 있는데 여기서는 기본값을 그대로 사용합니다. Flume 노드에는 다음과 같은 상태가 있습니다.

  • HELLO : 새로운 노드 인스턴스가 마스터와 연결됨을 의미합니다.
  • IDLE : 노드의 설정이 완료되었거가 설정이 없습니다.
  • CONFIGURING : 노드가 설정정보를 받고 있고 설정을 활성화 하고 있습니다.
  • ACTIVE : 노드가 Source에서 데이터를 가져와서 Sink로 보내고 있음을 의미합니다.
  • LOST : 노드가 마스터와 연결이 끊어진 상태입니다.
  • DECOMMISSIONED : 노드를 의도적으로 마스터에서 해제시킨 상태입니다.
  • ERROR : 오류로 노드가 멈춘 상태를 의미합니다.




Flume Collector
이제 로그를 수집할 컬렉터를 실행해야 합니다. Flume에서 사이트에 특화된 설정은 conf/flume-site.xml 파일에 설정하고 이 파일이 없을 경우 conf/flume-conf.xml 파일을 사용합니다. 앞에서는 그냥 기본 설정을 사용했기 때문에 conf/flume-site.xml 파일을 생성하지 않았습니다.(압출을 풀면 conf/flume-site.xml.template 파일만 있으므로 이 파일을 복사해서 만들면 됩니다.) 컬렉터는 사실 에이전트와 용도만 다를 뿐 크게 다를 바가 없습니다. 다음 명령어로 컬렉터를 실행합니다.

$ ./bin/flume node_nowatch -n collector01

위 처럼 컬렉터 노드에 준 이름만 다를 뿐 에이전트를 실행할 때와 동일한 명령어를 사용합니다. collector01라고 이름을 준 것은 그냥 구분을 쉽게 하기 위해서 지정한 것으로 원하는 이름을 사용할 수 있습니다. 이제 마스터 상태를 볼 수 있는 페이지에 접속하면 다음과 같이 컬렉터 노드가 나타나는 것을 볼 수 있습니다.

Flume Msater 상태확인 페이지에서 컬렉터가 추가된 화면



이 글은 Flume #2-2 간단한 사용예제로 이어집니다.
2012/06/20 03:42 2012/06/20 03:42