Flume 로그 채집 프레임 워 크 사용
9008 단어 apache.
원본 링크:https://foochane.cn/article/2019062701.html
Flume 로그 수집 프레임 워 크 설치 및 배치 Flume 운영 체제 에서 정적 파일 을 수집 하여 hdfs 로 동적 로그 파일 을 수집 하여 hdfs 두 에이전트 등급 으로 연결 합 니 다.
Flume 로그 수집 프레임 워 크
완전한 오프라인 빅 데이터 처리 시스템 에서 hdfs + mapreduce + hive 구성 분석 시스템 의 핵심 을 제외 하고 데이터 수집, 결과 데이터 내 보 내기, 작업 스케줄 링 등 불가 결 하거나 부족 한 보조 시스템 이 필요 하 다. 이런 보조 도 구 는 hadop 생태 체계 에서 편리 한 오픈 소스 구 조 를 가진다. 그림 과 같다.
1 Flume 소개
Flume
분포 식, 신뢰성, 사용 가능 한 대량의 로그 수집, 집적 과 전송 시스템 이다.Flume
파일 을 수집 할 수 있 고 socket
패 킷, 파일, 폴 더, kafka
등 각종 형식의 소스 데 이 터 를 수집 할 수 있 으 며 수집 한 데이터 (침하 sink
를 HDFS
, hbase
, hive
, kafka
등 여러 외부 저장 시스템 에 출력 할 수 있다.일반적인 채집 수요 에 대해 서 는 flume 에 대한 간단 한 설정 을 통 해 이 루어 집 니 다.
Flume
특수 장면 에 대해 서도 사용자 정의 확장 능력 을 갖 추고 있 기 때문에 flume
대부분의 일상 데이터 수집 장면 에 적용 할 수 있다.2 Flume 운영 체제
Flume
분포 식 시스템 에서 가장 핵심 적 인 역할 은 agent
이다. flume
채집 시스템 은 하나의 agent
로 연결 되 어 형 성 된 것 이다. 모든 agent
은 하나의 데이터 전달 원 에 해당 하고 내부 에는 세 개의 구성 요소 가 있다.Source
: 구성 요 소 를 수집 하여 데이터 원본 과 연결 하여 데 이 터 를 얻 을 수 있 습 니 다 Sink
: 침하 구성 요 소 는 다음 단계 agent
에 데 이 터 를 전달 하거나 최종 저장 시스템 에 데 이 터 를 전달 하 는 데 사용 된다 Channel
: 전송 채널 구성 요소, source
에서 데 이 터 를 sink
단일 에이전트 수집 데이터:
다단 계 에이전트 간 직렬 연결:
3 Flume 의 설치 배치
1 설치 패키지 다운로드
apache-flume-1.9.0-bin.tar.gz
압축 풀기2
conf
폴 더 에 있 는 flume-env.sh
추가 JAVA_HOME
export JAVA_HOME=/usr/local/bigdata/java/jdk1.8.0_211
3. 채집 수요 에 따라 채집 방안 프로필 을 추가 하고 파일 이름 은 임의로 가 져 갈 수 있 습 니 다.
구체 적 으로 뒤의 예 시 를 볼 수 있다.
4 시동
flume
테스트 환경 에서:$ bin/flume/-ng agent -c conf/ -f ./dir-hdfs.conf -n agent1 -Dflume.root.logger=INFO,console
명령 설명:
-c
: flume 자체 설정 파일 디 렉 터 리 를 지정 하고 수정 하지 않 아 도 됩 니 다 -f
: 자신의 프로필 을 지정 합 니 다. 현재 폴 더 아래 dir-hdfs.conf
-n
: 자신의 프로필 에 그 agent
를 사용 하고 해당 하 는 프로필 에 정 의 된 이름 을 지정 합 니 다.-Dflume.root.logger
: 로 그 를 콘 솔 에 인쇄 합 니 다. 형식 은 INFO
입 니 다. 이것 은 테스트 에 만 사 용 됩 니 다. 나중에 로그 파일 에 인쇄 합 니 다 nohup bin/flume-ng agent -c ./conf -f ./dir-hdfs.conf -n agent1 1>/dev/null 2>&1 &
4 hdfs 에 정적 파일 수집
4.1 채집 수요
한 서버 의 특정 디 렉 터 리 에 새 파일 이 계속 생 성 되 며, 새 파일 이 나 올 때마다 HDFS 에 파일 을 수집 해 야 합 니 다.
4.2 프로필 추가
설치 디 렉 터 리 에 파일
dir-hdfs.conf
을 추가 하고 설정 정 보 를 추가 합 니 다.먼저 가 져 오기
agent
, 이름 agent1
, 뒤의 설정 은 모두 agent1
뒤에 있 고 다른 값 으로 바 꿀 수 있 습 니 다. 예 를 들 어 agt1
같은 설정 파일 에 여러 개의 설정 방안 이 있 을 수 있 습 니 다. 시작 agent
할 때 해당 하 는 이름 을 가 져 오 면 됩 니 다.수요 에 따라 먼저 다음 과 같은 3 대 요 소 를 정의 한다.
데이터 원본 구성 요소
즉
source
- 모니터링 파일 디 렉 터 리: spooldir
spooldir
는 다음 과 같은 특성 이 있 습 니 다.COMPLETED
(수정 가능) 즉
sink——HDFS
파일 시스템: hdfs sink
채널 구성 요소즉
channel
- 사용 가능 file channel
메모리 사용 가능 channel
#
agent1.sources = source1
agent1.sinks = sink1
agent1.channels = channel1
# source
agent1.sources.source1.type = spooldir
agent1.sources.source1.spoolDir = /root/log/
agent1.sources.source1.fileSuffix=.FINISHED
# , ,
agent1.sources.source1.deserializer.maxLineLength=5120
# sink
agent1.sinks.sink1.type = hdfs
agent1.sinks.sink1.hdfs.path =hdfs://Master:9000/access_log/%y-%m-%d/%H-%M
agent1.sinks.sink1.hdfs.filePrefix = app_log
agent1.sinks.sink1.hdfs.fileSuffix = .log
agent1.sinks.sink1.hdfs.batchSize= 100
agent1.sinks.sink1.hdfs.fileType = DataStream
agent1.sinks.sink1.hdfs.writeFormat =Text
# roll: :
## ( )
agent1.sinks.sink1.hdfs.rollSize = 512000
## event
agent1.sinks.sink1.hdfs.rollCount = 1000000
##
agent1.sinks.sink1.hdfs.rollInterval = 60
##
agent1.sinks.sink1.hdfs.round = true
agent1.sinks.sink1.hdfs.roundValue = 10
agent1.sinks.sink1.hdfs.roundUnit = minute
agent1.sinks.sink1.hdfs.useLocalTimeStamp = true
# channel
agent1.channels.channel1.type = memory
## event
agent1.channels.channel1.capacity = 500000
##flume 600 event
agent1.channels.channel1.transactionCapacity = 600
# source、channel sink
agent1.sources.source1.channels = channel1
agent1.sinks.sink1.channel = channel1
Channel
매개 변수 설명:capacity
: 기본 이 채널 에서 가장 저장 할 수 있 는 event
수량 trasactionCapacity
: 매번 최대 source
에서 받 거나 보 낼 수 있 는 sink
수량 event
keep-alive
: event
채널 에 추가 하거나 이동 할 수 있 는 허용 시간 $ bin/flume/-ng agent -c conf/ -f dir-hdfs.conf -n agent1 -Dflume.root.logger=INFO,console
5 동적 로그 파일 을 hdfs 로 수집 합 니 다.
5.1 채집 수요
예 를 들 어 업무 시스템 에서 log4j 로 생 성 된 로 그 를 사용 하면 로그 내용 이 계속 증가 하고 로그 파일 에 추 가 된 데 이 터 를 실시 간 으로 hdfs 에 수집 해 야 합 니 다.
5.2 프로필
프로필 이름:
tail-hdfs.conf
수요 에 따라 다음 과 같은 3 대 요 소 를 먼저 정의 합 니 다.source
- 모니터링 파일 내용 업데이트: exec
tail -F file
sink——HDFS
파일 시스템: hdfs sink Source
와 sink
사이 의 전달 채널 - channel
, 사용 가능 file channel
메모리 channel
# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /root/app_weichat_login.log
# Describe the sink
agent1.sinks.sink1.type = hdfs
agent1.sinks.sink1.hdfs.path =hdfs://Master:9000/app_weichat_login_log/%y-%m-%d/%H-%M
agent1.sinks.sink1.hdfs.filePrefix = weichat_log
agent1.sinks.sink1.hdfs.fileSuffix = .dat
agent1.sinks.sink1.hdfs.batchSize= 100
agent1.sinks.sink1.hdfs.fileType = DataStream
agent1.sinks.sink1.hdfs.writeFormat =Text
agent1.sinks.sink1.hdfs.rollSize = 100
agent1.sinks.sink1.hdfs.rollCount = 1000000
agent1.sinks.sink1.hdfs.rollInterval = 60
agent1.sinks.sink1.hdfs.round = true
agent1.sinks.sink1.hdfs.roundValue = 1
agent1.sinks.sink1.hdfs.roundUnit = minute
agent1.sinks.sink1.hdfs.useLocalTimeStamp = true
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
5.3 가동 flume
시작 명령:
bin/flume-ng agent -c conf -f conf/tail-hdfs.conf -n a1
6 두 에이전트 연결
tail 명령 에서 데 이 터 를 가 져 와 avro 포트 의 다른 노드 로 보 내 면 avro 소스 를 설정 하여 데 이 터 를 중계 하고 외부 저장 소 를 보 낼 수 있 습 니 다.
# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /root/log/access.log
# Describe the sink
a1.sinks.k1.type = avro
a1.sinks.k1.hostname = hdp-05
a1.sinks.k1.port = 4141
a1.sinks.k1.batch-size = 2
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
avro 포트 에서 데 이 터 를 받 고 내 려 앉 기
hdfs
프로필 수집, avro-hdfs.conf
# Name the components on this agent
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
##source avro
a1.sources.r1.type = avro
a1.sources.r1.bind = hdp-05
a1.sources.r1.port = 4141
# Describe the sink
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = /flume/taildata/%y-%m-%d/
a1.sinks.k1.hdfs.filePrefix = tail-
a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue = 24
a1.sinks.k1.hdfs.roundUnit = hour
a1.sinks.k1.hdfs.rollInterval = 0
a1.sinks.k1.hdfs.rollSize = 0
a1.sinks.k1.hdfs.rollCount = 50
a1.sinks.k1.hdfs.batchSize = 10
a1.sinks.k1.hdfs.useLocalTimeStamp = true
# , Sequencefile, DataStream,
a1.sinks.k1.hdfs.fileType = DataStream
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
자바 파일 압축 및 압축 풀기파일 의 간단 한 압축 과 압축 해 제 를 실현 하 였 다.주요 테스트 용 에는 급 하 게 쓸 수 있 는 부분 이 있 으 니 불편 한 점 이 있 으 면 아낌없이 가르쳐 주 십시오. 1. 중국어 문 제 를 해 결 했 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.