Flume - 1.7.0 의 설치 와 설정

11979 단어 빅 데이터
Flume 이 뭐 예요?
Flume 은 클 라 우 드 라 가 개발 한 실시 간 로그 수집 시스템 으로 업계 의 인정 과 광범 위 한 응용 을 받 았 다.플 루 미의 초기 발행 버 전 은 현재 플 루 미 OG (original generation) 로 통칭 되 며 클 라 우 드 에 속한다.그러나 FLume 기능 이 확장 되면 서 Flume OG 코드 공정 이 비대 해 지고 핵심 구성 요소 의 설계 가 불합리 하 며 핵심 구성 이 기준 에 맞지 않 는 다 는 단점 이 드 러 났 다. 특히 Flume OG 의 마지막 발행 버 전 0.94.0 에 서 는 로그 전송 이 불안정 하 다. 이 문 제 를 해결 하기 위해 2011 년 10 월 22 일 에 cloudera 는 Flume - 728 을 완성 했다.Flume 에 대해 획기적 인 변경 을 실 시 했 습 니 다. 핵심 구성 요소, 핵심 구성 과 코드 구 조 를 재 구성 하고 재 구성 한 버 전 을 Flume NG (next generation) 라 고 부 릅 니 다.또 다른 이 유 는 Flume 을 apache 산하 에 포함 시 키 고 클 라 우 드 라 Flume 은 Apache Flume 으로 이름 을 바 꿨 기 때문이다.
Flume 의 특징
Flume 은 분포 식, 신뢰성, 사용 가능 한 대량의 로그 수집, 집적, 전송 시스템 입 니 다.로그 시스템 에서 각종 데이터 전송 자 를 맞 춤 형 으로 만들어 데 이 터 를 수집 하 는 것 을 지원 합 니 다.또한 Flume 은 데 이 터 를 간단하게 처리 하고 각종 데이터 수용 자 (예 를 들 어 텍스트, HDFS, Hbase 등) 에 기록 하 는 능력 을 제공 합 니 다.Flume 의 데이터 흐름 은 이벤트 (Event) 로 일관 되 어 있 습 니 다.이 벤트 는 Flume 의 기본 데이터 단위 로 로그 데이터 (바이트 배열 형식) 를 가지 고 있 으 며 헤더 정 보 를 가지 고 있 습 니 다. 이 이 벤트 는 Agent 외부 Source 에서 생 성 되 며 Source 가 이 벤트 를 캡 처 한 후에 특정한 포맷 을 한 다음 Source 는 이 벤트 를 (단일 또는 여러 개) 채널 에 밀어 넣 습 니 다.채널 을 버퍼 로 볼 수 있 습 니 다. 이 이 벤트 를 Sink 에서 처리 할 때 까지 저장 합 니 다.Sink 은 로 그 를 지속 하거나 이 벤트 를 다른 Source 로 밀어 내 는 일 을 맡 습 니 다.
Flume 의 신뢰성
노드 가 고장 났 을 때 로 그 는 다른 노드 로 전송 되 어 잃 어 버 리 지 않 습 니 다.Flume 은 세 가지 등급 의 신뢰성 보장 을 제공 합 니 다. 강 한 것 부터 약 한 것 까지 는 end - to - end (데이터 에이전트 를 받 으 면 먼저 이 벤트 를 디스크 에 기록 하고 데이터 전송 이 성공 하면 삭제 합 니 다. 데이터 전송 이 실패 하면 다시 보 낼 수 있 습 니 다), Store on failure 입 니 다.(이것 도 scribe 가 사용 하 는 정책 입 니 다. 데이터 수신 자 crash 시 데 이 터 를 로 컬 에 기록 하고 복구 후 계속 보 냅 니 다), Besteffort (데 이 터 를 수신 자 에 게 보 낸 후 확인 하지 않 습 니 다).
Flume 의 회복 가능성:
채널 을 사용 하 는 것 을 추천 합 니 다. FileChannel 을 사용 하 는 것 을 추천 합 니 다. 로 컬 파일 시스템 에서 이벤트 가 오래 지속 되 는 것 을 추천 합 니 다. (성능 이 떨 어 집 니 다)Flume 의 핵심 개념: Agent: JVM 을 사용 하여 Flume 을 실행 합 니 다. 모든 기 계 는 하나의 에이전트 를 실행 하지만 하나의 에이전트 에 여러 개의 sources 와 sinks 를 포함 할 수 있 습 니 다. Client: 데 이 터 를 생산 하고 하나의 독립 된 스 레 드 에서 실 행 됩 니 다. Source: Client 에서 데 이 터 를 수집 하여 Channel 에 전달 합 니 다. Sink: Channel 에서 데 이 터 를 수집 하여 하나의 독립 된 스 레 드 에서 실 행 됩 니 다. Channel: sources 와 sinks 를 연결 합 니 다. 이것 은 대기 열 과 같 습 니 다. Events: 로그 기록, avro 대상 등 이 될 수 있 습 니 다.
준비 하 다.
  • 1. 구 축 된 Hadoop 분포 식 집단
  • 2.apache-flume-1.7.0-bin.tar.gz

  • 설치 하 다.
    #tar -zxvf apache-flume-1.7.0-bin.tar.gz -C /usr/local/hadoop
    #cd /usr/local/hadoop
    #mv apache-flume-1.7.0-bin flume-1.7.0

    배치 하 다.
  • 1. flume - env. sh 수정
  • #cd /usr/local/hadoop/flume-1.7.0/conf
    #mv flume-env.sh.template flume-env.sh
    #vim flume-env.sh

    자바 환경 변수 추가
    export JAVA_HOME=/usr/local/jvm/jdk1.8.0_144
  • 2. flume 환경 변수 설정
  • #vim /etc/profile

    다음 기록 추가
    FLUME_HOME=/usr/local/hadoop/flume-1.7.0
    export PATH=$FLUME_HOME/bin:$PATH
    export FLUME_CONF_DIR=$FLUME_HOME/conf

    프로필 적용
    #source /etc/profile

    검증 하 다.
    [root@Slave1 ~]# flume-ng version
    Flume 1.7.0
    Source code repository: https://git-wip-us.apache.org/repos/asf/flume.git
    Revision: 511d868555dd4d16e6ce4fedc72c2d1454546707
    Compiled by bessbd on Wed Oct 12 20:51:10 CEST 2016
    From source with checksum 0d21b3ffdc55a07e1d08875872c00523
    [root@Slave1 ~]# 

    위 와 같이 설치 설정 이 성공 적 임 을 표시 합 니 다.
    Fluke 사례
  • 1. 프로필 작성
  • #vim logger.conf
    
    # Name the components on this agent
    agent1.sources = source1
    agent1.sinks = sink1
    agent1.channels = channel1
    
    # Describe/configure the source
    agent1.sources.source1.type = netcat
    agent1.sources.source1.bind = Slave1
    agent1.sources.source1.port = 44444
    
    # Describe the sink
    agent1.sinks.sink1.type = logger
    
    # Use a channel which buffers events in memory
    agent1.channels.channel1.type = memory
    agent1.channels.channel1.capacity = 1000
    //             event  
    agent1.channels.channel1.transactionCapacity = 100
    //       source       sink  event  
    
    # Bind the source and sink to the channel
    agent1.sources.source1.channels = channel1
    agent1.sinks.sink1.channel = channel1   //     channels channel
  • 2. 테스트
  • 시동 을 걸다
    [root@Slave1 flume-1.7.0]# bin/flume-ng agent --conf conf --conf-file conf/logger.conf --name agent1 -Dflume.root.logger=INFO,console
    
      
    agent:    agent
    --conf:      ,         
    --conf-file:        
    --name:   agent   
    -Dflume.root.logger=INFO,console(        )

    정보 생 성
    [root@Slave2 conf]# telnet Slave1 44444
    Trying 192.168.142.131...
    Connected to Slave1.
    Escape character is '^]'.
    luchao
    OK
    abcdefg
    OK
    hello world
    OK
    ABCDEFGHIJKLMNOPQRSTUVWXYZ
    OK

    정 보 를 받다
    2017-09-01 03:15:20,001 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:95)] Event: { headers:{} body: 6C 75 63 68 61 6F 0D                            luchao. }
    2017-09-01 03:15:26,551 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:95)] Event: { headers:{} body: 61 62 63 64 65 66 67 0D                         abcdefg. }
    2017-09-01 03:15:36,170 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:95)] Event: { headers:{} body: 68 65 6C 6C 6F 20 77 6F 72 6C 64 0D             hello world. }
    2017-09-01 03:16:14,197 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:95)] Event: { headers:{} body: 41 42 43 44 45 46 47 48 49 4A 4B 4C 4D 4E 4F 50 ABCDEFGHIJKLMNOP }

    주: "ABCDEFGHIJKLMNOPQRSTuvWXYZ" 가 완전히 수신 되 지 않 은 이 유 는 netcat 의 기본 수신 길이 제한 때 문 입 니 다.
    Over

    좋은 웹페이지 즐겨찾기