Flume 1.7组件概述与列表

来源:互联网 发布:淘宝客微信群 编辑:程序博客网 时间:2024/05/18 01:29

转载请注明原地址:http://blog.csdn.net/m0_37739193/article/details/77570046


Apache版flume-1.7.0源码下载地址:http://archive.apache.org/dist/flume/1.7.0/apache-flume-1.7.0-src.tar.gz

一、Source列表:

Component Interface(组件接口)Type Alias(类型别名)Implementation Class(实现类)org.apache.flume.Sourceavroorg.apache.flume.source.AvroSourceorg.apache.flume.Sourcenetcatorg.apache.flume.source.NetcatSourceorg.apache.flume.Sourceseqorg.apache.flume.source.SequenceGeneratorSourceorg.apache.flume.Sourceexecorg.apache.flume.source.ExecSourceorg.apache.flume.Sourcesyslogtcporg.apache.flume.source.SyslogTcpSourceorg.apache.flume.Sourcemultiport_syslogtcporg.apache.flume.source.MultiportSyslogTCPSourceorg.apache.flume.Sourcesyslogudporg.apache.flume.source.SyslogUDPSourceorg.apache.flume.Sourcespooldirorg.apache.flume.source.SpoolDirectorySourceorg.apache.flume.Sourcehttporg.apache.flume.source.http.HTTPSourceorg.apache.flume.Sourcetaildirorg.apache.flume.source.taildir.TaildirSourceorg.apache.flume.Sourcethriftorg.apache.flume.source.ThriftSourceorg.apache.flume.Sourcejmsorg.apache.flume.source.jms.JMSSourceorg.apache.flume.Source-org.apache.flume.source.kafka.KafkaSourceorg.apache.flume.Source-org.apache.flume.source.avroLegacy.AvroLegacySourceorg.apache.flume.Source-org.apache.flume.source.thriftLegacy.ThriftLegacySourceorg.apache.flume.Source-org.apache.flume.source.StressSourceorg.apache.flume.Source-org.apache.flume.source.twitter.TwitterSourceorg.apache.flume.Source-org.example.MySourceorg.apache.flume.Source-org.apache.flume.source.scribe.ScribeSource

简要说明:
1、Avro Source:支持Avro协议(实际上是Avro RPC),内置支持
2、Netcat Source:监控某个端口,将流经端口的每一个文本行数据作为Event输入
3、Sequence Generator Source:序列生成器数据源,生产序列数据
4、Exec Source:基于Unix的command在标准输出上生产数据
5、Syslog Sources:读取syslog数据,产生Event,支持UDP和TCP两种协议
6、Spooldir Source:监控指定目录内数据变更
7、HTTP Source:基于HTTP POST或GET方式的数据源,支持JSON、BLOB表示形式
8、Taildir Source:1.7增加的新组件。tail监控目录下匹配上正则表达式的的所有文件,并实现了断点续传。更像是Spooldir和Exec的超强结合版
9、Thrift Source:支持Thrift协议,内置支持
10、JMS Source:从JMS系统(消息、主题)中读取数据,该Source目前只在ActiveMQ中测试。
11、Kafka Source:从kafka Topic中读取数据
12、Legacy Sources:兼容老的Flume OG中Source(0.9.x版本),支持Avro和Thrift两种协议
13、Stress Source:压力测试用。
14、Twitter 1% firehose Source:通过API持续下载Twitter数据,试验性质
15、Custom Source:自定义Source
16、Scribe Source:另一种类型的摄取系统(官网的解释,不是很懂,网上关于这个Source的资料也很少)



二、Channel列表:

