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小时内删除。