Flume实战监听文件夹内文件变化


Flume官网有多种场景的source,sink,channel的配置







1、flume安装目录下新建文件夹 example 

2、在example下新建文件 

spooldir-logger.conf

内容如下:

a1.sources = r1
a1.sinks = k1
a1.channels = c1# Describe/configure the source
a1.sources.r1.type = spooldir
a1.sources.r1.spoolDir = /home/hadoop/flume_test
a1.sources.r1.fileHeader = true# Describe the sink
a1.sinks.k1.type = logger# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1


3、创建文件夹  /home/hadoop/flume_test


4、启动,

命令:flume-ng agent -c ../conf -f spooldir-logger.conf -n a1 -Dflume.root.logger=INFO,console


5、在flume_test文件夹下新建文件

echo "11111"  >>  hello.txt

flume_test文件夹下多了个文件:hello.txt.COMPLETED


但flume报错了。

2017-03-22 21:55:50,005 (pool-3-thread-1) [ERROR - org.apache.flume.source.SpoolDirectorySource$SpoolDirectoryRunnable.run(SpoolDirectorySource.java:280)] FATAL: Spool Directory source r1: { spoolDir: /home/hadoop/flume_test }: Uncaught exception in SpoolDirectorySource thread. Restart or reconfigure Flume to continue processing.
java.lang.IllegalStateException:File name has been re-used with different files. Spooling assumptions violated for /home/hadoop/flume_test/hello.txt.COMPLETED

跟踪抛出异常的源码,SpoolDirectorySource会启动一个线程轮询监控目录下的目标文件,当读取完该文件(readEvents)之后会对该文件进行重名(rollCurrentFile),当重命名失败时会抛出IllegalStateException,被SpoolDirectoryRunnable catch重新抛出RuntimeException,导致当前线程退出,从源码看SpoolDirectoryRunnable是单线程执行的,因此线程结束后,监控目录下其他文件不再被处理。所以,再新建个 word.txt 文件,flume没有监听动作了。如下图,word.txt没有被重命名 word.txt.COMPLETED



正确的做法:


不要在flume_test文件夹下直接新建文件,写内容。在其他文件下新建,写好内容,mv 到flume_test文件夹下。

[hadoop@nbdo3 ~]$ cd testdata/
[hadoop@nbdo3 testdata]$ ll
total 4
-rw-rw-r--. 1 hadoop hadoop 71 Mar 10 20:19 hello.txt
[hadoop@nbdo3 testdata]$ cp hello.txt ../flume_test/
[hadoop@nbdo3 testdata]$ echo "123456778" >> world.txt
[hadoop@nbdo3 testdata]$ cp world.txt ../flume_test/
[hadoop@nbdo3 testdata]$




-------------

更多的Java,Angular,Android,大数据,J2EE,Python,数据库,Linux,Java架构师,:

http://www.cnblogs.com/zengmiaogen/p/7083694.html



本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/538673.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python如何获取输入_python如何从键盘获取输入实例

