欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Flume(日志收集系统)的部署与测试

程序员文章站 2022-05-12 12:57:32
...

Flume的部署与测试

Flume是一个分布式、高可靠、高可用的日志收集系统。能够有效的收集、聚合、移动大量的日志。把各种类型的数据源采集汇总到各种类型的目的地,flume有一个口号:“我们不生产数据,我们是数据的搬运工。

官网文档: http://flume.apache.org/FlumeUserGuide.html

相关项目:
相关示例项目:Leek——简易版实时智能选股平台

Flume组件:

Flume(日志收集系统)的部署与测试
            
    
    博客分类: 大数据分布式 flume日志收集大数据 

Flume 的核心(agent)就是把数据从数据源收集过来,再送到目的地。为了保证高可靠输送一定成功,在送到目的地之前,会先缓存数据,待数据真正到达目的地后,删除自己缓存的数据。 Flume : 传输的数据的基本单位是 Event,如果是文本文件,通常是一行记录,这也是事务的基本单位。

  • Event : (包含:headers:{} 、body) 从 Source,流向 Channel,再到 Sink,本身为一个 byte 数组。
  • Source : 对数据进行收集,分成 transtion 和 event 打入到channel之中。
  • Channel : 就像一个管道(队列),接收 Source 的输出,再推送给 Sink 消费。数据直到进入到下一个Channel中或者进入终端才会被删除。即:中转Event临时存储,在 sources 和 sinks之间起一个连接作用 。
  • Sink : 取出 Channel 中的数据,然后送给外部源(HDFS、HBase)或者其他 Source。

flume的作用:

可用于实时计算和离线计算的数据源采集工具 Flume(日志收集系统)的部署与测试
            
    
    博客分类: 大数据分布式 flume日志收集大数据 

1、Flume安装(安装flume前需要先安装JDK环境)

http://mirrors.cnnic.cn/apache/flume/1.6.0/apache-flume-1.6.0-bin.tar.gz  
tar -xvzf apache-flume-1.6.0-bin.tar.gz  
mv apache-flume-1.6.0-bin apache-flume-1.6.0

2、环境变量设置

vim /etc/profile
export FLUME_HOME=/usr/local/apache-flume-1.6.0
export FLUME_CONF_DIR=$FLUME_HOME/conf
export PATH=.:$PATH::$FLUME_HOME/bin
source /etc/profile
echo $FLUME_HOME

3、Flume配置

cd /usr/local/apache-flume-1.6.0/conf/
cp flume-conf.properties.template flume-conf.properties
vim flume-conf.properties
接下来我们要实现如下目的:

B服务器的nginx访问日志传输到A服务器,A服务器将本服务器上的nginx访问日志和B服务器传输过来的日志一起输出到/tmp/flume文件夹下面。

#服务器A的配置:
#下面的agent1是代理名称
agent1.sources = s1 s2
agent1.channels = c1
agent1.sinks = k1

#配置数据源source
agent1.sources.s1.type = avro
agent1.sources.s1.bind= 0.0.0.0    
agent1.sources.s1.port= 44444    
agent1.sources.s1.channels= c1
agent1.sources.s2.batchSize=1000
agent1.sources.s2.batchTimeout=1000

agent1.sources.s2.type = exec
agent1.sources.s2.channels = c1
agent1.sources.s2.command = tail -f /usr/local/nginx/logs/access.log
agent1.sources.s2.batchSize=1000
agent1.sources.s2.batchTimeout=1000


# 配置内存 channel
agent1.channels.c1.type = memory
agent1.channels.c1.capacity = 50000
agent1.channels.c1.transactionCapacity = 10000

# 配置 sinks
agent1.sinks.k1.channel = c1
agent1.sinks.k1.type = file_roll
agent1.sinks.k1.sink.directory = /tmp/flume
#默认值为30,即每30秒生成一个文件  
#为0时表示只有一个文件存放数据
agent1.sinks.k1.sink.rollInterval  = 0 
#设置的越大吞吐能力越好,延时也越大
agent1.sinks.k1.sink.batchSize=100

 

#服务器B的配置:
#下面的agent1是代理名称
agent1.sources = s1
agent1.channels = c1
agent1.sinks = k1

#配置数据源source
agent1.sources.s1.type = exec
agent1.sources.s1.channels = c1
agent1.sources.s1.command = tail -f /usr/local/nginx/logs/access.log

# 配置内存 channel
agent1.channels.c1.type = memory
agent1.channels.c1.capacity = 10000
agent1.channels.c1.transactionCapacity = 10000

# 配置 sinks
# 数据被转换成 Avro Event ,然后发送到指定的服务端口上。
agent1.sinks.k1.channel = c1
agent1.sinks.k1.type = avro
agent1.sinks.k1.hostname = 192.168.xx.xxx
agent1.sinks.k1.port = 44444
agent1.sinks.k1.batch-size=50

4、依次启动服务

cd /usr/local/apache-flume-1.6.0/
nohup flume-ng agent -n agent1 -c conf -f conf/flume-conf.properties &

5、在A服务器上看整合的日志输出

tail -f  /tmp/flume/xxxxxx