摘要: 1、采集目录到HDFS 采集需求:某服务器的某特定目录下,会不断产生新的文件,每当有新文件出现,就需要把文件采集到HDFS中去 根据需求,首先定义以下3大要素 采集源,即source——监控文件目录 : spooldir 下沉目标,即sink——HDFS文件系统 : hdfs sink source和sink之间的传递通道——channel,可用file chann
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中。
分享到:
相关推荐
该压缩包下commons-lang3-3.3.2.jar,spark-streaming-flume_2.10-1.6.0.jar,scala-compiler-2.10.5.jar用于实现Flume监控文件夹中的内容变化,然后Spark Streaming对数据进行分析。
05_Flume中配置HDFS文件生成大小及时间分区 06_Flume中配置Spooling Dir的使用 07_Flume中配置Spooling Dir的文件过滤 08_Flume中配置扇入架构的介绍 09_Flume中配置扇入架构的测试实现 10_Flume中配置扇出...
解决flume上传文件至HDFS报错问题。需要手动将hadoop相关jar包导入flume的lib目录下。
利用Flume将MySQL表数据准实时抽取到HDFS、MySQL、Kafka用到的jar包
深入介绍Flume众多更加有用的组件的细节信息,包括用于即时数据记录持久化的重要的文件通道、用于缓存并将数据写到HDFS中的HDFS接收器,以及Hadoop分布式文件系统。对于Flume各个架构组件(源、通道、接收器、通道...
利用java实现了flume的自定义拦截器,实现过滤数据
flume所需要的hdfs包.zip, flume所需要的hdfs包.zip, flume所需要的hdfs包.zip
Flume-ng在windows环境搭建并测试+log4j日志通过Flume输出到HDFS 11111
flume配置文件,文件配了说明,可以拿下来改一改就用。 可以获取端口数据监听或者文件、文件夹内容监听,实时写入hdfs、mysql或者你需要的路径。
flume1.9.0+hdfs3.2.2相关jar
flume1.7 elasticsearch5.2.2
自己研究大数据多年,写的一个日志数据采集方案笔记,可快速熟悉Flume,Kafka,Hdfs的操作使用,以及相互的操作接口。
Flume采集Rabbitmq数据同步到HDFS
flume-ng-hdfs-sink-1.7.0.jar,这个包里包含了flume和HDFS集成的所有类
lnmp(linux+nginx+mysql+php)安装配置及分布式系统大数据处理hadoop集群中的flume+Kafka+Storm+HDFS等实时系统搭分享
通过修改flume源码实现flume向两个HA hadoop集群分发数据。
通过修改flume源码实现flume向两个HA hadoop集群分发数据。
07.flume采集配置案例--采集目录中的新文件到HDFS中--配置详解.mp4
commons-io-2.4.jar,hadoop-auth-2.7.3.jar,hadoop-common-2.7.3.jar,hadoop-hdfs-2.7.3.jar,htrace-core-3.1.0-incubating.jar五个包是flume1.7连hdfs所需要的外部包,这是其中一个,其他四个看其他的下载。
在windows端使用flume1.7同步上传数据到hdfs的说明