关于flume:流处理组件Flume使用攻略

43次阅读

共计 3023 个字符,预计需要花费 8 分钟才能阅读完成。

Flume 概述

Flume 是一种日志采集工具。是一种分布式,牢靠且可用的服务,可用于无效的手机,聚合和挪动大量日志数据,它具备基于流数据的简略灵便架构,它具备可靠性机制和许多故障转移和复原机制,具备弱小的容错能力;它应用简略的可拓展数据模型,容许在线剖析应用程序。

Flume 是 Hadoop 生态圈中的一个组件。次要利用于实时数据的流解决,比方一旦有某事件触发 (如本地交易引起的数据改变) 能够将实时的日志数据发向 Hadoop 文件系统 HDFS 中。

Flume 能够将数量宏大的数据从各项数据资源中集中起来存储的工具 / 服务,或者集中机制。所以它还有较强的缓存作用。

Flume 具备较高的容错性。例如当收集数据的速度超过将写入数据的时候,即超过了零碎的写入数据能力的时候,Flume 会在数据生产者和数据收容器间做出调整,保障其可能在两者之间提供可推送的安稳数据。

Flume 反对多路径流量,多管道接入流量,多管道接出流量。大数据培训例如 Flume 的数据收回源及目的地能够是不同类别的比方社交媒体, 关系型数据库 Hbase,Hdfs 前端控制台也能够是其余流工具如 spark stream,Kafka,甚至其它的 Flume。

Flume 组件介绍

流程图:

用一个故事了解:有一个池子,它一头进水,另一头出水,进水口能够配置各种管子,出水口也能够配置各种管子,能够有多个进水口、多个出水口。水术语称为 Event,进水口术语称为 Source、出水口术语成为 Sink、池子术语成为 Channel,Source+Channel+Sink,术语称为 Agent。如果有须要,还能够把多个 Agent 连起来。

Flume 环境搭建

官网下载地址:http://flume.apache.org/downl…

解压:tar zxf apache-flume-1.8.0-bin.tar.gz

批改配置文件:vim apache-flume-1.8.0-bin/conf/myagent.conf

文件名随便

文件里增加如下配置(Sink 为 HDFS):

myagent.sources= eventDir
myagent.channels= memoryChannel
myagent.sinks= eventHDFS

myagent.sources.eventDir.type= spooldir
myagent.sources.eventDir.spoolDir= /home/cloudera/events
myagent.sources.eventDir.fileHeader= true

myagent.channels.memoryChannel.type= memory
myagent.channels.memoryChannel.capacity= 10000
myagent.channels.memoryChannel.transactioncapacity= 1000000

myagent.sinks.eventHDFS.type= hdfs
myagent.sinks.eventHDFS.hdfs.fileType= DataStream
myagent.sinks.eventHDFS.hdfs.path= /temp/events
myagent.sinks.eventHDFS.hdfs.writeFormat= Text
myagent.sinks.eventHDFS.hdfs.batchSize=10000

myagent.sources.eventDir.channels= memoryChannel
myagent.sinks.eventHDFS.channel= memoryChannel

运行

# 启动 hadoop

./sbin/start-dfs.sh

# 启动 Flume

./bin/flume-ng agent -n spooldir -c conf -f conf/spooldir.conf

参数阐明:

-n 指定 agent 名称(与配置文件中代理的名字雷同)
-c 指定 flume 中配置文件的目录
-f 指定配置文件
-Dflume.root.logger=DEBUG,console 设置日志等级

最初把数据放在 /home/cloudera/events 外面;source 组件就能够获取到数据。

附配置文件阐明:

myagent.sources= eventDir
myagent.channels= memoryChannel
myagent.sinks= eventHDFS
#这里给 agent (名字是 myagent, 能够是任起的) 中 sources、sinks、channels 别离起名 --eventDir,memoryChannel 以及 eventHDFS。这样当前就能够援用这些名字在配置文件或命令行中形容各种操作或关系

myagent.sources.eventDir.type= spooldir     #指定 source 的类型
myagent.sources.eventDir.spoolDir= /home/cloudera/events    #Source 用来监听一个指定的目录 /user/me/events

myagent.sources.eventDir.fileHeader= true   

myagent.channels.memoryChannel.type= memory     #设置 channel 为内存型
myagent.channels.memoryChannel.capacity= 10000  #设置内存管道中存储事件数目下限
myagent.channels.memoryChannel.transactioncapacity= 1000000 #设置内存管道中传送事件数目下限

myagent.sinks.eventHDFS.type= hdfs      #设置 sink 的传输类型
myagent.sinks.eventHDFS.hdfs.fileType= DataStream   #设置 sink 接管的文件类型
myagent.sinks.eventHDFS.hdfs.path= /temp/events     #设置 sink 接管的文件目的地即 HDFS 下的门路
myagent.sinks.eventHDFS.hdfs.writeFormat= Text      #设置 sink 文件写入格局 Text
myagent.sinks.eventHDFS.hdfs.batchSize=10000        #设置一次性写入事件数 10000

#设置 channel = memoryChannel 桥接 source 和 sink
myagent.sources.eventDir.channels= memoryChannel
myagent.sinks.eventHDFS.channel= memoryChannel

拓展(souce 为监听网络端口)

Source 监听能够指定一个网络端口,即只有应用程序向这个端口外面数据,这个 source 组件就能够获取到信息而后写入到 channle。

配置文件 Sink 的配置批改为:

myagent.sources.eventNet.type = netcat
myagent.sources.eventNet.bind= 192.168.***.61   
myagent.sources.eventNet.port = 84447           #端口

应用 telnet 发送数据:

telnet  192.168.***.61   84447  hello world!(windows 中运行的)

正文完
 0