Component Interface(组件接口)Type Alias(类型别名)Implementation Class(实现类)org.apache.flume.Channelmemoryorg.apache.flume.channel.MemoryChannelorg.apache.flume.Channeljdbcorg.apache.flume.channel.jdbc.JdbcChannelorg.apache.flume.Channelfileorg.apache.flume.channel.file.FileChannelorg.apache.flume.Channel-org.apache.flume.channel.kafka.KafkaChannelorg.apache.flume.ChannelSPILLABLEMEMORYorg.apache.flume.channel.SpillableMemoryChannelorg.apache.flume.Channel-org.apache.flume.channel.PseudoTxnMemoryChannelorg.apache.flume.Channel-org.example.MyChannel

简要说明:
1、Memory Channel:用内存做channel,优点是速度最快,容易配置;缺点是,可靠性最差,因为一旦flume进程挂了内存中还未出来的数据也就没了;
2、JDBC Channel:Event数据存储在数据库中,目前的JDBC Channel支持嵌入式Derby。主要是为了数据持久化,并且可恢复的特性。
3、Kafka Channel:apache下一个版本(1.6)将会带来一个新的组件KafKaChannel,顾名思义就是使用kafka做channel,当然在CDH5.3版本已经存在这个channel。
4、File Channel:用本地文件做channel,优点是可靠性最高,数据都存在磁盘文件中,进程挂了重启后还会断点续传;缺点是速度最慢;
5、Spillable Memory Channel:中和memory channel和file channel,本质上是一个file channel,但是优先存储在内存中,内存满了之后再溢出到磁盘,优点是兼顾上面俩的优点;同样缺点也兼顾了;
6、Pseudo Transaction Channel:只是用于单元测试并不是意味着生产使用
7、Custom Channel:是对channel接口的实现。需要在classpath中引入实现类和相关的jar文件。这Channel对应的type是该类的完整路径



三、Sink列表:

Component Interface(组件接口)Type Alias(类型别名)Implementation Class(实现类)org.apache.flume.Sinkhdfsorg.apache.flume.sink.hdfs.HDFSEventSinkorg.apache.flume.Sinkloggerorg.apache.flume.sink.LoggerSinkorg.apache.flume.Sinkavroorg.apache.flume.sink.AvroSinkorg.apache.flume.Sinkthriftorg.apache.flume.sink.ThriftSinkorg.apache.flume.Sinkircorg.apache.flume.sink.irc.IRCSinkorg.apache.flume.Sinkfile_rollorg.apache.flume.sink.RollingFileSinkorg.apache.flume.Sinknullorg.apache.flume.sink.NullSinkorg.apache.flume.Sinkhbaseorg.apache.flume.sink.hbase.HBaseSinkorg.apache.flume.Sinkasynchbaseorg.apache.flume.sink.hbase.AsyncHBaseSinkorg.apache.flume.Sinkelasticsearchorg.apache.flume.sink.elasticsearch.ElasticSearchSinkorg.apache.flume.Sinkhiveorg.apache.flume.sink.hive.HiveSinkorg.apache.flume.Sink-org.apache.flume.sink.solr.morphline.MorphlineSolrSinkorg.apache.flume.Sink-org.apache.flume.sink.kite.DatasetSinkorg.apache.flume.Sink-org.apache.flume.sink.kafka.KafkaSinkorg.apache.flume.Sink-org.example.MySink

简要说明:
1、HDFS Sink:将数据写入HDFS中。目前,它支持HDFS的文本和序列文件格式,以及支持两个文件类型的压缩。支持将所用的时间、数据大小、事件的数量为操作参数,对HDFS文件进行关闭(关闭当前文件,并创建一个新的)。它还可以对事源的机器名(hostname)及时间属性分离数据,即通过时间戳将数据分布到对应的文件路径
2、Logger Sink:数据写入日志文件
3、Avro Sink:数据被转换成Avro Event,然后发送到配置的RPC端口上
4、Thrift Sink:数据被转换成Thrift Event,然后发送到配置的RPC端口上
5、IRC Sink:从channel中取得信息传到IRC Server
6、File Roll Sink:存储数据到本地文件系统,他有个滚动间隔的设置,设置多长时间去生成文件(默认是30秒)
7、Null Sink:丢弃从channel接收的所有数据
8、HBase Sink:数据写入hbase数据库
补充:Hbase Sink支持写数据到安全的Hbase。为了将数据写入安全的Hbase,用户代理运行必须对配置的table表有写权限。主要用来验证对KDC的密钥表可以在配置中指定。在Flume Agent的classpath路径下的Hbase-site.xml文件必须设置到Kerberos认证。
9、AsyncHBase Sink:异步的HBase Sink,可见速度是比前者快的,但是不支持往Secure Hbase写数据
10、ElasticSearch Sink:数据发送到Elastic Search搜索服务器(集群)
11、Hive Sink:数据写入Hive
12、Morphline Solr Sink:数据发送到Solr搜索服务器(集群)
13、Kite Dataset Sink:写数据到Kite Dataset,试验性质的
14、Kafka Sink:把数据写入Kafka Topic中
15、Custom Sink:自定义Sink



