千家信息网

Flume如何部署

发表于:2025-02-23 作者:千家信息网编辑
千家信息网最后更新 2025年02月23日,这篇文章主要讲解了"Flume如何部署",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Flume如何部署"吧!Flume简介Flume是Cloudera
千家信息网最后更新 2025年02月23日Flume如何部署

这篇文章主要讲解了"Flume如何部署",文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习"Flume如何部署"吧!

Flume简介

Flume是Cloudera提供的一个高可用、高可靠、分布式的海量日志采集、聚合和传输的系统。Flume支持在日志系统中定制各类数据发送方用于收集数据,同时Flume提供对数据的简单处理,并将数据处理结果写入各种数据接收方的能力。

Flume作为Cloudera开发的实时日志收集系统,受到了业界的认可与广泛应用。2010年11月Cloudera开源了Flume的第一个可用版本0.9.2,这个系列版本被统称为Flume-OG,重构后的版本统称为Flume-NG。改动的另一原因是将 Flume 纳入 Apache 旗下,Cloudera Flume改名为Apache Flume成为Apache核心项目。

2 Flume工作原理

Flume(水道)以agent为最小的独立运行单位。一个agent就是一个JVM。单agent由Source、Sink和Channel三大组件构成,如下图:

Flume的数据流由事件(Event)贯穿始终。事件是Flume的基本数据单位,它携带日志数据(字节数组形式)并且携带有头信息,这些Event由Agent外部的Source生成,当Source捕获事件后会进行特定的格式化,然后Source会把事件推入(单个或多个)Channel中。可以把Channel看作是一个缓冲区,它将保存事件直到Sink处理完该事件。Sink负责持久化日志或者把事件推向另一个Source。以下是Flume的一些核心概念:

组件功能
Agent使用JVM 运行Flume。每台机器运行一个agent,但是可以在一个agent中包含多个sources和sinks。
Client生产数据,运行在一个独立的线程。
Source从Client收集数据,传递给Channel。
Sink从Channel收集数据,运行在一个独立线程。
Channel连接 sources 和 sinks ,这个有点像一个队列。
Events可以是日志记录、 avro 对象等。

3 Flume部署

 hadoop用户下1) 下载wgte http://archive-primary.cloudera.com/cdh6/cdh/5/flume-ng-1.6.0-cdh6.7.0.tar.gzcdh6.7对应文档:http://archive-primary.cloudera.com/cdh6/cdh/5/flume-ng-1.6.0-cdh6.7.0/2) 解压到~/app,检查用户和用户组tar -xzvf flume-ng-1.6.0-cdh6.7.0.tar.gz -C ~/app/3) 添加到系统环境变量 vim ~/.bash_profileexport FLUME_HOME=/home/hadoop/app/apache-flume-1.6.0-cdh6.7.0-binexport PATH=$FLUME_HOME/bin:$PATHsource ~/.bash_profile4) 配置flume的jdk路径$FLUME_HOME/conf/flume-env.shcp flume-env.sh.template flume-env.shexport JAVA_HOME=/usr/java/jdk1.8.0_45

4 Flume监听端口

配置flume加载的配置文件:

#从指定的网络端口上采集日志到控制台输出a1.sources = r1a1.sinks = k1a1.channels = c1# Describe/configure the sourcea1.sources.r1.type = netcata1.sources.r1.bind = 0.0.0.0a1.sources.r1.port = 44444# Describe the sinka1.sinks.k1.type = logger# Use a channel which buffers events in memorya1.channels.c1.type = memory# Bind the source and sink to the channela1.sources.r1.channels = c1a1.sinks.k1.channel = c1

5 Flume启动

启动flume:

./flume-ng agent \--name a1 \--conf $FLUME_HOME/conf \--conf-file /home/hadoop/script/flume/telnet-flume.conf \-Dflume.root.logger=INFO,console \-Dflume.monitoring.type=http \-Dflume.monitoring.port=34343

-Dflume.root.logger=INFO,console -- 日志级别

