Flume集搭建
flume集搭建一:flume简介
flume是一个分布式的、高可用的海量日志收集、聚合和传输日志收集系统,支持在日志系统中定制各类数据发送方(如:kafka,hdfs等),便于收集数据。
flume提供更多了多样的日志源搜集类型,存有:console、rpc、text、tail、syslog、exec等数据源的搜集。
agent层:
对于agent这一层来说,每个机器部署一个agent,可以水平拓展,不受限制。一个方面,agent搜集日志的能力受限于机器的性能,正常情况下一个agent可以为单机提供更多足够多服务。另一方面,如果机器比较多,可能将受限于后端collector提供更多的服务,但agent至collector就是存有loadbalance机制,使collector可以线性拓展提升能力。
collector层:
对于collector这一层,agent至collector就是存有loadbalance机制,并且collector提供更多无差别服务,所以可以线性拓展。其性能主要受限于store层提供更多的能力。
store层:
对于store这一层来说,hdfs和kafka都就是分布式系统,可以努力做到线性拓展。bypass属临时的应用领域,只对应于某一类日志,性能不是瓶颈。
此处第一个测试的日志收集源,使用spooldir方式进行日志文件采集,数据发送方则是hdfs;
第二个测试的日志搜集源同样就是spooldir的方式收集,而数据传送方则就是kafka。
二、环境准备a)hadoop的hdfs,下载并解压flume-1.6.0(3台机器都需要安装)。b)规划hostnamemasterworker1worker2作用agentcollectorcollector方式spooldirhdfshdfs路径/usr/local/flume/tmp/testdir/library/flume/library/flume
三、布局(source:localfilesystem;sink:hdfs)
a)系统环境变量(3台机器一样)
嵌入flume_home以及path中嵌入${flume_home}/bin:
b)conf/flume-env.sh配置添加对jdk的支持即可:
c)master节点上布局/conf/flume-client.properties(source的日志搜集)#agent1name
agent1.channels=c1agent1.sources=r1agent1.sinks=k1k2
#setgruop
agent1.sinkgroups=g1
#setchannel
agent1.pe=memoryagent1.channels.c1.capacity=1000
agent1.ansactioncapacity=100
agent1.sources.r1.channels=c1agent1.pe=spooldir
agent1.sources.r1.spooldir=/usr/local/flume/tmp/testdir
agent1.sources.r1.interceptors=i1i2
agent1.sources.r1.pe=staticagent1.sources.r1.interceptors.i1.key=typeagent1.sources.r1.interceptors.i1.value=loginagent1.sources.r1.pe=timestamp
#setsink1
agent1.sinks.k1.channel=c1agent1.pe=avro
agent1.sinks.k1.hostname=worker1agent1.sinks.k1.port=52021
#setsink2
agent1.sinks.k2.channel=c1agent1.pe=avro
agent1.sinks.k2.hostname=worker2agent1.sinks.k2.port=52021
#setsinkgroup
agent1.sinkgroups.g1.sinks=k1k2
#setfailover
agent1.sinkgroups.pe=failoveragent1.sinkgroups.g1.processor.priority.k1=10agent1.sinkgroups.g1.processor.priority.k2=1
agent1.sinkgroups.g1.processor.maxpenalty=10000
c)worker1、worker2节点上布局/conf/flume-servre.propertiesworker1上:#setagentnamea1.sources=r1a1.channels=c1a1.sinks=k1
#setchannel
a1.pe=memorya1.channels.c1.capacity=1000
a1.ansactioncapacity=100
#othernode,nnatonnsa1.pe=avroa1.sources.r1.bind=worker1a1.sources.r1.port=52021
a1.sources.r1.interceptors=i1
a1.sources.r1.pe=statica1.sources.r1.interceptors.i1.key=collectora1.sources.r1.interceptors.i1.value=worker1a1.sources.r1.channels=c1
#setsinktohdfs
a1.pe=hdfs
a1.sinks.k1.hdfs.path=/library/flumea1.sinks.k1.hdfs.filetype=datastreama1.sinks.k1.hdfs.writeformat=texta1.sinks.llinterval=1a1.sinks.k1.channel=c1
a1.sinks.k1.hdfs.fileprefix=%y-%m-%d
worker2上:#setagentnamea1.sources=r1a1.channels=c1a1.sinks=k1
#setchannel
a1.pe=memorya1.channels.c1.capacity=1000
hadoop分布式集搭建 a1.ansactioncapacity=100
#othernode,nnatonnsa1.pe=avroa1.sources.r1.bind=worker2a1.sources.r1.port=52021a1.sources.r1.interceptors=i1
a1.sources.r1.pe=statica1.sources.r1.interceptors.i1.key=collectora1.sources.r1.interceptors.i1.value=worker2a1.sources.r1.channels=c1#setsinktohdfs
a1.pe=hdfs
a1.sinks.k1.hdfs.path=/library/flumea1.sinks.k1.hdfs.filetype=datastreama1.sinks.k1.hdfs.writeformat=texta1.sinks.llinterval=1a1.sinks.k1.channel=c1
a1.sinks.k1.hdfs.fileprefix=%y-%m-%d
四、启动flume集
a)先启动collector端,即worker1和worker2上的配置文件:
集启动后,查阅各自的进程:flume的进程名字叫作“application”
b)再启动agent端,即master的配置文件:
五、测试数据的传输
在master节点指定的路径下,生成新的文件(模拟webserver产生新的日志文件):首先,testdir下没有文件:
而hdfs选定的路径下也没文件:
之后,copy2个日志文件到此目录下:
此时,我们看看worker1上的控制器列印的日志如下:
最后,我们查看hdfs上的生成的文件的内容:
我们看见,源端的2个文件分拆至hdfs上的1个文件中了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论