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

[经验分享] flume插件开发

[复制链接]

尚未签到

发表于 2015-11-27 18:25:58 | 显示全部楼层 |阅读模式
  转自:http://www.aboutyun.com/forum.php?mod=viewthread&tid=8295&highlight=flume
  参考:http://www.aboutyun.com/forum.php?mod=viewthread&tid=8315&highlight=flume
  首先第一步你有这个类:
开发完毕,然后打包jar包,将jar包加入到flume中,有两种方法:


方法一
进入vi /etc/profile 在文件中加入 export FLUME_CLASSPATH = XXX/XX/XXX.jar
在CALSSPATH 的尾部加入:$FLUME_CLASSPATH , 然后保存退出后,在命令行执行sh /etc/profile ,通过在命令行输入 flume classpath 查看插件jar包是否在其中,在其中表示配置完成(注:开发插件时引入的jar包必须都能够在flume classpath下找到,如果找不到的话像加入插件包的方式加入)


方法二:

简单的方法是将开发的jar包和需要引入的jar包直接复制到/usr/lib/flume/lib
修改flume-site.xml文件 如下所示:



  • <property>
  • <name>flume.plugin.classes</name>
  • <value>插件类得全路径名(如:hello.HelloWorldSink) </value>
  •     <description>Comma separated list of plugin classes</description>
  •   </property>
[color=#336699!important]复制代码


将flume-site.xml文件放到master 和collector的/etc/flume/conf 下
启动集群配置即可
  
  flume插件开发一般分如下步骤:
1 编写插件类(Sink/Source/Decorator)相应的继承flume的(EventSink.Base/ EventSource.Base/EventSinkDecorator<S>)
Source必须实现四个方法:



  • void open() throws IOException
  •         Event next() throws IOException
  • void close() throws IOException
  • ReportEvent getReport()
[color=#336699!important]复制代码



  Sink和Decorator必须实现四个方法:

  • void open() throws IOException
  •         void append(Event e) throws IOException
  •         void close() throws IOException
  •         ReportEvent getReport()
[color=#336699!important]复制代码

主要介绍sink插件的开发
append(Event e)方法中的event参数是flume框架自带的类,日志文件的一行记录会在flume框架中封装成一个event,在append方法中对event的处理就可以当做是处理日志文件的每一行,Event包含的六个属性是:
               
        Unix timestamp  时间戳
                                Nanosecond timestamp
                                Priority
        Source host 主机地址(这个地址是产生日志的文件地址)
                                Body 日志文件的一行
        Metadata table with an arbitrary number of attribute value pairs.


在sink的插件类中一定要是加入下面的代码:
public static List<Pair<String, SinkBuilder>> getSinkBuilders() {
                List<Pair<String, SinkBuilder>> builders = new ArrayList<Pair<String, SinkBuilder>>();
                builders.add(new Pair<String, SinkBuilder>(&quot;HBaseEventSinkV1&quot;,
                                builder()));
                return builders;
        }


因为flume的SinkFactoryImpl中需要通过这份方法将写的插件类注册到flume,如果不写会报错,&quot;HBaseEventSinkV1&quot; 就是注册名
以开发collector的插件类为例,完成插件类的开发之后,将插件类打包分别放到master和collector主机上(注:多个master和多个collector的情况下要都放置,最好目录都一样,便于配置flume classpath)。  
  

  根据上面的方法,首先你可以自定义个sink,然后把这个类放到flume中,放到flume中后,你在配置文件中,配置自己自定义的type
agent1.sinks.sink1.type=“自定义

这样他应该就能找到你的

你可以自定义到Kafka


运维网声明 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-144314-1-1.html 上篇帖子: Flume安装和配置 下篇帖子: Flume-0.9.4分布式安装与配置手册
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

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

扫描微信二维码查看详情

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


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


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


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



合作伙伴: 青云cloud

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