python中使用input()函数来获取用户输入 函数 input() 让程序暂停运行,等待用户输入一些文本,获取用户的输入后,Python将其存储到一个变量中,以方便后期使用。 name input("Tell me your name,and I will repeat it back to…

cad打印本计算机未配置,CAD打印的基本设置详细教程

CAD打印的基本设置详细教程开始画图之前我们就考虑到打印的需要,要用多大纸张,打印比例应该设置成多少,打印后的字高、线宽、颜色应该设置成多少,在绘制图形的时候,这些为打印而做的准备工作必须做好。要想正确地打印图…

原 BinaryWriter和BinaryReader(二进制文件的读写)

原文 BinaryWriter和BinaryReader(二进制文件的读写) C#的FileStream类提供了最原始的字节级上的文件读写功能,但我们习惯于对字符串操作,于是StreamWriter和 StreamReader类增强了FileStream,它让我们在字符串级别上操…

python redis 消息队列_Python的Flask框架应用调用Redis队列数据的方法

任务异步化打开浏览器,输入地址,按下回车,打开了页面。于是一个HTTP请求(request)就由客户端发送到服务器,服务器处理请求,返回响应(response)内容。 我们每天都在浏览网…

go ip过滤_用Go实现自己的爬虫

作者:Masamune在日常生活中,我们时常会遇到一些采集数据相关的需求,比如获取一些官方数据整理到excel表中进行统计,聚合一些网页新闻提高自己的阅读效率等等。虽然许多爬虫教程都是用python写的,但是我认为Go语言是比p…

Flume实战采集文件内容存入HDFS

1、flume安装目录下新建文件夹 example 2、在example下新建文件 log-hdfs.conf 内容如下: # Name the components on this agent a1.sources r1 a1.sinks k1 a1.channels c1#exec 指的是命令 # Describe/configure the source a1.sources.r1.type exec #F…

总结计算机语言的基本元素,认识程序设计中基本元素教案.doc

曲靖师院计算机科学与工程学院学生试讲教案表课题:认识程序中的基本元素 年级:高一 课时:1课时授课时间:20分钟 讲授者:秦巧林 指导教师:崔丽梅教学目标知识与技能1. 掌握计算机程序中常用的常量、变量、函…

python海龟绘图圆形_python之海龟绘图

1. 基本功能介绍 在海龟作图中,我们可以编写指令让一个虚拟的(想象中的)海龟在屏幕上来回移动。这个海龟带着一只钢笔,我们可以让海龟无论移动到哪都使用这只钢笔来绘制线条。通过编写代码,以各种很酷的模式移动海龟&a…

PLSQL Developer导入csv文件到oracle

csv文件内容: 要导入的表结构 create table RPT_MONILUCE_2_P01 ( imsi NUMBER, road_line NUMBER, ci NUMBER, diff NUMBER, rn NUMBER, sdate DATE, report_id NUMBER(20) ) 步骤: 1、在csv第一行上增加…

erwin 不能输入中文_国产开源建模软件PDMan与国外商业建模软件ERwin的主要功能比较...

在数据库建模的过程中,我们经常会使用到ERwin或者Power Designer之类的建模软件,来构建我们的逻辑模型和物理模型。但是这类软件都属于商业软件,需要企业购买相应的许可证授权。有些时候,我们会在没有购买这类商业建模软件的环境下…

Confluence 6 workbox 通知包含了什么

当一个用户在 Confluence 中进行下面的操作的时候,workbox 将会显示为通知: 分享(Shares) 你的页面或者博客页面。 提及(Mentions) 你的页面,博客页面,回复或者任务。你 关注&#x…

已知一点经纬度,方位角,距离,求另一点经纬度

参考了博文:http://blog.csdn.net/pyx6119822/article/details/52298037 ------------------------------------------------ package hellotest;public class LonLatTest3 {/** 大地坐标系资料WGS-84 长半径a6378137 短半径b6356752.3142 扁率f1/298.2572236*//**…

计算机一级excel如何选择2个,2017年计算机一级excel操作题(2)

(3)建立和编辑图表选择工作簿中需要编辑的表单,为其添加图表,其具体操作如下:步骤1选取“电脑城日出货统计表”的“配件”和“所占比例”两列,选择【插入一图表】命令,在弹出的“图表向导”对话框“标准类型”的“图表…

python的基本语术_一起学python-彻底掌握专业术语“变量”的概念

昨天分享了笨方法学习编程,今天就让我们通过实战来接触python,掌握专业术语“变量”的概念吧 python 中的变量的基本概念和初中代数的方程式X的概念是一样的,只是在计算机程序当中这个X不仅仅可以代表一个数字,还可以代表一段文字…

lamp自动部署工具_Linux一键配置工具ezhttp介绍

简介: ezhttp是一个Linux一键配置工具,采用bash脚本语言编写。支持自动配置LAMP,LNMP,LNAMP环境,以前提供各种其它的配置工具,如自动配置swap,配置iptables等。项目托管在github,地址为https://github.com/centos-bz/e…

Maven错误

1、软件包javax.servlet不存在 解决办法: 从tomcat lib目录下拷贝一个servlet-api.jar的包到“JDK\jre\lib\ext”目录下 凡是出现找不到包的情况,都可以将找到的包放到JDK\jre\lib\ext下,然后再编译就能够通过。 有方法是在pom.xml中引用s…

我对计算机感兴趣作文300字,我想对电脑游戏说作文300字

电脑游戏呀!电脑游戏呀!我知道你被人们创造出来,是想给人们带来快乐,可你也给人们带来了不少烦恼呀!你可知道,自从爸爸迷上了你,就像是变了一个人似的……每天清晨,天还蒙蒙亮&#…

git设置全局账号密码_jenkins2.222使用之二、总体设置

构建前提:由于构建的时候是基于maven、git(码云)以及jdk1.8来的,所以这些都需要和jenkins安装在同一台服务器上面。全局工具配置:1、配置jdk系统管理-全局工具配置-jdk,配置如下:jdk版本可以配置多个,构建的时候&#…

Mybatis源码之(TypeAliasRegistry)TypeAlias别名实现机制

原文链接:http://blog.csdn.net/qq924862077/article/details/52612589 ---------------------------------- 在Mybatis编程中我们经常会用到将某个bean作为参数类型parameterType或者结果返回值类型ResultType,所以很多时候我们需要把完成的Bean的包名…

Java中Synchronized的用法

2019独角兽企业重金招聘Python工程师标准>>> 《编程思想之多线程与多进程(1)——以操作系统的角度述说线程与进程》一文详细讲述了线程、进程的关系及在操作系统中的表现,这是多线程学习必须了解的基础。本文将接着讲一下Java线程同步中的一个重要的概念…