环境:CentOS6.6 64位 + FlumeNG 1.6

请参考推荐文档:

Flume-ng的原理和使用 - JunezChen Blog - SegmentFault  https://segmentfault.com/a/1190000002532284

已经很全面了,没必要自己写一份文档,更多内容可以参考Flume安装包里doc目录下的自带文档

一、安装

  注意:需要预先安装JDK,因为flume是基于Java的;

       Flume是没有高可用HA的,但是可以使用拦截器、渠道选择器等高级组件实现负载均衡等功能;

     Flume经常和Kafka配合使用。

1、下载并解压FlumeNG

[root@root ~]# wget http://124.205.69.169/files/A1540000011ED5DB/mirror.bit.edu.cn/apache/flume/1.6.0/apache-flume-1.6.0-bin.tar.gz
[root@root ~]# tar -zxvf apache-flume-1.6.-bin.tar.gz -C /opt/
[root@root ~]# cd /opt/
[root@root opt]# mv apache-flume-1.6.-bin apache-flume

2、修改环境变量、启动

[root@root opt]# cd apache-flume/
[root@root apache-flume]# cp conf/flume-env.sh.template conf/flume-env.sh
[root@crxy99 apache-flume]# vim conf/flume-env.sh #修改JAVA_HOME
23行: export JAVA_HOME=/opt/jdk1..0_45
[root@crxy99 apache-flume]# vim conf/example.conf #创建agent模板配置文件
[root@crxy99 apache-flume]# bin/flume-ng agent --conf conf/ --conf-file conf/example.conf --name a1 -Dflume.monitoring.type=http -Dflume.monitoring.port= -Dflume.root.logger=INFO,console & #启动脚本

补充:

  1)、模板example.conf:

#配置一个agent 名字为a1
#声明这个agent的三个组件 sources 有一个r1,sinks 包含一个 k1,channels包含一个c1
a1.sources = r1
a1.sinks = k1
a1.channels = c1 # 配置r1 使用netcat的source
a1.sources.r1.type = netcat
a1.sources.r1.bind = localhost
a1.sources.r1.port = # 配置k1 使用loggersink
a1.sinks.k1.type = logger # 配置c1 使用内存的channel
a1.channels.c1.type = memory
a1.channels.c1.capacity =
a1.channels.c1.transactionCapacity = #连线,将三个组件关联起来
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

  2)、启动脚本的含义:

  agent    使用agent数据处理方式

  -Dflume.root.logger=INFO,console   -D后面的为参数,这里使用打印到控制台的方式,并动态修改log4j的为info级别

  3)、关闭服务: 

[root@root apache-flume]# jps
Jps
Application
[root@root apache-flume]# kill - #flume目前没有关闭服务的脚本,只能kill

  4)、补充:Telnet

  在测试、学习阶段可以使用telnet工具进行模拟,linux下安装方式(Windows下自带了Telnet服务,启用即可,可以百度相关文档)

# yum -y install telnet

二、实例

实例1:一个需求:实时监听一个文件(如/test/logs/access.log)的数据增加

分析:1、由于agent方式能提供持续传输数据的服务,因此采用agent数据处理方式;

   2、agent组件:source  -->   channel  -->   sink

   3、动态监控文件的数据的增加情况可以使用命令tail -F 命令(注意不是tail -f,后者不会retry),因此可以使用exec sink

   4、假设内存情况是充裕的,不予考虑,采用memory channel

   5、假设数据发送到本地:file roll sink

如下图所示(开发过程中画图可以很好的理解项目数据采集流程,推荐使用):

因此:编写agent配置文件:

#配置一个agent 名字为a1
#、声明这个agent的三个组件 sources 有一个r1,sinks 包含一个 k1,channels包含一个c1
a1.sources = r1
a1.sinks = k1
a1.channels = c1 #、配置r1 使用exec的source
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /test/logs/access.log # 配置c1 使用file的channel
a1.channels.c1.type = file
a1.channels.c1.checkpointDir = /test/flume_checkpoint #检查点数据存放目录
a1.channels.c1.dataDirs = /test/flume_datadir #数据存储目录
a1.channels.c1.transactionCapacity = # 配置k1 使用file rolling sink
a1.sinks.k1.type = file_roll
a1.sinks.k1.sink.directory = /test/flumefile #文件存放目录
a1.sinks.k1.sink.rollInterval = #每天产生一个新文件(单位:s) #、连线,将三个组件关联起来
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

启动flume:

$ nohup bin/flume-ng agent --conf conf/ --name a1 --conf-file conf/execsource_filerollsink.conf &

注:flume进程启动动没有关闭的命令,只能kill掉。:

实战2:若上面的文件在某一时刻出现高并发的情况,flume很容易挂掉,如何处理?

说明:在高并发情况下,若不更改默认配置,flume容易出现内存溢出的错误。这是因为它默认的堆初始内存只有20M,可以编辑环境变量

# vim conf/flume-env.sh,去掉下面一行注释的设置,并根据需要调整初始内存和最大分配内存。

export JAVA_OPTS="-Xms100m -Xmx2000m -Dcom.sun.management.jmxremote"

注:20M源于/bin/flume-ng里的默认设置:JAVA_OPTS="-Xmx20m"

 