-Dflume.monitoring.type=http -- http输出日志

-Dflume.monitoring.port=34343 -- http 端口

未安装telnet,先安装telnet命令

[root@locahost ~]#yum  install -y telnet-server [root@locahost ~]#yum install -y telnet由于telnet服务也是由xinetd守护的,所以安装完telnet-server,要启动telnet服务就必须重新启动xinetd [root@locahost ~]#service xinetd restart

结果测试:

[root@hadoop001 ~]# telnet localhost 44444Trying ::1...Connected to localhost.Escape character is '^]'.asdOKasdOKasdOKasdOK

控制台日志输出:

(LoggerSink.java:94)] Event: 数据流事件 有,由【headers】【body】构成,分别为字节数组+内容

2018-08-09 19:20:21,272 (conf-file-poller-0) [INFO - org.mortbay.log.Slf4jLog.info(Slf4jLog.java:67)] Logging to org.slf4j.impl.Log4jLoggerAdapter(org.mortbay.log) via org.mortbay.log.Slf4jLog2018-08-09 19:20:21,338 (conf-file-poller-0) [INFO - org.mortbay.log.Slf4jLog.info(Slf4jLog.java:67)] jetty-6.1.26.cloudera.42018-08-09 19:20:21,391 (conf-file-poller-0) [INFO - org.mortbay.log.Slf4jLog.info(Slf4jLog.java:67)] Started SelectChannelConnector@0.0.0.0:343432018-08-09 19:29:15,336 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 61 73 64 0D   asd. }2018-08-09 19:29:15,337 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 61 73 64 0D   asd. }2018-08-09 19:29:15,337 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 61 73 64 0D   asd. }2018-08-09 19:29:15,338 (SinkRunner-PollingRunner-DefaultSinkProcessor) [INFO - org.apache.flume.sink.LoggerSink.process(LoggerSink.java:94)] Event: { headers:{} body: 61 73 64 0D   asd. }


http输出:

7 Flume常用的Type

Source:
名称含义注意点
avroavro协议的数据源
execunix命令可以命令监控文件 tail -F
spooldir监控一个文件夹不能含有子文件夹,不监控windows文件夹
处理完文件不能再写数据到文件
文件名不能冲突
TAILDIR既可以监控文件也可以监控文件夹支持断点续传功能,重点使用这个
netcat监听某个端口
kafka监控卡夫卡数据
sink:
名称含义注意点
kafka写到kafka中
HDFS将数据写到HDFS中
logger输出到控制台
avroavro协议配合avro source使用
channel:
名称含义注意点
memory存在内存中
kafka将数据存到kafka中
file存在本地磁盘文件中

感谢各位的阅读,以上就是"Flume如何部署"的内容了,经过本文的学习后,相信大家对Flume如何部署这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是,小编将为大家推送更多相关知识点的文章,欢迎关注!

数据 文件 日志 事件 监控 输出 运行 文件夹 端口 系统 处理 内容 名称 含义 命令 控制台 版本 用户 学习 控制 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 现代通信计算机网络技术 sqlite数据库日期类型 外包到银行软件开发好不好 5g网络技术服务招标 网络安全与应用交付市场 数据库错误918 海淀区综合软件开发大概费用 学计算计软件开发好学吗 谷歌高级软件开发工程师面试题 上海日腾 软件开发 女生学网络安全难不难 广州软件开发聚顶科技专业 合肥电信服务器被攻击 2021网络安全比赛 厂区监控服务器怎么搭建 医保局网络安全自查工作总结 湖南常见软件开发价格多少 网络安全教育法规 嘉定区国际软件开发活动方案 软件开发部总监职责与权限 杭州对对碰网络技术怎么样 网络安全手抄报黑白画 华为服务器芯片价格 hp服务器代码查询 政府部门面对网络安全的问题 漫威超级战争无法重新连接服务器 软件开发团队事迹报告 谷歌高级软件开发工程师面试题 王牌战争安装服务器教程 网络安全有哪些方面的工作
0