四、Channel Selector(选择器)列表:

Component Interface(组件接口)Type Alias(类型别名)Implementation Class(实现类)org.apache.flume.ChannelSelectorreplicatingorg.apache.flume.channel.ReplicatingChannelSelectororg.apache.flume.ChannelSelectormultiplexingorg.apache.flume.channel.MultiplexingChannelSelectororg.apache.flume.ChannelSelector-org.example.MyChannelSelector

简要说明:
1、Replicating Channel Selector (default):会将source过来的events发往所有channel
2、Multiplexing Channel Selector:可以选择该发往哪些channel
3、Custom Channel Selector:自定义选择器



五、Sink Processors(处理器)列表:

Component Interface(组件接口)Type Alias(类型别名)Implementation Class(实现类)org.apache.flume.SinkProcessordefaultorg.apache.flume.sink.DefaultSinkProcessororg.apache.flume.SinkProcessorfailoverorg.apache.flume.sink.FailoverSinkProcessororg.apache.flume.SinkProcessorload_balanceorg.apache.flume.sink.LoadBalancingSinkProcessororg.apache.flume.SinkProcessor- 

简要说明:
1、Default Sink Processor:接收单一的Sink,不强制用户为Sink创建Processor
2、Failover Sink Processor(故障转移):工作原理是将连续失败sink分配到一个池中,在那里被分配一个冷冻期,在这个冷冻期里,这个sink不会做任何事。一旦sink成功发送一个event,sink将被还原到live池中。在这配置中,需要为所有的sink分配优先级,所有的优先级数字必须是唯一的,这个得格外注意,若没有设置优先级则按照sink被声明的顺序来决定优先级。此外,failover time的上限可以通过maxpenalty属性来进行设置。
补充:maxpenalty为失败的Sink最大的退避时间(单位:毫秒)(退避算法(退避算法为我们在解决重试某项任务的时候,提供了一个比较好的等待思想。),参考:http://qiuqiang1985.iteye.com/blog/1513049)
3、Load balancing Sink Processor(负载均衡):它维护了一个active sinks的索引列表,列表中fenb的sinks的负载必须是分布式的。通过round_robin (轮询)或 random(随机)选择机制实现了分布式负载。选择机制默认为round_robin ,也可通过设置重载。还可以通过集成AbstractSinkSelector类来实现用户自己的选择机制,自定义选举类须继承AbstractSinkSelector。
4、官网上说目前自定义processors还不支持。(Custom sink processors are not supported at the moment.)



六、Interceptors(拦截器)列表:

Component Interface(组件接口)Type Alias(类型别名)Implementation Class(实现类)org.apache.flume.interceptor.Interceptortimestamporg.apache.flume.interceptor.TimestampInterceptor$Builderorg.apache.flume.interceptor.Interceptorhostorg.apache.flume.interceptor.HostInterceptor$Builderorg.apache.flume.interceptor.Interceptorstaticorg.apache.flume.interceptor.StaticInterceptor$Builderorg.apache.flume.interceptor.Interceptorregex_filterorg.apache.flume.interceptor.RegexFilteringInterceptor$Builderorg.apache.flume.interceptor.Interceptorregex_extractororg.apache.flume.interceptor.RegexFilteringInterceptor$Builderorg.apache.flume.interceptor.Interceptorsearch_replaceorg.apache.flume.interceptor.SearchAndReplaceInterceptor$Builderorg.apache.flume.interceptor.Interceptor-org.apache.flume.sink.solr.morphline.UUIDInterceptor$Builderorg.apache.flume.interceptor.Interceptor-org.apache.flume.sink.solr.morphline.MorphlineInterceptor$Builder

简要说明:
1、Timestamp Interceptor:在event的header中添加一个key叫:timestamp,value为当前的时间戳。这个拦截器在sink为hdfs时很有用
2、Host Interceptor:在event的header中添加一个key叫:host,value为当前机器的hostname或者ip
3、Static Interceptor:可以在event的header中添加自定义的key和value
4、Search and Replace Interceptor:用于将events中的正则匹配到的内容做相应的替换
5、Regex Filtering Interceptor:通过正则来清洗或包含匹配的events
6、Regex Extractor Interceptor:RegexExtractorInterceptor作为一个Interceptor实现类可以根据一个正则表达式匹配event body来提取字符串,并使用serializers把字符串作为header的值

思考:官网给的实现类是org.apache.flume.interceptor.RegexFilteringInterceptor$Builder,但为什么不是org.apache.flume.interceptor.RegexExtractorInterceptor$Builder呢?!
7、UUID Interceptor:用于在每个events header中生成一个UUID字符串
8、Morphline Interceptor:该拦截器使用Morphline对每个events数据做相应的转换。关于Morphline的使用,可参考http://kitesdk.org/docs/current/morphlines/morphlines-reference-guide.html



七、Event Serializers(序列化器)列表:

Component Interface(组件接口)Type Alias(类型别名)Implementation Class(实现类)org.apache.flume.serialization.EventSerializer$Buildertextorg.apache.flume.serialization.BodyTextEventSerializer$Builderorg.apache.flume.serialization.EventSerializer$Builderavro_eventorg.apache.flume.serialization.FlumeEventAvroEventSerializer$Builderorg.apache.flume.serialization.EventSerializer$Builder-org.apache.flume.sink.hdfs.AvroEventSerializer$Builderorg.apache.flume.serialization.EventSerializer$Builder-org.example.MyEventSerializer$Builder

简要说明:file_roll sink和hdfs sink都支持EventSerializer接口
1、Body Text Serializer:把事件的body部分写入到输出流中而不需要任何转换或者修改。事件的header将直接被忽略
2、“Flume Event” Avro Event Serializer:把事件序列化到一个Avro容器文件中。使用的模式和RPC Avro机制使用到的处理flume事件的机制一样。这个序列化器继承自AbstractAvroEventSerializer类。
3、Avro Event Serializer:具体也不知道和上面那个有啥区别,有点懵逼。。。。。
4、自定义序列化器



八、其他组件列表:

Component Interface(组件接口)Type Alias(类型别名)Implementation Class(实现类)org.apache.flume.channel.file.encryption.KeyProvider$Builderjceksfileorg.apache.flume.channel.file.encryption.JCEFileKeyProviderorg.apache.flume.channel.file.encryption.KeyProvider$Builder-org.example.MyKeyProviderorg.apache.flume.channel.file.encryption.CipherProvideraesctrnopaddingorg.apache.flume.channel.file.encryption.AESCTRNoPaddingProviderorg.apache.flume.channel.file.encryption.CipherProvider-org.example.MyCipherProvider -org.apache.flume.clients.log4jappender.Log4jAppender -org.apache.flume.clients.log4jappender.LoadBalancingLog4jAppender

说明:这些组件不是很常用并且网上的资料也很少,这里就不做简要说明了。



详细的参数配置还请参考官网:https://flume.apache.org/FlumeUserGuide.html

原创粉丝点击