您现在的位置 >> Hadoop教程 >> Hadoop实战 >> flume专题  
 

flume 插件开发介绍

【作者:Hadoop实战专家】【关键词:插件 jar包 flume 开发 】 【点击:58175次】【2013-04-0】
如何开发sink插件?插件开发完毕如何加入到flume中? 以开发collector的插件类为例,完成插件类的开发之后,将插件类打包分别放到master和collector主机上(注:多个master和多个collector的情况下要都放置,最好目录都一样,便于配置flume classpath)。  

相关热门搜索:maven3 eclipse 插件 eclipse maven插件 eclipse maven3插件

大数据标签:hbase flume bigdata

问题导读:
如何开发sink插件?
插件开发完毕如何加入到flume中?

flume插件开发一般分如下步骤

1 编写插件类(Sink/Source/Decorator)相应的继承flume的(EventSink.Base/ EventSource.Base/EventSinkDecorator)

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

2.        List> builders = new ArrayList>();

3.        builders.add(new Pair("HBaseEventSinkV1",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. 

2. flume.plugin.classes

3. 插件类得全路径名(如:hello.HelloWorldSink) 

4.     Comma separated list of plugin classes

5.   

复制代码

将flume-site.xml文件放到master 和collector的/etc/flume/conf 下

启动集群配置即可

大数据系列flume相关文章:

最新评论
&mdash2014-09-10 07:16:32
hadoop程序出现bug,需要用小批量数据,快速定位问题。而不是一次次尝试。
5爺2014-09-09 09:32:46
[图片]
少^2014-09-09 10:21:12
集成GemFire,Hadoop生态圈的又一把火-CSDN.NET http://t.cn/Rvk1PTc
冰泪男孩2014-09-08 09:03:57
CentOS
sa2014-09-08 02:08:14
at org.apache.hadoop.hbase.client.RpcRetryingCaller.callWithRetries(RpcRetryingCaller.java:114)
entere2014-09-07 06:21:48
java中对hive查询的数据做了处理,怎么把处理后的数据再插入到hive表里
晃晃悠悠2014-09-06 07:19:02
HDFS的JavaAPI操作 | [java] view plaincopy [*]package hdfs; [*] [*]import static org.junit.Assert.fail; [*] [*]import java.util.Arrays; [*] [*]import org.apache.hadoop.conf.Configuration; [*]import org.apache.hadoop.fs.BlockLoca RPCntas
彬哥2014-09-06 04:50:24
Error: GC overhead limit exceeded(这个应该怎么解决)
IdleMind2014-09-05 01:38:26
Hadoop集群太慢了,提交一个任务等半天,这工作效率~~@曹国伟
随风2014-09-04 11:45:11
腾讯大规模Hadoop集群实践,推荐 大数据资料:http://t.cn/zOIHwlk
 
  • Hadoop生态系统资料推荐