Flume之Source

                                     Source
Flume内置了大量的Sourece,其中Avro Source(集群)、Thrift Source、Spooling Directory Source(目录)、Kafka Source具有较好的性能和较广泛的使用场景,下面主要介绍这几种Source。
类型 说明
Avro Source 支持Avro协议(实际上是Avro RPC),内置支持。
Thrift Source 支持Thrift协议,内置支持。
Exec Source 基于Unix的command在标准输出上生产数据。
JMS Source 从JMS系统(消息、主题)中读取数据,该Source目前只在ActiveMQ中测试。
Spooling Directory Source 监控指定目录内数据变更。
Twitter 1% firehose Source 通过API持续下载Twitter数据,试验性质。
Netcat Source 监控某个端口,将流经端口的每一个文本行数据作为Event输入。
Sequence Generator Source 序列生成器数据源,生产序列数据。
Syslog Sources 读取syslog数据,产生Event,支持UDP和TCP两种协议。
HTTP Source 基于HTTP POST或GET方式的数据源,支持JSON、BLOB表示形式。
Kafka Source 从Kafka Topic中读取数据。
Stress Source 压力测试用。
Legacy Sources 兼容老的Flume OG中Source(0.9.x版本)
Custom Source 自定义Source
Scribe Source  
 
Avro Source(服务器集群)
Avro Source监听Avro端口,接收外部Avro客户端发送过来的Avro Event数据。在多级流中,Avro Source可以和前一个Flume Agent的Avro Sink配对,建立分层收集拓扑。Avro Source的配置如下表所示,表中只列出必填项,更多配置项请参考官方用户手册。
配置项 默认值 说明
channels   与Source连接的通道名称。
type   Source的类型名称,值为avro。
port   Source监听的端口
bind   服务器主机名或者IP地址
 
Avro Source配置参考如下,a1为Agent的实例名称。
a1.sources = r1 #a1中的Source a1.channels = c1 #a1中的Channel a1.sources.r1.type = avro #Source的类型 a1.sources.r1.channels = c1 #指定Source r1数据发送到的Channel a1.sources.r1.bind = 0.0.0.0 #Source绑定的地址 a1.sources.r1.port = 4141 #Source监听的端口
 
 
Thrift Source
Thrift Source监听Thrift端口,接收外部Thrift客户端发送过来的Thrift Event数据。在多级流中,Thrift Source可以和前一个Flume Agent的Thrift Sink配对,建立分层收集拓扑。Thrift Source支持基于Kerberos身份验证的安全模式。Thrift Source的配置如下表所示,表中只列出必填项,更多配置项请参考官方用户手册。Thrift Source支持基于Kerberos身份验证的安全模式。
配置项 默认值 说明
channels   与Source连接的通道名称。
type   Source的类型名称,type值为thrift。
port   Source监听的端口
bind   服务器主机名或者IP地址
 
Thrift Source配置参考如下,a1为Agent的实例名称。
a1.sources = r1 #a1中的Source a1.channels = c1 #a1中的Channel a1.sources.r1.type = thrift #Source的类型 a1.sources.r1.channels = c1 #指定Source r1数据发送到的Channel a1.sources.r1.bind = 0.0.0.0 #Source绑定的地址 a1.sources.r1.port = 4141 #Source监听的端口
 
 
Exec Source(监听文件)
Exec Source在启动时调用的Unix命令,该命令进程会持续地把标准日志数据输出到Exec Source,如果命令进程关闭,Exec Source也会关闭。Exec Source支持cat [named pipe]或者tail -F [file]命令。Exec Source最大的问题就是数据有可能丢失,因为当Channel接收Exec Source数据出错时或者抛出异常时,Exec Client并不能捕获到该错误。建议使用Spooling Directory Source代替。
配置项 默认值 说明
channels   与Source连接的通道名称。
type   Source的类型名称,type值为exec。
command   运行的命令
 
Thrift Source配置参考如下,a1为Agent实例名称。
a1.sources = r1 a1.channels = c1 a1.sources.r1.type = exec a1.sources.r1.command = tail -F /var/log/secure a1.sources.r1.channels = c1
 
 
JMS Source
JMS Source从队列或者Topic中读取数据,目前只在ActiveMQ中测试。在使用JMS Source时,必须在Flume ClassPath中添加JMS JAR包。
配置项 默认值 说明
channels   与Source连接的通道名称。
type   Source的类型名称,type值为jms。
initialContextFactory   org.apache.activemq.jndi.ActiveMQInitialContextFactory
connectionFactory   JNDI名称
providerURL   JMS Provider URL
destinationName    
destinationType   取值queue或者topic
 
