[hadoop]Flume的安装、配置 及其依赖Flume实时监控特定文件夹上传到HDFS

一、简单理解

作用

  1. Flume提供一种分布式的,可靠地,对大量数据的日志进行高效处理,聚集,移动的服务。flume只能在Unix的环境下运行。
  2. Flume基于流式框架,容错性强,也灵活简单。
  3. Flume,Kafka用来进行数据收集的,Spart,Storm用来实时处理数据,impala用来实时查询。

基本构成

  1. Source 用于采集数据,Source是产生数据流的地方,同时Source会将产生的数据流传输到Channel。
  2. Channel 用于桥接Sources和Sinks,类似于一个队列。
  3. Sink 从Channel收集数据,将数据写到目标源(可以是下一个Source,也可以是HDFS或者HBase)。
  4. Event 传输单元,Flume数据传输的基本单元,以事件的形式将数据从源头送至目的地。

二、Flume的安装及使用

本篇文章默认安装好了hadoop集群。前提是启动hdfs。

flume安装包的官方网址,直接下载即可。(apache-flume-1.9.0-bin.tar.gz)
http://flume.apache.org/download.html

本人是利用Xftp将压缩包传入虚拟机。

安装及配置

  • tar -zxvf [安装包名] 解压。
  • 配置profile(别忘了source)
#flume
export FLUME_HOME=/opt/flume/flume.bin##这里我是把压缩好的文件夹改了一下名字
export PATH=$PATH:$FLUME_HOME/bin

验证成功与否是 flume-ng version 出现版本号即可

  • 进入安装好的目录进入conf下,如果你的集群是HA(高可用)那么必须把core-site.xml 和 hdfs-site.xml放入此目录下。
  • 然后你会发现properties文件 那是例子。 你可以直接复制一个去改参数,也可以直接vi 复制下面代码。

写properties文件

vi fzy_hdfs (后面启动时要用到此文件名称)

a1.sources = r1
a1.sinks = k1
a1.channels = c1
# Describe/configure the source
a1.sources.r1.type = spooldir
#下面这一行就是需要监听本地的文件夹路径!!!!!!!
a1.sources.r1.spoolDir = /home/fzy_flume/fzy_test
a1.sources.r1.fileHeader = true
# Describe the sink
a1.sinks.k1.type = hdfs
#下面这一行就是你的hdfs的路径  它可以自动创建没有的目录
#注意master:后面的端口号是你在core-site.xml设置的fs.defaultFS
a1.sinks.k1.hdfs.path = hdfs://master:8020/flume/upload/%Y%m%d/%H
a1.sinks.k1.hdfs.filePrefix = upload-
a1.sinks.k1.hdfs.round = true
a1.sinks.k1.hdfs.roundValue = 1
a1.sinks.k1.hdfs.roundUnit = hour
a1.sinks.k1.hdfs.useLocalTimeStamp = true
a1.sinks.k1.hdfs.batchSize = 1000
a1.sinks.k1.hdfs.fileType = DataStream
a1.sinks.k1.hdfs.rollInterval = 600
a1.sinks.k1.hdfs.rollSize = 134217700
a1.sinks.k1.hdfs.rollCount = 0
a1.sinks.k1.hdfs.minBlockReplicas = 1
# Use a channel which buffers events in memory
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 1000
# Bind the source and sink to the channel
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1

上面代码里有三行注释必须要看。

启动flume

flume-ng agent --conf conf --conf-file fzy_hdfs --name a1

再强调一遍 fzy_hdfs是刚才一堆代码的文件名称

三、启动之后

  • 如果你的界面是xshell你需要再点连接,重新连接一个你的master(相当于一共打开了两个终端)
  • 去你配置文件里写的监控文件夹。随便创建文件写点东西,你就会发现第一个终端有变化。
  • hadoop dfs -ls / 查看一下有没有flume文件夹,里面是否有你刚刚写的新文件即可

上个图康一康吧~
在这里插入图片描述

原创文章 27 获赞 71 访问量 1万+

猜你喜欢

转载自blog.csdn.net/qq_44172732/article/details/106046223