代码驿站

  • 一、简单理解
  • 作用
  • 基本构成
  • 二、Flume的安装及使用
  • 安装及配置
  • 写properties文件
  • 启动flume
  • 三、启动之后


一、简单理解

作用

  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)

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

安装及配置



#flume
export FLUME_HOME=/opt/flume/flume.bin##这里我是把压缩好的文件夹改了一下名字
export PATH=$PATH:$FLUME_HOME/bin

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



写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文件夹,里面是否有你刚刚写的新文件即可

上个图康一康吧~

Flume不能将数据写入到HBase flume采集数据到hdfs_hdfs