分享

flume 插件开发介绍

hyj 2014-7-3 21:38:37 发表于 常识型 [显示全部楼层] 回帖奖励 阅读模式 关闭右栏 2 33804
问题导读:
如何开发sink插件?
插件开发完毕如何加入到flume中?







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()

Sink和Decorator必须实现四个方法:
         voidopen() throws IOException
        void append(Event e) throws IOException
        void close() throws IOException
        ReportEvent getReport()

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

在sink的插件类中一定要是加入下面的代码:
   
  1. public static List<Pair<String, SinkBuilder>> getSinkBuilders() {
  2.        List<Pair<String, SinkBuilder>> builders = new ArrayList<Pair<String, SinkBuilder>>();
  3.        builders.add(new Pair<String, SinkBuilder>("<font color="#0000ff">HBaseEventSinkV1</font>",builder()));
  4.        return builders;
  5.     }
复制代码

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

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

方法二:
简单的方法是将开发的jar包和需要引入的jar包直接复制到/usr/lib/flume/lib
修改flume-site.xml文件如下所示:
  1. <property>
  2. <name>flume.plugin.classes</name>  
  3. <value>插件类得全路径名(如:hello.HelloWorldSink) </value>
  4.     <description>Comma separated list of plugin classes</description>
  5.   </property>
复制代码


将flume-site.xml文件放到master 和collector的/etc/flume/conf 下
启动集群配置即可


已有(3)人评论

跳转到指定楼层
hongqianli588 发表于 2015-5-29 12:12:41
楼主这是基于Flume OG的版本吗?

点评

hyj
基于flume,只供参考提供思路  发表于 2015-5-29 12:19
回复

使用道具 举报

hongqianli588 发表于 2015-5-29 12:55:27
hongqianli588 发表于 2015-5-29 12:12
楼主这是基于Flume OG的版本吗?

看帖子最后提到了 master 和collector 这个是Flume OG 版本的东西吧,好像
Flume NG是没有这个概念的,最近研究这个,看到这个有点晕、
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条