flume是一款实时日志收集系统
特点:
1.分布式、可靠、高可用的海量日志采集、聚合和传输的系统
2.支持各类数据发送方,用于收集数据,同时,Flume提供对数据进行简单处理,并写到各种数据接收方(hdfs、Hbase等)的能力
3.flume的数据流由事件(event)贯穿始终。事件是Flume的基本数据单位,他携带日志数据(字节数组形式),并且携带有头信息,这些event由Agent外部的source生成,当Source捕获事件后,会进行特定的格式化,然后会把事件推入单个或者多个channel(相当于一个缓冲区)中,它将保存事件直到sink处理完该事件。Sink负责持久化日志或者把事件推向另一个Source
可靠性:
当节点出现故障时候,日志能够被传送到其它节点上而不丢失(endToend、Store on failure、Besteffort)
1.End To End 是收到数据后agent首先将event写到磁盘上,当数据传送成功后,再删除
2.Store on failure是当数据接收方crash时,将数据写到本地,待恢复后继续发送
3.Besteffort是数据发到接收方后不会进行确认
可恢复性
可靠性体现在channel上,一般推荐使用FileChannel,事件持久化在本地文件系统里(性能差)
核心名称的概念
1.Agent:使用JVM运行flume。每台机器运行一个Agent,但是可以再一个agent里面包含多个sources和sinks
2.Client生产数据,运行在一个独立线程
3.Source从Client收集数据,传递给Channel
4.Sink从Channel收集数据,运行在一个独立线程
5.Channel连接sources和Sink
6.Event可以使日志记录,avro对象等。
安装流程
一、配置.bashrc
vi ~/.bashrc
export FLUME_HOME=/BigData/flume/apache-flume-1.6.0-bin
export FLUME_CONF_DIR=$FLUME_HOME/conf
PATH加上$FLUME_HOME/bin
二、配置conf
cp flume-conf.properties.templateq flume-conf.properties,并对其进行更改
#agent1 表示代理名称
agent1.sources=source1
agent1.sinks=sink1
agent1.channel=channel1
#配置source1
agent1.sources.source1.type=spooldir
agent1.sources.source1.spoolDir=/BigData/flume/testDir
agent1.sources.source1.channels=channel1
agent1.sources.source1.fileHeader=false
agent1.sources.source1.interceptors=il
agent1.sources.source1.inteceptors.il.type=timestap
#配置sink1
#sink到hdfs
agent1.sinks.sink1.type=hdfs
agent1.sinks.sink1.hdfs.path=hdfs://huawei1:/9000/library/flume
agent1.sinks.sink1.hdfs.fileType=DataStream
agent1.sinks.sink1.hdfs.writeFormat=TEXT
agent1.sinks.sink1.hdfs.rollInterval=1
agent1.sinks.sink1.channel=channel1
agent1.sinks.sink1.hdfs.filePrefix=%Y-%m-%d
#sink到某个端口
#agent1.sinks.sink1.type=avro
#agent1.sinks.sink1.channel=channel1
#agent1.sinks.sink1.hostname=Master
#agent1.sinks.sink1.port=9999
#sink到Kafka
#agent1.sinks.sink1.type=org.apache.flume.plugins.KafkaSink
#agent1.sinks.sink1.metadata.broker.list=Master:9092,Worker1:9092,Worker2.9092
#agent1.sinks.sink1.partition.key=0
#agent1.sinks.sink1.partitioner.class=org.apache.flume.plugins.SinglePartition
#agent1.sinks.sink1.serializer.class=kafka.serializer.StringEncoder
#agent1.sinks.sink1.request.requiredacks=0
#agent1.sinks.sink1.max.message.size=1000000
#agent1.sinks.sink1.producer.type=sync
#agent1.sinks.sink1.custom.encoding=UTF-8
#agent1.sinks.sink1.custom.topic.name=HelloKafka
#agent1.sinks.sink1.channel=channel1
#配置channel1
agent1.channels.channel1.type=file
agent1.channels.channel1.chackpointDir=/BigData/flume/checkpointDir
agent1.channels.channel1.dataDirs=/BigData/flume/dataDirs
启动Flume
./flume-ng agent -n agent1 -c conf -f /BigData/flume/apache-flume-1.6.0-bin/conf/flume-conf.properties -Dflume.root.logger=DEBUG,console
网友评论