Flume + HDFS Sink采集数据及如何添加第三方JAR

原创 2015年11月19日 14:36:52

Flume默认情况下是没有引入HDFS,Kafka,Elasticsearch,Hbase等sink的相关jar包,如果使用,需要自行添加相关jar包。

下面我以使用HDFS Sink为例,在Flume中加入第三方JAR包。

Flume支持一种特殊的目录结构:plugins.d,它有特殊的格式,可以很方面的管理第三方JAR。当然我们可以直接把第三方JAR丢掉$FLUME_HOME/lib目录,但是这样不利于调试和排除故障,特别是处理JAR包冲突的问题。

plugins.d目录:
plugins.d目录位于$FLUME_HOME/plugins.d。在启动的时候,flume-ng启动脚本会检查 plugins.d 目录的插件确保符合下面的格式,并且包含了正确的路径。

插件目录布局:
每个在 plugins.d 内的插件,最多包含三个子目录。
1,lib - 插件的JAR。
2,libext  - 插件依赖JAR(S)
3,native - 任何所需的本地库,例如:.so文件
下面是两个插件在 plugins.d 目录中的位置(以下以使用HDFS Sink为例):

    plugins.d/  
    plugins.d/hdfs-sink/
    #flume-hdfs-sink-1.5.1.jar是Flume自带的,所有lib目录为空
    plugins.d/hdfs-sink/lib/    
    #flume-hdfs-sink-1.5.1.jar依赖以下四个包
    plugins.d/hdfs-sink/libext/commons-configuration-1.6.jar
    plugins.d/hdfs-sink/libext/hadoop-annotations-2.4.1.jar
    plugins.d/hdfs-sink/libext/hadoop-auth-2.4.1.jar
    plugins.d/hdfs-sink/libext/hadoop-common-2.4.1.jar
    plugins.d/hdfs-sink/libext/hadoop-hdfs-2.4.1.jar
    #没有本地库
    plugins.d/hdfs-sink/native/
    #HDFS配置文件
    plugins.d/hdfs-sink/conf/hdfs-site.xml
    plugins.d/hdfs-sink/conf/core-site.xml








以上是HDFS所需的配置文件和依赖的JAR。

配置Flume环境变量:

JAVA_HOME=/usr/local/jdk1.8.0_45

# Give Flume more memory and pre-allocate, enable remote monitoring via JMX
#JAVA_OPTS="-Xms100m -Xmx200m -Dcom.sun.management.jmxremote"

# Note that the Flume conf directory is always included in the classpath.
#将hdfs-site.xml和core-site.xml放入Flume的环境变量中
FLUME_CLASSPATH="/data/apache-flume-1.5.1-bin/plugins.d/hdfs-sink/conf/"

OK,完事具备,最后采集数据到HDFS中

a1.sources = source1
a1.sinks = sink1
a1.channels = channel1
#resources
a1.sources.source1.type = spooldir
a1.sources.source1.channels = channel1
a1.sources.source1.spoolDir = /data/logs

a1.channels.channel1.type = memory
a1.channels.channel1.capacity = 1000
a1.channels.channel1.transactionCapacity = 500

a1.sinks.sink1.type = hdfs
a1.sinks.sink1.channel = channel1
a1.sinks.sink1.hdfs.path = /flume/events/%Y-%M-%d
a1.sinks.sink1.hdfs.fileType = DataStream
a1.sinks.sink1.hdfs.rollCount = 0
a1.sinks.sink1.hdfs.rollSize = 0
a1.sinks.sink1.hdfs.rollInterval = 0
a1.sinks.sink1.hdfs.rollSize = 1073741824
a1.sinks.sink1.hdfs.filePrefix = nginx-%H-%M
a1.sinks.sink1.hdfs.batchSize = 200
a1.sinks.sink1.hdfs.round = true
a1.sinks.sink1.hdfs.roundValue = 10
a1.sinks.sink1.hdfs.roundUnit = minute
a1.sinks.sink1.hdfs.useLocalTimeStamp = true
该示例是通过SpoolingDirectorySource获取数据放入HDFS中

版权声明:本文为博主原创文章,未经博主允许不得转载。博客地址:http://blog.csdn.net/qianshanding0708

相关文章推荐

flume自定义组件的 jar 包管理

自定义flume 组建后,将项目打成jar 包,关于这个jar 包的管理和使用我在这里列举了三中方式。这三种方式都可以,随自己喜好使用。1. lib 目录将maven项目打成jar包,将jar 包放...

flume自定义组件的 jar 包管理

自定义flume 组建后,将项目打成jar 包,关于这个jar 包的管理和使用我在这里列举了三中方式。这三种方式都可以,随自己喜好使用。 1. lib 目录 将maven项目打成jar包,...

Flume 第三方插件使用说明

推荐三种flume第三方插件,时间拦截器、目录监控source和elasticsearch 2.2的sink。

Flume HDFS Sink使用及源码分析

HDFS Sink介绍 Flume导入数据HDFS,目前只支持创建序列化(sequence)文件和文本(text)文件。还支持这两个文件的压缩。文件可以根据运行的时间,数据的大小和时间的数量来进行周期...

flume学习(四):Flume Interceptors的使用

对于flume拦截器,我的理解是:

flume-ng编程之自定义拦截器

学习flume以来,实现了日志的多来源自动抽取和多target的自动发送等,但是一直以来的数据清洗过程一直是放在hadoop中用MR程序定时进行清洗的,有没有一种方式编程能够直接在flume中来进行相...

flume 自定义正则过滤器

本文实现:flume 读取日志信息时,通过正则匹配过滤,将匹配到的结果存放在指定文件目录。本文结构: 1. 编写自定义过滤器 2. 编写flume配置文件 3. 运行测试日志信息过滤前:2017...

C/C++数组名与指针区别深入探索

引言  指针是c/c++语言的特色,而数组名与指针有太多的相似,甚至很多时候,数组名可以作为指针使用。于是乎,很多程序设计者就被搞糊涂了。而许多的大学老师,他们在c语言的教学过程中也错误得给学生讲解:...

Spark Streaming + Flume整合官网文档阅读及运行示例

1,基于Flume的Push模式(Flume-style Push-based Approach)      Flume被用于在Flume agents之间推送数据.在这种方式下,Spark Str...

Flume + HDFS Sink采集数据及如何添加第三方JAR

http://blog.csdn.net/qianshangding0708/article/details/49913493
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)