写点什么

流处理组件 Flume 使用攻略

作者:编程江湖
  • 2022 年 1 月 18 日
  • 本文字数:2037 字

    阅读完需:约 7 分钟

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= eventDirmyagent.channels= memoryChannelmyagent.sinks= eventHDFS

myagent.sources.eventDir.type= spooldirmyagent.sources.eventDir.spoolDir= /home/cloudera/eventsmyagent.sources.eventDir.fileHeader= true

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

myagent.sinks.eventHDFS.type= hdfsmyagent.sinks.eventHDFS.hdfs.fileType= DataStreammyagent.sinks.eventHDFS.hdfs.path= /temp/eventsmyagent.sinks.eventHDFS.hdfs.writeFormat= Textmyagent.sinks.eventHDFS.hdfs.batchSize=10000

myagent.sources.eventDir.channels= memoryChannelmyagent.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= eventDirmyagent.channels= memoryChannelmyagent.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文件写入格式Textmyagent.sinks.eventHDFS.hdfs.batchSize=10000 #设置一次性写入事件数10000
#设置channel = memoryChannel 桥接source和sinkmyagent.sources.eventDir.channels= memoryChannelmyagent.sinks.eventHDFS.channel= memoryChannel
复制代码

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

Source 监听可以指定一个网络端口,即只要应用程序向这个端口里面数据,这个 source 组件就可以获取到信息然后写入到 channle。

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

myagent.sources.eventNet.type = netcatmyagent.sources.eventNet.bind= 192.168.***.61   myagent.sources.eventNet.port = 84447           #端口
复制代码

使用 telnet 发送数据:

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


用户头像

编程江湖

关注

IT技术分享 2021.11.23 加入

还未添加个人简介

评论

发布
暂无评论
流处理组件Flume使用攻略