Flume 학습 응용 프로그램: 자바 에서 MongoDB 로 로그 데 이 터 를 작성 합 니 다.
Windows 플랫폼: 자바 가 Flume 에 로 그 를 쓰 고 Flume 은 최종 적 으로 MongoDB 에 로 그 를 씁 니 다.
시스템 환경
자원 다운로드
초기 화
데이터 초기 화
MongoDB 에 dbpath 를 지정 합 니 다.
D:\develop\MongoDB\bin\mongod --dbpath=D:\develop\MongoDB\mydata
Flume 설정
이루어지다
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
간단 한 설명:
자바 에서 Flume 까지
이것 은 Maven 기반 의 Simple procject 입 니 다. flume - ng - java2mongodb 에서 소스 코드 를 받 을 수 있 습 니 다.
파일 구조
src/main/java
|---- cn.sinobest.flume.client.demo
|---- LogDemo.java
src/main/resources
|---- log4j.properties
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>
# 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 의 감청 포트 를 설정 합 니 다.
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 형식의 문자열 인지 확인 하 십시오.
테스트
D:\develop\MongoDB\bin\mongod --dbpath=D:\develop\MongoDB\mydata
# cd F:\temp\apache-flume-1.6.0-bin\bin
flume-ng.cmd agent --conf ..\conf -f ..\conf\mongo-agent.properties -n agent
설명: 첫 번 째 줄 명령 은 현재 경 로 를 확인 하 라 는 것 입 니 다.
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 의 데 이 터 를 보 는 데 사 용 됩 니 다. 데 이 터 를 성공 적 으로 기록 한 것 을 볼 수 있 습 니 다.
부록
참고 자료
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.