Flume 학습 응용 프로그램: 자바 에서 MongoDB 로 로그 데 이 터 를 작성 합 니 다.

13172 단어
개술
Windows 플랫폼: 자바 가 Flume 에 로 그 를 쓰 고 Flume 은 최종 적 으로 MongoDB 에 로 그 를 씁 니 다.
시스템 환경
  • 운영 체제: win 7 64
  • JDK:1.6.0_43

  • 자원 다운로드
  • Maven: 3.3.3 다운로드, 설치, 입문 참고: 1. Maven - 시작 과 2. 간단 한 Maven 프로젝트 만 들 기
  • Flume: 1.6.0 apache - flume - 1.6.0 - bin. tar. gz 를 다운로드 하고 적당 한 디 렉 터 리 (예: F: \ temp \ apache - flume - 1.6.0 - bin)
  • MongoDB: 3.2.3 mongodb - win 32 - x86 다운로드64 - 3.2.3 - signed. msi, 적당 한 디 렉 터 리 에 설치 (예: D: \ develop \ \ MongoDB)
  • 보조 자원 다운로드
  • MongoDB Java Driver: 2.13.0 다운로드 주소: mongo - java - driver - 2.13.0. jar 다운로드 후 Flume 설치 디 렉 터 리 의 lib 에 넣 습 니 다.
  • flume - ng - mongodb - sink Flume 은 이것 이 필요 합 니 다. 데 이 터 를 MongoDB 에 기록 하고 다운로드 할 수 있 습 니 다. flume - ng - mongodb - sink 은 Maven 기반 소스 코드 입 니 다. package 후 jar 가방 을 Flume 설치 디 렉 터 리 의 lib 에 넣 습 니 다.

  • 초기 화
    데이터 초기 화
    MongoDB 에 dbpath 를 지정 합 니 다.
  • dbpathe. g. 로 디 렉 터 리 를 새로 만 듭 니 다. D:\develop\MongoDB\mydata
  • 감청 서비스 시작 - CMD 실행
    D:\develop\MongoDB\bin\mongod --dbpath=D:\develop\MongoDB\mydata


  • Flume 설정
  • flume - env. ps1 을 생 성하 여 설치 디 렉 터 리 의 conf / 에서 flume - env. ps1. template 를 복사 하여 flume - env. ps1
  • 로 이름 을 바 꿉 니 다.
  • log4j. properties 를 설치 디 렉 터 리 의 conf / 에서 파일 log4j. properties 를 수정 합 니 다.flume. root. logger = INFO, console
  • 수정
    이루어지다
    Flume 에서 MongoDB 까지.
    Flume 설치 디 렉 터 리 의 conf 에 mongo - agent. properties 를 추가 합 니 다.
    agent.sources = so1
    agent.channels = c1
    agent.sinks = s1
    
    agent.sources.so1.type = avro
    agent.sources.so1.bind = 0.0.0.0
    agent.sources.so1.port = 44444
    agent.sources.so1.channels = c1
    
    agent.channels.c1.type = memory
    agent.channels.c1.capacity = 1000
    agent.channels.c1.transactionCapacity = 100
    
    agent.sinks.s1.type = org.riderzen.flume.sink.MongoSink
    agent.sinks.s1.host = localhost
    agent.sinks.s1.port = 27017
    agent.sinks.s1.model = single
    agent.sinks.s1.db = test
    agent.sinks.s1.collection = log
    agent.sinks.s1.batch = 100
    agent.sinks.s1.channel = c1

    간단 한 설명:
  • 에이전트. sources. so1 의 설정 에 따라 44444 포트 에서 감청 - log4j 를 열 면 이 포트 에 로 그 를 쓸 수 있 습 니 다
  • agent. sinks. s1 의 관련 설정 에 따라 so1 이 받 은 데 이 터 는 localhost: 27017 의 test 데이터 베 이 스 를 기록 하 는 log - collection 에서 27017 은 MongoDB 의 기본 감청 포트
  • 입 니 다.
    자바 에서 Flume 까지
    이것 은 Maven 기반 의 Simple procject 입 니 다. flume - ng - java2mongodb 에서 소스 코드 를 받 을 수 있 습 니 다.
    파일 구조
    src/main/java
        |---- cn.sinobest.flume.client.demo
                  |---- LogDemo.java
    src/main/resources
        |---- log4j.properties
    pom.xml

    파일 내용
  • pom.xml
    <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
        <modelVersion>4.0.0</modelVersion>
        <groupId>cn.sinobest.asj</groupId>
        <artifactId>fluent-client-demo</artifactId>
        <version>0.0.1-SNAPSHOT</version>
        <dependencies>
            <dependency>
                <groupId>log4j</groupId>
                <artifactId>log4j</artifactId>
                <version>1.2.16</version>
            </dependency>
            <dependency>
                <groupId>commons-logging</groupId>
                <artifactId>commons-logging</artifactId>
                <version>1.1.1</version>
            </dependency>
            <dependency>
                <groupId>org.apache.flume.flume-ng-clients</groupId>
                <artifactId>flume-ng-log4jappender</artifactId>
                <version>1.6.0</version>
            </dependency>
        </dependencies>
    </project>

  • log4j.properties
    #   Log4jAppender,     Flume
    log4j.appender.flumeAvro=org.apache.flume.clients.log4jappender.Log4jAppender
    log4j.appender.flumeAvro.Hostname=localhost
    log4j.appender.flumeAvro.Port=44444
    log4j.appender.flumeAvro.UnsafeMode=true
    log4j.appender.flumeAvro.layout=org.apache.log4j.PatternLayout
    log4j.appender.flumeAvro.layout.ConversionPattern=%m
    #    logger          appender     logger  
    log4j.rootLogger=INFO, flumeAvro

    주의:
    <1> org. apache. flume. clients. log4jappender. Log4jAppender 는 데 이 터 를 Flume 에 기록 하 는 구체 적 인 실현 을 책임 집 니 다.
    < 2 > 44444 포트 는 앞의 Flume 에 에이전트. sources. so1 의 감청 포트 를 설정 합 니 다.
  • LogDemo.java
    package cn.sinobest.flume.client.demo;
    import org.apache.commons.logging.Log;
    import org.apache.commons.logging.LogFactory;
    public class LogDemo {
        static final Log log = LogFactory.getLog(LogDemo.class);
        
        public static void main(String[] args) {
            log.info("{'name':'Adam', 'age':'26', 'skill':'reading'}");
        }
    }

    메모: 로그 내용 이 json 형식의 문자열 인지 확인 하 십시오.

  • 테스트
  • MongoDB 시작
    D:\develop\MongoDB\bin\mongod --dbpath=D:\develop\MongoDB\mydata

  • Flume 작 동
    # cd F:\temp\apache-flume-1.6.0-bin\bin
    flume-ng.cmd agent --conf ..\conf -f ..\conf\mongo-agent.properties -n agent

    설명: 첫 번 째 줄 명령 은 현재 경 로 를 확인 하 라 는 것 입 니 다.
  • LogDemo 실행
  • 결과 보기
    D:\tools\PowerCmd>D:\develop\MongoDB\bin\mongo
    2016-03-08T18:05:33.168+0800 I CONTROL  [main] Hotfix KB2731284 or later update is not installed, will zero-out data files
    MongoDB shell version: 3.2.3
    connecting to: test
    > db.log.find()
    { "_id" : ObjectId("56dea2b18449e36553652bc3"), "name" : "Adam", "age" : "26", "skill" : "reading" }
    > 

    설명:
    < 1 > mongo 는 기본적으로 test 데이터 베 이 스 를 연결 하고 mongo test 방식 으로 test 데이터 베 이 스 를 지정 할 수 있 습 니 다.
    < 2 > db. log. find () 는 log - collection 의 데 이 터 를 보 는 데 사 용 됩 니 다. 데 이 터 를 성공 적 으로 기록 한 것 을 볼 수 있 습 니 다.

  • 부록
    참고 자료
  • Flume 사용 소결 은 주로 환경 구축 부분 을 참고 하여 다른 부분 은 적합 하지 않다.
  • flume 학습 01 - flume 소개 블 로 거들 은 일련의 글 을 썼 는데 모두 3 편의 글 을 써 서 Flume 을 소개 했다. 여기 에는 첫 번 째 글 만 붙 여 져 있어 입문 글 이 라 고 할 수 있다.뒤에 연구 하지 않 은 내용 이 있 습 니 다.
  • Flume 1.5 로 그 를 수집 하여 mongodb 에 저장 하 는 설치 구축 은 주로 Flume 설정 파일 에서 MongoSink 의 설정 을 참고 하 였 습 니 다. - 나중에 블 로 거들 이 db 를 지정 하지 않 은 것 을 발 견 했 습 니 다. 데 이 터 는 events 데이터베이스 에 기 록 된 events - collection
  • 입 니 다.

    좋은 웹페이지 즐겨찾기