设为首页 收藏本站
查看: 1490|回复: 0

[经验分享] Flume 入门--几种不同的Sources

[复制链接]

尚未签到

发表于 2019-1-30 09:16:05 | 显示全部楼层 |阅读模式
1.flume概念
  flume是分布式的,可靠的,高可用的,用于对不同来源的大量的日志数据进行有效收集、聚集和移动,并以集中式的数据存储的系统。
  flume目前是apache的一个顶级项目。
  flume需要java运行环境,要求java1.6以上,推荐java1.7.
  将下载好的flume安装包解压到指定目录即可。
2.flume中的重要模型
2.1.1.flume Event:
  flume 事件,被定义为一个具有有效荷载的字节数据流和可选的字符串属性集。
2.1.2.flume Agent:
  flume 代理,是一个进程承载从外部源事件流到下一个目的地的过程。包含source channel 和 sink。
2.1.3.Source
  数据源,消耗外部传递给他的事件,外部源将数据按照flume Source 能识别的格式将Flume 事件发送给flume Source。
2.1.4.Channel
  数据通道,是一个被动的存储,用来保持事件,直到由一个flume Sink消耗。
2.1.5.Sink
  数据汇聚点,代表外部数据存放位置。发送flume event到指定的外部目标。
  2.2.          flume流动模型

  2.3.          flume的特点
2.3.1.  复杂流动性
  Flume允许用户进行多级流动到最终目的地,也允许扇出流(一到多)、扇入流(多到一)的、故障转移和失败处理。
2.3.2.  可靠性
  事务性的数据传递,保证了数据的可靠性。
2.3.3.  可恢复性
  通道可以以内存或文件的方式实现,内存更快,但是不可恢复,而文件虽然比较慢但提供了可恢复性。
     入门案例
  1.首先编写一个配置文件:
#example.conf:单节点Flume配置  
    #命名Agent a1的组件
  
    a1.sources  =  r1
  
    a1.sinks  =  k1
  
    a1.channels  =  c1
  

  
    #描述/配置Source
  
    a1.sources.r1.type  =  netcat
  
    a1.sources.r1.bind  =  0.0.0.0
  
    a1.sources.r1.port  =  44444
  

  
    #描述Sink
  
    a1.sinks.k1.type  =  logger
  

  
    #描述内存Channel
  
    a1.channels.c1.type  =  memory
  
    a1.channels.c1.capacity  =  1000
  
    a1.channels.c1.transactionCapacity  =  100
  

  
    #为Channle绑定Source和Sink
  
    a1.sources.r1.channels  =  c1
  
    a1.sinks.k1.channel  =  c1
  2.通过flume的工具启动agent
1$ bin/flume-ng agent --conf conf --conf-file example.conf --name a1 -Dflume.root.logger=INFO,console  3、发送数据
  在windows中通过telnet命令连接flume所在机器的44444端口发送数据。
4.     Source详解
  现在介绍几种比较重要的Source
4.1.    Avro Source
  监听AVRO端口来接受来自外部AVRO客户端的事件流。利用Avro Source可以实现多级流动、扇出流、扇入流等效果。另外也可以接受通过flume提供的Avro客户端发送的日志信息。
4.1.1.   Avro Source属性说明
  !channels  –
  !type  –   类型名称,"AVRO"
  !bind  –   需要监听的主机名或IP
  !port  –   要监听的端口
  threads    –   工作线程最大线程数
  selector.type
  selector.*
  interceptors  –   空格分隔的拦截器列表
  interceptors.*
  compression-type  none   压缩类型,可以是“none”或“default”,这个值必须和AvroSource的压缩格式匹配
  sslfalse  是否启用ssl加密,如果启用还需要配置一个“keystore”和一个“keystore-password”。
  keystore   –   为SSL提供的java密钥文件所在路径。
  keystore-password–   为SSL提供的java密钥文件 密码。
  keystore-typeJKS密钥库类型可以是“JKS”或“PKCS12”。
  exclude-protocolsSSLv3  空格分隔开的列表,用来指定在SSL / TLS协议中排除。SSLv3将总是被排除除了所指定的协议。
  ipFilter   false  如果需要为netty开启ip过滤,将此项设置为true
  ipFilterRules–   定义netty的ip过滤设置表达式规则
  案例:
  编写配置文件  修改上面给出的配置文件,除了Source部分配置不同,其余部分都一样。不同的地方如下:
