Flume监听文件夹中的文件变化,并把文件下沉到hdfs
1、采集目录到HDFS
采集需求:某服务器的某特定目录下,会不断产生新的文件,每当有新文件出现,就需要把文件采集到HDFS中去
根据需求,首先定义以下3大要素
采集源,即source——监控文件目录 : spooldir
下沉目标,即sink——HDFS文件系统 : hdfs sink
source和sink之间的传递通道——channel,可用file channel 也可以用内存channel
配置文件spooldir-hdfs.conf编写:
# Name the components on this agent a1.sources = r1 a1.sinks = k1 a1.channels = c1 # Describe/configure the source ##注意:不能往监控目中重复丢同名文件 ## 通过spooldir来监控文件内容的变化 a1.sources.r1.type = spooldir a1.sources.r1.spoolDir = /home/tuzq/software/flumedata a1.sources.r1.fileHeader = true # Describe the sink ## 表示下沉到hdfs,下面配置的类型不同,type下面的参数就不同 a1.sinks.k1.type = hdfs #sinks.k1只能连接一个channel,source可以配置多个 a1.sinks.k1.channel = c1 #下面的配置告诉用hdfs去写文件的时候写到什么位置,下面的表示不是写死的,而是动态变化的。表示输出的目录名称是可变的 a1.sinks.k1.hdfs.path = /flume/events/%y-%m-%d/%H%M/ #表示文件的前缀 a1.sinks.k1.hdfs.filePrefix = events- #表示到了需要触发的时间时,是否要更新文件夹,true:表示要更新 a1.sinks.k1.hdfs.round = true ##表示每隔1分钟改变一下文件夹 a1.sinks.k1.hdfs.roundValue = 1 ##切换文件的时候单位是分钟 a1.sinks.k1.hdfs.roundUnit = minute ##表示只要过了3秒钟,就切换生成一个新的文件 a1.sinks.k1.hdfs.rollInterval = 3 ##如果记录的文件大于20字节时切换一次 a1.sinks.k1.hdfs.rollSize = 20 ##当写了5个事件时触发 a1.sinks.k1.hdfs.rollCount = 5 ##收到了多少条消息往hdfs中追加内容 a1.sinks.k1.hdfs.batchSize = 1 #使用本地时间戳 a1.sinks.k1.hdfs.useLocalTimeStamp = true #生成的文件类型,默认是Sequencefile,可用DataStream,则为普通文本 a1.sinks.k1.hdfs.fileType = DataStream # 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
Channel参数解释:
capacity:默认该通道中最大的可以存储的event数量
trasactionCapacity:每次最大可以从source中拿到或者送到sink中的event数量
keep-alive:event添加到通道中或者移出的允许时间
执行命令
[root@hadoop1 apache-flume-1.6.0-bin]#cd /home/tuzq/software/apache-flume-1.6.0-bin [root@hadoop1 apache-flume-1.6.0-bin]#bin/flume-ng agent -c ./conf -f ./agentconf/spool-logger.conf -n a1 -Dflume.root.logger=INFO,console;
接着往/home/tuzq/software/flumedata文件夹中扔文件
[root@hadoop1 flumedata]# pwd /home/tuzq/software/flumedata [root@hadoop1 flumedata]# echo 111111111 >> 1.txt [root@hadoop1 flumedata]# ls 1.txt.COMPLETED test.log.COMPLETED [root@hadoop1 flumedata]# echo 22222222 >> 2.txt [root@hadoop1 flumedata]# echo 33333333 >> 3.txt [root@hadoop1 flumedata]# echo 44444444 >> 4.txt [root@hadoop1 flumedata]# ls 1.txt.COMPLETED 2.txt.COMPLETED 3.txt.COMPLETED 4.txt.COMPLETED test.log.COMPLETED [root@hadoop1 flumedata]#
扔了之后,现象是
1、/home/tuzq/software/flumedata文件文件夹下的文件倍加了一个一个后缀.COMPLETED,
2、在flume的监控位置,出现类似下图一样的文件:
3、到hdfs上查看文件:
[root@hadoop1 flumedata]# hdfs dfs -ls / Found 5 items drwxr-xr-x - root supergroup 0 2017-06-13 12:01 /40000 drwxr-xr-x - root supergroup 0 2017-06-13 23:43 /flume -rw-r--r-- 3 root supergroup 3719 2017-06-10 12:11 /kms.sh drwxrwxrwx - root supergroup 0 2017-06-10 22:06 /tmp drwxr-xr-x - root supergroup 0 2017-06-10 22:27 /user [root@hadoop1 flumedata]# hdfs dfs -ls /flume Found 2 items drwxr-xr-x - root supergroup 0 2017-06-13 23:43 /flume/events drwxr-xr-x - root supergroup 0 2017-06-13 22:01 /flume/tailout [root@hadoop1 flumedata]# hdfs dfs -ls /flume/events Found 1 items drwxr-xr-x - root supergroup 0 2017-06-13 23:47 /flume/events/17-06-13 [root@hadoop1 flumedata]# hdfs dfs -ls /flume/events/17-06-13 Found 3 items drwxr-xr-x - root supergroup 0 2017-06-13 23:43 /flume/events/17-06-13/2343 drwxr-xr-x - root supergroup 0 2017-06-13 23:46 /flume/events/17-06-13/2346 drwxr-xr-x - root supergroup 0 2017-06-13 23:47 /flume/events/17-06-13/2347 [root@hadoop1 flumedata]#
综上所述:说明通过flume已经把新增的文件下沉到了hdfs中。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
模拟使用Flume监听日志变化,并且把增量的日志文件写入到hdfs中
1.采集日志文件时一个很常见的现象 采集需求:比如业务系统使用log4j生成日志,日志内容不断增加,需要把追加到日志文件中的数据实时采集到hdfs中。 1.1.根据需求,首先定义一下3大要素: 采集源,即source—监控日志文件内容更新:exec ‘tail -F file’ 下沉目标,即sink—HDFS文件系统:hdfs sink Source和sink之间的传递通道—-channel,可用file channel也可以用 内存channel。 1.2.进入/home/tuzq/software/apache-flume-1.6.0-bin/agentconf,编写配置文件tail-hdfs.conf,文件内容如下: # Name the components on this agent a1.sources = r1 a1.sinks = k1 a1.channels = c1 # Describe/configure the source ## exec表示flume回去调用给的命令,然后从给的命令的结果中去拿数据 a1.sources.r1.type = exec ## 使...
- 下一篇
推荐系统——从原理到实践,还有福利赠送!
之前流水账似的介绍过一篇机器学习入门的文章,大致介绍了如何学习以及机器学习的入门方法并提供了一些博主自己整理的比较有用的资源。这篇就尽量以白话解释并介绍机器学习在推荐系统中的实践以及遇到的问题... 也许很多点在行家的眼里都是小菜一碟,但是对于刚刚接触机器学习来说,还有很多未知等待挑战。 所以读者可以把本篇当做是机器学习的玩具即可,如果文中有任何问题,还请不吝指教。 本篇将会以下面的步骤描述机器学习是如何在实践中应用的: 1 什么是推荐系统? 2 机器学习的作用 3 机器学习是如何使用的? 4 基于Spark MLlib的机器学习实践 5 推荐资源 翻到最后都是福利啊! 翻到最后都是福利啊! 翻到最后都是福利啊! 问题背景 为什么需要推荐 最开始互联网兴起的时候,是靠分类来组织知识的,最典型的就是hao123;后来随着搜索引擎的兴起,人们主动的获取知识成为流行趋势,例如百度、Google。基于搜索人们可以看到想看的电影,搜到想买的衣服。但是这并能满足所有人的需求,有时候无聊逛一些网站,希望网站能主动发现我的兴趣点,并且主动的给我我感兴趣的内容 ——这就是推荐。比如各种电商网站和视频网站...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8,CentOS7,CentOS6编译安装Redis5.0.7
- CentOS6,7,8上安装Nginx,支持https2.0的开启
- CentOS关闭SELinux安全模块
- 2048小游戏-低调大师作品
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Windows10,CentOS7,CentOS8安装MongoDB4.0.16
- 设置Eclipse缩进为4个空格,增强代码规范
- CentOS8安装MyCat,轻松搞定数据库的读写分离、垂直分库、水平分库
- Docker快速安装Oracle11G,搭建oracle11g学习环境
- SpringBoot2全家桶,快速入门学习开发网站教程