[Hadoop] flume 개념 및 설치

Use_Silver·2022년 2월 8일
0

하둡

목록 보기
11/12

Flume이란?

  • source -> CHANNEL(연결) -> sink 하는 과정을 flume agent라고 한다
  • flume : 로그 수집기
  • source : 모든 로그를 수집
  • sink : 내보내는 곳 => hdfs에 내보내기, rdb(sqoop)연결 , hive 연결=> hdfs에 내보내기 등 다양하게 내보내기 할 수 있음
  • flume agent => 하나의 수도관에서 나온 물을 여러군데로 돌리는 느낌

참고하기 :

flume 설치

1. hadoop 실행

  • hadoop dfs 실행
    start-dfs.sh
  • hadoop yarn 실행
    start-yarn,sh

2. flume 설치

	vi .bashrc

        export FLUME_HOME=/home/hadoop/flume-1.9.0
        export PATH=$PATH:$HADOOP_HOME/sbin:$HADOOP_HOME/bin:$HIVE_HOME/bin:$SQOOP_HOME/bin:$FLUME_HOME/bin

    source .bashrc
    echo $FLUME_HOME          -> /home/hadoop/flume-1.9.0
    flume-ng version
    flume-ng help
  • flume 설정
    conf/flume-conf.properties.template
    vi flume-env.sh.template
    cp flume-env.sh.template flume-env.sh
    echo $JAVA_HOME

    vi flume-env.sh => $JAVA_HOME 추가

flume 실습

  • source : ssh에 접속했을 때 남는 log
    root에서 cd /var/log/ -> ls -> ls sec* 확인

    ll sec*으로 권한 확인

    다른 사람이 가져갈 권한이 없음 => ssh에 다른 user가 read할 권한을 부여해야함
    chmod o+r secure others에 read 권한을 줌

    다른 계정에서 읽어지는지 확인
    cd /hadoop/flume-1.9.0/conf
    cat /var/log/secure

  • agent 생성
    agent 생성 예시) agent 이름을 밖에서 정의
    flume-ng 에이전트 -n $agent_name -c conf -f conf/flume-conf.properties.template
    ==> flume-ng agent -n 이름 -c 위치 -f 파일명

    • agent a00 생성
      flume-ng agent -n a00 -c conf -f conf/flume-conf-00.properties
    • flume-conf.properties.template 복사
      cp flume-conf.properties.template flume-conf-00.properties
    • cat > flume-conf-00.properties 아래 내용 입력
a00.sources = s00
a00.channels = c00
a00.sinks = k00 

a00.sources.s00.type = exec
a00.sources.s00.command = tail -F /var/log/secure
a00.sources.s00.channels = c00
a00.sources.s00.interceptors=i00
a00.sources.s00.interceptors.i00.type=timestamp

a00.sinks.k00.type=hdfs
a00.sinks.k00.channel=c00
a00.sinks.k00.hdfs.path=hdfs://192.168.56.115:9000/user/flume/events/%y-%m-%d/%H%M/
a00.sinks.k00.writeFormat=Text

a00.channels.c00.type = memory
a00.channels.c00.capacity = 1000
a00.channels.c00.transactionCapacity = 100

** 위 코드에 대한 부가 설명
agent 이름.sources list = source의 이름
agent 이름.channels list = channels의 이름
agent 이름.sinks list = sinks의 이름

a00.sources = s00 
a00.channels = c00
a00.sinks = k00 

agent의 이름은 밖에서 정의된 것을 써야 함
source list 중에서도 s00이라는src의 type과 ~~은 이렇다
sinks의 list 중에서도 k00이라는 sink의 type과 ~~은 이렇다
chennels의 list 중에서도 c00이라는 channels의 type과 ~~은 이렇다

a00.sources.s00.type = exec
...

a00.sinks.k00.type=hdfs
...

a00.channels.c00.type = memory
...

sink가 여러개?
a00.sinks = k00 k01 k02

a00.sinks.k01.type=hdfs
a00.sinks.k01.channel=c00
a00.sinks.k01.hdfs.path=hdfs://192.168.56.100:9000/user/flume/events/%y-%m-%d/%H%M/
a00.sinks.k01.writeFormat=Text

a00.sinks.k02.type=hdfs
a00.sinks.k02.channel=c00
a00.sinks.k02.hdfs.path=hdfs://192.168.56.100:9000/user/flume/events/%y-%m-%d/%H%M/
a00.sinks.k02.writeFormat=Text

이렇게 만들어 주면 됨

다대다 관계가 된다는 것
하나의 agent 안에서 밖에 끌어가서 사용할 수 는 없음
agnet 하나가 메모리 영역임

  • 실행
    flume-ng agent --conf $FLUME_HOME/conf/ --conf-file $FLUME_HOME/conf/flume-conf-00.properties --name a00 -Dflume.root.logger=INFO,console
  • flume 생성 x => 위 같이 하면 agent를 못찾음
  • guava 문제
  • hadoop 3.x 대 인데 guava가 아직 1.x 버전인게 있음
  • guava가 update가 안됐음
[hadoop@hadoop00 conf]$ cd ../lib/
[hadoop@hadoop00 lib]$ ll gua*
-rw-rw-r-- 1 hadoop hadoop 1648200 Feb  8 10:24 guava-11.0.2.jar


guava 27버전

flum library 에 복사

[hadoop@hadoop00 lib]$ cp guava-27.0-jre.jar $FLUME_HOME/lib
[hadoop@hadoop00 lib]$
[hadoop@hadoop00 lib]$ cd
[hadoop@hadoop00 ~]$ cd flume-1.9.0/
[hadoop@hadoop00 flume-1.9.0]$ cd lib/
[hadoop@hadoop00 lib]$ ll gu*
-rw-rw-r-- 1 hadoop hadoop 1648200 Feb  8 10:24 guava-11.0.2.jar
-rw-r--r-- 1 hadoop hadoop 2747878 Feb  8 12:21 guava-27.0-jre.jar
[hadoop@hadoop00 lib]$
[hadoop@hadoop00 lib]$ mv guava-11.0.2.jar ~guava-11.0.2.jar
[hadoop@hadoop00 lib]$ ll gu*
-rw-r--r-- 1 hadoop hadoop 2747878 Feb  8 12:21 guava-27.0-jre.jar
[hadoop@hadoop00 lib]$

다시

Error 시, 1번째
     cp  $HADOOP_HOME/share/hadoop/common/lib/guava-27.0-jre.jar 	   $FLUME_HOME/lib

Error 시, 2번째
     cp  $HADOOP_HOME/share/hadoop/common/lib/woodstox-core-5.0.3.jar     $FLUME_HOME/lib
  • flume 생성 확인

  • root에서 실행



[[ ssh 접근 시도 ]]

1번째 > while [ 1 -le 2 ] ; do ssh hadoop00 hostname; done

2번째 > x=0; while [ $x –le 100 ]; do ssh hadoop00 hostname; x=$((x+1)) ; done
profile
과정은 힘들지만😨 성장은 즐겁습니다🎵

0개의 댓글