您好,欢迎访问三七文档
一个问题的引出ftpcurlFlume浅谈----应用场景、原理、基本架构和案例分析职能大数据研发部/阎守臣目录CONTENTS一、Flume背景及应用场景二、FlumeNG基本架构三、Flume安装部署四、Flume案例分析五、Flume总结及其他六、Q&AFlume是什么由Cloudera公司开源分布式、可靠、和高可用的海量日志采集、聚合和传输的日志收集系统数据源可定制、可扩展数据存储系统可定制、可扩展中间件:屏蔽了数据源和数据存储系统的异构性Flume特点可靠性保证数据不丢失可扩展性各组件数目可扩展高性能高吞吐量、能满足海量数据收集需求可管理性可动态增加、删除组件文档丰富、社区活跃Hadoop生态系统应用广泛FlumeNG基本架构FlumeNG架构FlumeNG架构FlumeNG核心概念EventClientAgentSourceChannelSink其他组件:Interceptor、ChannelSelector、SinkProcessorEventEvent是Flume数据传输的基本单元Flume以事件的形式将数据从源头传送到最终的目的Event由可选的header和载有数据的bytearray构成载有数据的对flume是不透明的Header是容纳了key-value字符串对的无序集合,key在集合内是唯一的。Header可以在上下文路由中使用扩展ClientClient是一个将原始log包装成events并发送它们到一个或多个agent的实体。目的是从数据源系统中解耦Flume在Flume的拓扑结构中不是必须的Client实例Flumelog4jAppender可以使用ClientSDK(org.apache.flume.api)定制特定的ClientAgent一个Agent包含Source,Channel,Sink和其他组件它利用这些组件将events从一个节点传输到另一个节点或最终目的Agent是flume流的基础部分Flume为这些组件提供了配置、生命周期管理、监控支持Agent之SourceAgent之SourceSource负责接收event或通过特殊机制产生event,并将events批量的放到一个或多个Channel。包含event驱动和轮询两种类型不同类型的Source:与系统集成的Source:Syslog,Netcat自动生成事件的Source:Exec用于Agent和Agent之间通信的RPCSource:Avro、ThriftSource必须至少和一个channel关联Agent之Channel与SinkAgent之ChannelChannel位于Source和Sink之间,用于缓存进来的event当Sink成功的将event发送到下一跳的Channel或最终目的,event从Channel移除不同的Channel提供的持久化水平也是不一样的:MemoryChannel:volatileFileChannel:基于WAL(预写式日志Write-AheadLogging)实现JDBCChannel:基于嵌入Database实现Channel支持事务,可以和任何数量的Source和Sink工作Agent之SinkSink负责将event传输到下一跳或最终目的,成功完成后将event从Channel移除不同类型的Sink:存储event到最终目的的终端Sink.比如Hdfs,Hbase自动消耗的sink。比如NullSink用于Agent间通信的IPCsink:Avro必须作用于一个确切的Channel其他几个组件Interceptor作用于Source,按照预设的顺序在必要地方装饰和过滤events。ChannelSelector允许Source基于预设的标准,从所有Channel中,选择一个或多个ChannelSinkProcessor多个Sink可以构成一个SinkGroup。SinkProcessor可以通过组中所有Sink实现负载均衡;也可以在一个Sink失败时转移到另一个。安装Flume1.从官网下载最新的安装包2.解压缩,比如我的解压到/usr/local/flume-1.5.0目录3.修改flume-env.sh配置文件,主要是JAVA_HOME变量设置JAVA_HOME=/usr/local/jdk1.7.0_724.验证是否安装成功[root@node1Desktop]#/usr/local/flume-1.5.0/bin/flume-ngversion出现:Flume1.5.0Sourcecoderepository:表示安装成功FlumeNG部署-配置文件格式JavaProperties文件格式#注释key1=valuekey2=multi-line\value层级配置agent1.channels.myChannel.type=FILEagent1.channels.myChannel.capacity=1000使用软引用配置链接关系agent1.sources.mySource.type=HTTPagent1.sources.mySource.channels=myChannelFlumeNG部署-简单配置实例Agent1.conf:#定义source、channel和sink名称agent1.sources=src1agent1.channels=ch1agent1.sinks=sink1#定义并配置src1agent1.sources.src1.type=netcatagent1.sources.src1.channels=ch1agent1.sources.src1.bind=127.0.0.1agent1.sources.src1.port=10112#定义并配置sink1agnet1.sinks.sink1.type=loggeragnet1.sinks.sink1.channel=ch1#定义并配置channel1agent1.channels.ch1.type=memoryFlumeNG案例(一)FlumeNG案例(一)第一层(Tier)配置实例a1.channels=c1a1.sources=r1a1.sinks=k1k2a1.sinkgroups=g1a1.sinkgroups.g1.processor.type=LOAD_BALANCEa1.sinkgroups.g1.processor.selector=ROUD_ROBINa1.sinkgroups.g1.processor.backoff=truea1.channels.c1.type=FILEa1.sources.r1.channels=c1a1.sources.r1.type=AVROa1.sources.r1.bind=0.0.0.0a1.sources.r1.port=41414a1.sinks.k1.channel=c1a1.sinks.k1.type=AVROa1.sinks.k1.hostname=a21.example.orga1.sinks.k1.port=41414a1.sinks.k2.channel=c1a1.sinks.k2.type=AVROa1.sinks.k2.hostname=a22.example.orga1.sinks.k2.port=41414FlumeNG案例(一)第二层(Tier)配置实例a2.channels=c1a2.sources=r1a2.sinks=k1a2.channels.c1.type=FILEa2.sources.r1.channels=c1a2.sources.r1.type=AVROa2.sources.r1.bind=0.0.0.0a2.sources.r1.port=41414a2.sinks.k1.channel=c1a2.sinks.k1.type=HDFSa2.sinks.k1.hdfs.path=hdfs://namenode.example.orga2.sinks.k1.hdfs.fileType=DataStreamFlumeNG案例(二)FlumeNG案例(二)第一层(Tier)配置实例a1.channels=c1a1.sources=r1a1.sinks=k1k2a1.sinkgroups=g1a1.sinkgroups.g1.sinks=k1k2a1.sinkgroups.g1.processor.type=LOAD_BALANCEa1.sinkgroups.g1.processor.selector=ROUD_ROBINa1.sinkgroups.g1.processor.backoff=truea1.channels.c1.type=FILEa1.sources.r1.channels=c1a1.sources.r1.type=SYSLOGTCPa1.sources.r1.bind=0.0.0.0a1.sources.r1.port=41414a1.sinks.k1.channel=c1a1.sinks.k1.type=AVROa1.sinks.k1.hostname=a21.example.orga1.sinks.k1.port=41414a1.sinks.k2.channel=c1a1.sinks.k2.type=AVROa1.sinks.k2.hostname=a22.example.orga1.sinks.k2.port=41414FlumeNG案例(二)第二层(Tier)配置实例a2.channels=c1c2a2.sources=r1a2.sinks=k1k2a2.sinkgroups=g1a2.sinkgroups.g1.sinks=k1k2a2.sinkgroups.g1.processor.type=LOAD_BALANCEa2.sinkgroups.g1.processor.selector=ROUD_ROBINa2.sinkgroups.g1.processor.backoff=truea2.channels.c1.type=FILEa2.channels.c1.checkpointDir=/var/run/flume-ng/.flume/ch-1/checkpointa2.channels.c1.dataDirs=/var/run/flume-ng/.flume/ch-1/dataa2.channels.c2.type=FILEa2.channels.c2.checkpointDir=/var/run/flume-ng/.flume/ch-2/checkpointa2.channels.c2dataDirs=/var/run/flume-ng/.flume/ch-2/dataa2.sources.r1.channels=c1c2a2.sources.r1.type=AVROa2.sources.r1.bind=0.0.0.0a2.sources.r1.port=41414a2.sources.r1.selector.type=MULTIPLEXINGa2.sources.r1.selector.header=Severitya2.sources.r1.selector.default=c1a2.sources.r1.selector.mapping.0=c1c2a2.sources.r1.selector.mapping.1=c1c2a2.sources.r1.selector.mapping.2=c1c2a2.sources.r1.selector.mapping.
本文标题:Flume浅谈
链接地址:https://www.777doc.com/doc-1490088 .html