设为首页 收藏本站
查看: 1303|回复: 0

[经验分享] Flume 1.5.0简单部署

[复制链接]

尚未签到

发表于 2017-5-21 13:53:34 | 显示全部楼层 |阅读模式
=========================================================================
一、Flume简介
=========================================================================

1、概述
Flume 是 Cloudera 提供的一个高可用的,高可靠的,分布式的海量日志采集、聚合和传输的系统,Flume 支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume 提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力。
 
Flume 最早是 Cloudera 提供的日志收集系统,目前是 Apache 下的一个孵化项目,Flume 支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume 提供对数据进行简单处理,并写到各种数据接受方(可定制)的能力,Flume 提供了从console(控制台)、RPCThrift-RPC)、text(文件)、tailUNIXtail)、syslogsyslog 日志系统,支持 TCP 和 UDP 2种模式),exec(命令执行)等数据源上收集数据的能力。
 
2、数据流通
Flume 传输数据的基本单位是 event,如果是文本文件,通常是一行记录,这也是事务的基本单位。Flume 运行的核心是 agent。它是一个完整的数据收集工具,含有三个核心组件,分别是 sourcechannelsinkEvent 从 Source,流向 Channel,再到 Sink,本身为一个 byte 数组,并可携带 headers 信息。Event 代表着一个数据流的最小完整单元,从外部数据源来,向外部的目的地去。Source:完成对日志数据的收集,分成 transtion 和 event 打入到 channel 之中。Channel:主要提供一个队列的功能,对 source 提供中的数据进行简单的缓存。Sink:取出 Channel 中的数据,进行相应的存储文件系统、数据库、或者提交到远程服务器。通过这些组件,event 可以从一个地方流向另一个地方,如下图所示:
DSC0000.jpg
 
Source 消费从外部流进的 Events,如 Avro Source 接收外部客户端传来的或是从别的agent流出来的 Avro EventSource可以把 event 送往一个或多个 channelchannel 是一个队列,持有 event 等待 sink 来消费,一种 Channel 的实现:FileChannel 使用本地文件系统来作为它的存储。Sink 的作用是把 Event 从 channel 里移除,送往外部数据仓库或给下一站 agent 的 Source,如 HDFSEventSink 送往 HDFS。同个 agent 下的 source 和 sink 是异步的。下面再举几个数据流通的例子,说明不同的使用方式。
(1)agent模式
DSC0001.jpg
 
(2)多对一的合并/Collector场景
DSC0002.jpg
 
(3)一对多路输出模型
DSC0003.jpg
 
===================================================================================
二、Flume部署与测试
===================================================================================

1JDK安装
http://download.oracle.com/otn-pub/java/jdk/7u65-b17/jdk-7u65-linux-x64.tar.gz
# tar xvzf jdk-7u65-linux-x64.gz
# cd /usr/local && ln -s jdk1.7.0_65 jdk
# cd /usr/local/bin && ln -s /usr/local/jdk/bin/java
 
2Flume安装
http://mirrors.cnnic.cn/apache/flume/1.5.0/apache-flume-1.5.0-bin.tar.gz
# tar xvzf apache-flume-1.5.0-bin.tar.gz
# mv apache-flume-1.5.0-bin apache-flume-1.5.0
# ln -s apache-flume-1.5.0 flume
 
3、环境变量设置
# vim /etc/profile
export JAVA_HOME=/usr/local/jdk
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
 
export FLUME_HOME=/usr/local/flume
export FLUME_CONF_DIR=$FLUME_HOME/conf
export PATH=.:$PATH::$FLUME_HOME/bin
 
# source /etc/profile
 
4Flume配置
# mkdir -p /data/logs/flume-out
 
# vim /usr/local/flume/conf/flume-conf.properties
agent1.sources= source1
agent1.sinks= sink1
agent1.channels= channel1
 
agent1.sources.source1.channels= channel1
agent1.sources.source1.type= exec
agent1.sources.source1.command= tail -f /data/logs/web/iwan/620000010/access.log
 
agent1.sources.source1.interceptors= inter1
agent1.sources.source1.interceptors.inter1.type= REGEX_FILTER
agent1.sources.source1.interceptors.inter1.regex= .*POST.*
agent1.sources.source1.interceptors.inter1.excludeRegex= true
 
agent1.channels.channel1.type= memory
agent1.channels.channel1.capacity= 1000
agent1.channels.channel1.transactionCapactiy= 100
 
agent1.sinks.sink1.channel= channel1
agent1.sinks.sink1.type= FILE_ROLL
agent1.sinks.sink1.sink.directory= /data/logs/flume-out
 
 

# Flume agent config
agent1.sources= source1
agent1.sinks= sink1
agent1.channels= channel1
agent1.sources.source1.channels= channel1
agent1.sources.source1.type= exec
agent1.sources.source1.command= tail -f /home/hdfs/apache-tomcat-6.0.43/logs/catalina.out
#agent1.sources.source1.interceptors= inter1
#agent1.sources.source1.interceptors.inter1.type= REGEX_FILTER
#agent1.sources.source1.interceptors.inter1.regex= .*visitlog.*
#agent1.sources.source1.interceptors.inter1.excludeRegex= true
agent1.channels.channel1.type= memory
agent1.channels.channel1.capacity= 1000
agent1.channels.channel1.transactionCapactiy= 100
agent1.channels.channel1.keep-alive=30
#agent1.sinks.sink1.channel= channel1
#agent1.sinks.sink1.type= FILE_ROLL
#agent1.sinks.sink1.sink.directory= /home/flume/logs/flume-out

agent1.sinks.sink1.type=hdfs
agent1.sinks.sink1.channel=channel1
agent1.sinks.sink1.hdfs.path=hdfs://cluster-152:8020/user/flume/events
agent1.sinks.sink1.hdfs.fileType=DataStream
agent1.sinks.sink1.hdfs.writeFormat=Text
agent1.sinks.sink1.hdfs.rollInterval=0
agent1.sinks.sink1.hdfs.rollSize=10240
agent1.sinks.sink1.hdfs.rollCount=0
agent1.sinks.sink1.hdfs.idleTimeout=60
 

5、服务启动
# cd /usr/local/flume
# nohup bin/flume-ng agent -n agent1 -c conf -f conf/flume-conf.properties &
 
6、相关测试
(1)、本地hosts绑定 "172.18.35.30  iwan.qq.com"
(2)、采用Fiddler提交测试数据
DSC0004.jpg
 
(3)、效果展示
DSC0005.jpg
 
DSC0006.jpg
 
7、日志定期清理
# crontab -e
00 00 * * * cd /usr/local/flume/logs && rm -f `ls -1t | grep flume.log.$(date -d "7 days ago" +"%Y-%m-%d")` >/dev/null 2>&1
 
附录:
http://flume.apache.org/FlumeUserGuide.html
http://flume.apache.org/FlumeDeveloperGuide.html
http://www.cnblogs.com/lion.net/p/3903197.html

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-379631-1-1.html 上篇帖子: flume加载配置 下篇帖子: 用flume 采集log4j 日志 到hdfs
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表