#描述/配置Source  
    a1.sources.r1.type  =  avro
  
    a1.sources.r1.bind  =  0.0.0.0
  
    a1.sources.r1.port  =  44444
  启动flume:
  ./flume-ng agent --conf ../conf --conf-file ../conf/template2.conf --name a1 -Dflume.root.logger=INFO,console
  通过flume提供的avro客户端向指定机器指定端口发送日志信息:
  ./flume-ng avro-client --conf ../conf --host 0.0.0.0 --port 44444 --filename ../mydata/log1.txt
  会发现确实收集到日志
4.2.    Spooling Directory Source
  这个Source允许你将将要收集的数据放置到"自动搜集"目录中。这个Source将监视该目录,并将解析新文件的出现。事件处理逻辑是可插拔的,当一个文件被完全读入通道,它会被重命名或可选的直接删除。
  要注意的是,放置到自动搜集目录下的文件不能修改,如果修改,则flume会报错。另外,也不能产生重名的文件,如果有重名的文件被放置进来,则flume会报错。
  属性说明:(由于比较长 这里只给出了必须给出的属性,全部属性请参考官方文档):
  !channels  –
  !type  –   类型,需要指定为"spooldir"
  !spoolDir  –   读取文件的路径,即"搜集目录"
  fileSuffix.COMPLETED对处理完成的文件追加的后缀
  案例:
  编写配置文件  修改上面给出的配置文件,除了Source部分配置不同,其余部分都一样。不同的地方如下:
123#描述/配置Sourcea1.sources.r1.type  = spooldira1.sources.r1.spoolDir=/home/park/work/apache-flume-1.6.0-bin/mydata  启动flume:
  ./flume-ng agent --conf ../conf --conf-file ../conf/template4.conf --name a1 -Dflume.root.logger=INFO,console
  向指定目录中传输文件,发现flume收集到了该文件,将文件中的每一行都作为日志来处理
4.3.    NetCat Source
  一个NetCat Source用来监听一个指定端口,并将接收到的数据的每一行转换为一个事件。
4.3.1.   NetCat Source属性说明
  !channels–
  !type–   类型名称,需要被设置为"netcat"
  !bind–   指定要绑定到的ip或主机名。
  !port–   指定要绑定到的端口号
  max-line-length   512单行最大字节数
  案例:上面完整的例子即是
4.4.    HTTP Source
  HTTP Source接受HTTP的GET和POST请求作为Flume的事件,其中GET方式应该只用于试验。
  该Source需要提供一个可插拔的"处理器"来将请求转换为事件对象,这个处理器必须实现HTTPSourceHandler接口,该处理器接受一个 HttpServletRequest对象,并返回一个Flume Envent对象集合。
  从一个HTTP请求中得到的事件将在一个事务中提交到通道中。因此允许像文件通道那样对通道提高效率。
  如果处理器抛出一个异常,Source将会返回一个400的HTTP状态码。
  如果通道已满,无法再将Event加入Channel,则Source返回503的HTTP状态码,表示暂时不可用。
4.4.1.   HTTP Source属性说明
  !type    类型,必须为"HTTP"
  !port–   监听的端口
  bind   0.0.0.0    监听的主机名或ip
  handler      org.apache.flume.source.http.JSONHandler处理器类,需要实现HTTPSourceHandler接口
  handler.*  –   处理器的配置参数
  selector.type
  selector.*
  interceptors  –
  interceptors.*
  enableSSL  false  是否开启SSL,如果需要设置为true。注意,HTTP不支持SSLv3。
  excludeProtocols  SSLv3  空格分隔的要排除的SSL/TLS协议。SSLv3总是被排除的。
  keystore      密钥库文件所在位置。
  keystorePassword Keystore 密钥库密码
  案例:
  编写配置文件  修改上面给出的配置文件,除了Source部分配置不同,其余部分都一样。不同的地方如下:
#描述/配置Source  
    a1.sources.r1.type  = http
  
    a1.sources.r1.port  = 66666
  启动flume:
  ./flume-ng agent --conf ../conf --conf-file ../conf/template6.conf --name a1 -Dflume.root.logger=INFO,console
  通过命令发送HTTP请求到指定端口:
  curl -X POST -d '[{ "headers" :{"a" : "a1","b" : "b1"},"body" : "hello~http~flume~"}]' http://0.0.0.0:6666



运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-669431-1-1.html 上篇帖子: Flume 入门--几种不同的Sinks 下篇帖子: flume抽取mysql数据到kafka
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表