参考:Flume 1.6.0 User Guide — Apache Flume  http://flume.apache.org/FlumeUserGuide.html

注:解压后的flume目录下有docs目录,下面的说明文档与该官网的一致,非常人性化!

FlumeNG 笔记的更多相关文章

  1. Flume-ng+Kafka+storm的学习笔记

    Flume-ng Flume是一个分布式.可靠.和高可用的海量日志采集.聚合和传输的系统. Flume的文档可以看http://flume.apache.org/FlumeUserGuide.html ...

  2. 即将上线的flume服务器面临的一系列填坑笔记

      即将上线的flume服务器面临的一系列填坑笔记 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任.   一.flume缺少依赖包导致启动失败! 报错信息如下: 2018-10-17 ...

  3. Spark Streaming笔记

    Spark Streaming学习笔记 liunx系统的习惯创建hadoop用户在hadoop根目录(/home/hadoop)上创建如下目录app 存放所有软件的安装目录 app/tmp 存放临时文 ...

  4. Kafka笔记整理(一)

    Kafka简介 消息队列(Message Queue) 消息 Message 网络中的两台计算机或者两个通讯设备之间传递的数据.例如说:文本.音乐.视频等内容. 队列 Queue 一种特殊的线性表(数 ...

  5. spark streaming 笔记

    spark streaming项目 学习笔记 为什么要flume+kafka? 生成数据有高峰与低峰,如果直接高峰数据过来flume+spark/storm,实时处理容易处理不过来,扛不住压力.而选用 ...

  6. git-简单流程(学习笔记)

    这是阅读廖雪峰的官方网站的笔记,用于自己以后回看 1.进入项目文件夹 初始化一个Git仓库,使用git init命令. 添加文件到Git仓库,分两步: 第一步,使用命令git add <file ...

  7. js学习笔记:webpack基础入门(一)

    之前听说过webpack,今天想正式的接触一下,先跟着webpack的官方用户指南走: 在这里有: 如何安装webpack 如何使用webpack 如何使用loader 如何使用webpack的开发者 ...

  8. SQL Server技术内幕笔记合集

    SQL Server技术内幕笔记合集 发这一篇文章主要是方便大家找到我的笔记入口,方便大家o(∩_∩)o Microsoft SQL Server 6.5 技术内幕 笔记http://www.cnbl ...

  9. PHP-自定义模板-学习笔记

    1.  开始 这几天,看了李炎恢老师的<PHP第二季度视频>中的“章节7:创建TPL自定义模板”,做一个学习笔记,通过绘制架构图.UML类图和思维导图,来对加深理解. 2.  整体架构图 ...

随机推荐

  1. servlet应用及知识点总结

    1. servlet的web.xml中的配置 ------------------------------------------------------------------1. response ...

  2. SQLite使用(二)&&数据类型

    1.概述 我们熟知的数据库引擎大部分采用静态数据类型,即列定义的类型定义了值的存储,并且值要严格满足列的定义,同一列所有值的存储方式都相同,比如定义了一个列类型为整型 int,不能在该列上输入'abc ...

  3. cstore_fdw的安装使用以及源码分析

    一.cstore_fdw的简介 https://github.com/citusdata/cstore_fdw,此外部表扩展是由citusdata公司开发,使用RC_file格式对数据进行列式存储. ...

  4. 安装Ubuntu的那些事儿

    这是博主第一次写博客,本人虽然目前就读的专业属计算机,但目前也是属于新手上路的那一类人.正好不久前解决了一个困扰了我很久的问题 ,现在拿出来给大家分享一下. 上个学期学校的工作室给大家集中普及linu ...

  5. bug描述技巧

    进入测试行业已经两年了,我从未认真的考虑过提交一个bug需要注意哪些问题,只是主观的认为我只需要描述清楚就OK了,但是我在工作中发现有个别的开发经常跑来告诉我"这个bug你是不是描述错了&q ...

  6. JAVA开发中遇到的小白点

    这里主要是自己个人开发中遇到的一些小问题,自己攒起来,来弥补自己薄弱的JAVA基础,大神不要见笑 1. DateFormat格式化的HH和hh区别: public static boolean com ...

  7. 【转】前端工程师必须了解的 谷歌 HTML/CSS 规范

    背景 这篇文章定义了 HTML 和 CSS 的格式和代码规范,旨在提高代码质量和协作效率. 通用样式规范 协议 省略图片.样式.脚本以及其他媒体文件 URL 的协议部分(http:,https:),除 ...

  8. Stream流

    在Node中,存在各式各样不同的数据流,Stream(流)是一个由不同对象实现的抽象接口.例如请求HTTP服务器的request是一个 流,类似于stdout(标准输出):包括文件系统.HTTP 请求 ...

  9. [LeetCode] Unique Binary Search Trees 独一无二的二叉搜索树

    Given n, how many structurally unique BST's (binary search trees) that store values 1...n? For examp ...

  10. 委托,匿名函数和lambda表达式

    很早之前就接触到了委托,但是一直对他用的不是太多,主要是本人是菜鸟,能写的比较高级的代码确实不多,但是最近在看MSDN微软的类库的时候,发现了微软的类库好多都用到了委托,于是决定好好的研究研究,加深一 ...