JMS Source配置参考如下,a1为Agent实例名称。
a1.sources = r1 a1.channels = c1 a1.sources.r1.type = jms a1.sources.r1.channels = c1 a1.sources.r1.initialContextFactory = org.apache.activemq.jndi.ActiveMQInitialContextFactory a1.sources.r1.connectionFactory = GenericConnectionFactory a1.sources.r1.providerURL = tcp://mqserver:61616 a1.sources.r1.destinationName = BUSINESS_DATA a1.sources.r1.destinationType = QUEUE
 
 
Spooling Directory Source(监听系统上的指定目录)
Spooling Directory Source监听系统上的指定目录,当目录中有新的文件创建时,Spooling Directory Source会把新文件的内容读取并推送到Channel中,并且把已读取的文件重命名成指定格式或者把文件删除。由于数据是以文件的形式存放的系统中,Spooling Directory Source的可靠性非常高,即使是Flume Agent崩溃或者重启,数据也可以恢复。
配置项 默认值 说明
channels   与Source连接的通道名称。
type   Source的类型名称,type值为spooldir。
spoolDir   Source监听的目录
 
Spooling Directory Source配置参考如下,a1为Agent实例名称。
a1.sources = s1 #a1中的Source a1.channels = c1 #a1中的Channel a1.sources.s1.type = spooldir #Source的类型 a1.sources. s1.channels = c1 #指定Source r1数据发送到的Channel a1.sources. s1.spoolDir = /var/log/apache/flumeSpool
 
Kafka Source
Kafka Source从消息队列Kafka Topic中读取日志消息,Kafka Source相当于消息队列的Consumer。可以把多个Kafka Source配置到同一个分组里面,这样每个Source都可以读取同一个Topic中的数据,从而提高性能。
配置项 默认值 说明
channels   与Source连接的通道名称。
type   org.apache.flume.source.kafka,KafkaSource
zooKeeperConnect   Kafka集群的ZooKeeper路径
groupId flume Kafka Source分组
topic   Kafka Topic
 
Kafka Source配置参考如下,a1为Agent实例名称。
a1.sources.source1.type = org.apache.flume.source.kafka.KafkaSource a1.sources.source1.channels = channel1 a1.sources.source1.zookeeperConnect = localhost:2181 a1.sources.source1.topic = test1 a1.sources.source1.groupId = flume a1.sources.source1.kafka.consumer.timeout.ms = 100
 
 
NetCat Source(监听指定的端口)
NetCat Source监听指定的端口,把接收到的数据按行划分,每行文本都封装成一个Event数据发送给Channel。
配置项 默认值 说明
channels   与Source连接的通道名称。
type   netcat
bind   地址
port   端口
 
Netcat Source配置参考如下, a1为Agent实例名称。
a1.sources = r1 a1.channels = c1 a1.sources.r1.type = netcat a1.sources.r1.bind = 0.0.0.0 a1.sources.r1.bind = 6666 a1.sources.r1.channels = c1
 
HTTP Source
HTTP Source接收POST和GET发送的Event数据,其中GET主要用户测试,不建议生产环境使用。HTTP数据通过handler(实现HTTPSourceHandler接口)转换成Event,该handler接收HttpServletRequest并返回Event数组。如果handler出现异常,HTTP Source返回400错误。如果Channel满了或者Channel无法接收Event,HTTP Source返回503错误。
配置项 默认值 说明
channels   与Source连接的通道名称。
type   http
port   HTTP Source监听的端口
handler org.apache.flume.source.http.JSONHandler 可选值有org.apache.flume.source.http.JSONHandler和org.apache.flume.sink.solr.morphline.BlobHandler
 
HTTP Source配置参考如下, a1为Agent的实例名称。
a1.sources = r1 a1.channels = c1 a1.sources.r1.type = http a1.sources.r1.port = 5140 a1.sources.r1.channels = c1 a1.sources.r1.handler = org.example.rest.RestHandler a1.sources.r1.handler.nickname = random props
 
如何查看系统shell环境
$ echo $SHELL 查看系统的shell环境
$ cat /etc/shells 查看有哪些shell脚本
posted @ 2016-09-20 14:11  Boy.yu  阅读(700)  评论(0编辑  收藏  举报