flume 이란 ?

분산 환경에 만들어진 대용량의 로그 데이터를 효율적으로 옮길 수 있는 로그 수집기.
수많은 분산된 서버의 로그 데이터를 HDFS 한곳으로 모으도록 해줍니다.

FLUME ARCHITECTURE

master : 저장소 + Flume master
Agent : 데이터를 생산하는 시스템에 설치.
Collector : 에이전트로 부터 데이터를 수집하여 HDFS에 보내는 역할
( 에이전트와 콜렉터 상태 모니터링 )
에이전트가 발생한 로그나 데이터들을 모니터링하여 데이터 스트림을 생성하여 콜렉터로 보낸다.
콜렉터는 작은 스트림들을 묶어서 보다 큰 스트림으로 뭉친 다음 HDFS에 저장한다

설치환경
OS : ubuntu 12.04.2 LTS
JDK : sun 1.6.0_38
flume: flume-0.9.4-cdh4.0.1

하둡을 설치한 머신에 flume을 같이 설치하는 경우에는 hadoop namenode 포트를 변경해 줘야 한다.
왜 그런지 모르겠으나 flume 설치후 namenode가 시작이 안된다.

그리고 flume설치후 리부트를 하면 flume master 데몬은 띄우면 안된다.
자동 실행되기때문에 재 실행하면 떠있는 데몬이 죽는다.

flume 다운로드
 
http://archive.cloudera.com/cdh4-deprecated/cdh/4/flume-0.9.4-cdh4.0.1.tar.gz
압축해제
tar xvfz flume-0.9.4-cdh4.0.1.tar.gz
환경변수 설정
gedit /etc/profile
export FLUME_HOME=/usr/lib/flume
export FLUME_CONF_DIR=/usr/lib/flume/conf

flume-site.xml 수정
cd /home/hadoop/flume/conf
vi flume-site.xml
<configuration>
  <property>
    <name>flume.master.servers</name>
    <value>flumemaster</value>
    <description>This is the address for the config servers status
 server (http)
    </description>
  </property>
</configuration>

flume master 실행
$ ./bin/flume master
flume을 최초에 실행하고 나서 리부트 하면
자동으로 Flume 데몬이 뜨므로 다시 띄우면 안됨
다시 띄우면 데몬이 죽고 다시 실행이 안됨
http://localhost:35871/

Flume Agent 실행
새로운 터미널을 열어서 아래 행을 실행한다.
$ ./bin/flume node_nowatch -n agent01
http://localhost:35862/

Flume Collector
새로운 터미널을 열어서 아래 행을 실행한다.
$ ./bin/flume node_nowatch -n collector01


tail과 tailDir 소스 설정법

규칙 : tail("filename"[,startFromEnd=false]{.delim="regex", delimMode="exclude|prev|next"})
사용예 : tail("파일명")

규칙 : 약("dirname"[, fileregex=".*"[, startFromEnd=(false[, recurseDepth=0]]]{,delim="regex", delimMode="exclude|prev|next"})
사용예 : tailDir("디렉터리명)

실습을 위한 flume master 설정
http://localhost:35871/
위 url로 들어가서 config에서 설정하는 방법과 쉘 커멘드에서 설정하는 방법이 있다.

아래는 쉘 커멘드로 설정하는 방법이다.

flume 쉘 커멘드 실행

새로운 터미널을 연다.
$./flume shell -c localhost

exec config agent 'tail("/usr/lib/flume/test.txt")' 'agentSink("localhost",35853)'

exec config collector 'collectorSource(35853)' 'collectorSink("file:///usr/local/flume/collected", "test")'

exec config agent 'tailDir("/usr/local/hadoop-1.0.4/logs/")' 'agentSink("localhost",35853)'

exec config collector 'collectorSource(35853)' 'collectorSink("file:///usr/local/flume/collected", hadoop_log")'

flume master에서 결과 확인
http://localhost:35871/

colleced 폴더에 로그파일이 수집된 모습

수집된 파일의 내용


 

'Hadoop' 카테고리의 다른 글

hadoop 데몬  (0) 2013.02.19
하둡 Master / Slave 접근방식과 ssh의 설정  (0) 2013.02.19
하둡 설정 파일  (0) 2013.02.19
HDFS의 특징  (0) 2013.02.19
hadoop HDFS 명령어  (0) 2013.02.19
by pacino.kang 2013. 3. 7. 12:40