Flume 实战练习
前期准备
了解Flume 架构及核心组件
Flume 架构及核心组件

Source : 收集(指定数据源从哪里获取)
Channel : 聚集
Sink : 输出(把数据写到哪里去)
学习使用 Flume
通过一个简单的小例子学习使用 Flume
使用 Flume 的关键就是写配置文件
配置文件的构成:
A) 配置 Source
B) 配置 Channel
C) 配置 Sink
D) 把以上三个组件串起来
A simple example
1 |
# Name the components on this agent |
实战一
需求
需求:从指定网络端口采集数据输出到控制台
写配置文件
在 /abs/app/apache-flume-1.6.0-cdh5.7.0-bin/conf 目录中新建 example.conf 如下:
1 |
# Name the components on this agent |
启动 agent
Flume 官网启动 agent 的命令:
1 |
$ bin/flume-ng agent -n $agent_name -c conf -f conf/flume-conf.properties.template |
agent options:
1 |
--name,-n <name> the name of this agent (required) |
实际用的启动 agent 的命令:
1 |
flume-ng agent -n a1 -c $FLUME_HOME $FLUME_HOME/conf/example.conf -Dflume.root.logger=INFO,console |
// Dflume.root.logger=INFO,console 为将输出结果显示到控制台
启动失败
1 |
Info: Including Hive libraries found via () for Hive access |
上网查了一下,别人是 -c 的路径指定错误,我的也错了。
-c 后面跟的是 Flume 的 conf 目录
所以正确的启动命令为:
1 |
flume-ng agent -n a1 -c $FLUME_HOME/conf -f $FLUME_HOME/conf/example.conf -Dflume.root.logger=INFO,console |
正常启动后可以看到如下:

可以看到 Sink 和 Source 都启动了
绑定的主机名为 hadoop 的 IP 和绑定的端口号都有显示
验证
1 |
[root@hadoop ~]# telnet hadoop 44444 |
显示找不到 telnet ,用 yum install telnet 安装telnet
telnet 进入 hadoop 的 44444 端口进行输入单词按 Enter

agent 的那一端显示如下:

从图中可以看到如下:
1 |
Event: { headers:{} body: 73 70 61 72 6B 0D spark. }
|
Event 是 Flume 数据传输的基本单元
Event = 可选的 header + byte array
以上实现了从指定网络端口采集数据输出到控制台的需求。
实战二
需求
需求:监控一个文件实时采集新增的数据输出到控制台
根据需求可以采用以下方案实现:
Agent 选型: exec source + memory channel + logger sink
写配置文件
大专栏 Flume 实战练习在 /abs/data 目录新建 data.log
1 |
touch data.log |
在 /abs/app/apache-flume-1.6.0-cdh5.7.0-bin/conf 目录中新建 exec-memory-logger.conf 如下:
1 |
# exec-memory-logger.conf: A realtime single-node Flume configuration |
启动 agent
Flume 启动 agent 的命令:
1 |
flume-ng agent -n a1 -c $FLUME_HOME/conf -f $FLUME_HOME/conf/exec-memory-logger.conf -Dflume.root.logger=INFO,console |
// Dflume.root.logger=INFO,console 为将输出结果显示到控制台
正常启动后可以看到如下:

可以看到 Source 、 Channel 和 Sink 的类型和启动类型以及 Source 要执行的命令
验证
在 /abs/data 目录输入 echo hello >> data.log

agent 的那一端显示如下:

以上实现了监控一个文件实时采集新增的数据输出到控制台的需求。
拓展
参照 Flume 用户指南
如果用 Flume 采集数据做离线处理,可以使用 HDFS Sink
如果用 Flume 采集数据做实时处理,可以使用 Kafka Sink
这里只提供一个拓展,根据具体的需求使用。
实战三
需求
需求:将 A 服务器上的日志实时采集到 B 服务器
根据需求可以采用以下方案实现:
Agent A 选型: exec source + memory channel + avro sink
Agent B 选型: avro source + memory channel + logger sink
写配置文件
在 /abs/app/apache-flume-1.6.0-cdh5.7.0-bin/conf 目录中新建如下配置文件:
exec-memory-avro.conf:
1 |
# exec-memory-avro.conf: A realtime Flume configuration |
avro-memory-logger.conf:
1 |
# avro-memory-logger.conf: A realtime Flume configuration |
启动 agent
两个 Agent ,先启动 Agent A ,再启动 Agent B
先启动 avro-memory-logger:
1 |
flume-ng agent -n avro-memory-logger -c $FLUME_HOME/conf -f $FLUME_HOME/conf/avro-memory-logger.conf -Dflume.root.logger=INFO,console |
再启动 exec-memory-avro:
1 |
flume-ng agent -n exec-memory-avro -c $FLUME_HOME/conf -f $FLUME_HOME/conf/exec-memory-avro.conf -Dflume.root.logger=INFO,console |
验证
在 /abs/data/ 目录中输入以下命令:
1 |
echo hello spark >> data.log |
Agent avro-memory-logger 显示如下:

以上实现了将 A 服务器上的日志实时采集到 B 服务器的需求。
这里采用的是一个服务器开三个窗口,有条件的可以尝试用两台服务器进行这个实战练习
Flume 实战练习的更多相关文章
- Flume实战案例运维篇
Flume实战案例运维篇 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.Flume概述 1>.什么是Flume Flume是一个分布式.可靠.高可用的海量日志聚合系统,支 ...
- Flume 实战(1) -- 初体验
前言: Flume-ng是数据收集/聚合/传输的组件, Flume-ng抛弃了Flume OG原本繁重的zookeeper和Master, Collector, 其整体的架构更加的简洁和明了. 其基础 ...
- Flume 实战(2)--Flume-ng-sdk源码分析
具体参考: 官方用户手册和开发指南 http://flume.apache.org/FlumeDeveloperGuide.html *) 定位和简单例子 1). Flume-ng-sdk是用于编写往 ...
- 5.flume实战(二)
需求:监控一个文件实时采集新增的数据并输出到控制台 简单理解就是:监控一个文件,只要这个文件有新的内容追加,就将它输出到控制台. agent技术选型:exec source + memory chan ...
- 4.flume实战(一)
需求:从指定网络端口采集数据输出到控制台 使用flume的关键就是写配置文件 a)配置source b)配置channel c)配置sink d)把以上三个组件串起来 我们看一下官网给的配置文件 # ...
- Flume 实战,将多台机器日志直接收集到 Kafka
目前我们使用的一个 b 端软件的报错日志分散在集群各处,现在想把它收集到一个地方然后统一丢进 Kafka 提供给下游业务进行消费. 我想到了 flume,之前让同事搭建的这次自己想多了解一些细节于是就 ...
- 6.flume实战(三)※
需求:将A服务器上的日志实时采集到B服务器上面去 大致原理: 技术选型: exec source + memory channel + avro sink avro source + memory c ...
- Spark Streaming从Flume Poll数据案例实战和内幕源码解密
本节课分成二部分讲解: 一.Spark Streaming on Polling from Flume实战 二.Spark Streaming on Polling from Flume源码 第一部分 ...
- Flume+Sqoop+Azkaban笔记
大纲(辅助系统) 离线辅助系统 数据接入 Flume介绍 Flume组件 Flume实战案例 任务调度 调度器基础 市面上调度工具 Oozie的使用 Oozie的流程定义详解 数据导出 sqoop基础 ...
随机推荐
- Python 进行 OCR识别 -- pytesseract库
pip install pytesseract 报错:tesseract is not installed or it's not in your path 下载安装 Tesseract-OCR ht ...
- CSS公共样式模版
CSS文件命名为global.css,一般此CSS文件是用于装全站主要框架CSS样式代码和初始化的CSS样式. 通常会放初始化CSS代码如下: body, div, ul, ol, dl, dt, d ...
- Python 爬虫 爬取图片入门
爬虫 网络爬虫(又被称为网页蜘蛛,网络机器人,在FOAF社区中间,更经常的称为网页追逐者),是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本. 用户看到的网页实质是由 HTML 代码构成的,爬 ...
- 分组统计SQL(mysql)
<select id="orderProductStatistics" resultMap="ProductStatisticsVOMap"> SE ...
- 17.3.15---关于GPIO学习笔记
STM32的IO口可以由软件配置成为8种模式: 1--输入浮空 2--输入上拉 3--输入下拉 4--模拟输入 5--开漏输出 6--推挽输出 7--推挽复用 8--开漏复用 STM32的每个IO口都 ...
- Linux 进程信号量
#include<stdlib.h> #include<stdio.h> #include<sys/types.h> #include<sys/ipc.h&g ...
- 前端Js复习-前后台的搭建-结合Bootstrap和JQuery搭建vue项目
流式布局思想 """ 页面的尺寸改变动态改变页面布局,或是通过父集标签控制多个子标签,这种布局思想就称之为 - 流式布局思想 1) 将标签宽高设置成 百分比,就可以随屏幕 ...
- vs strcore.cpp(156) 内存泄漏
在一个静态函数的线程回调中,一个cstring的对象没释放. 遇到这种问题: 1.查看所有的指针对象,有没有合适的回收 2.查看代码的malloc,看看有没有free 3.一点一点注释代码,定位位置
- 108)PHP分页显示
一个代码页的链接:https://www.cnblogs.com/mmykdbc/p/6688460.html 首先一个简单的代码展示: 目录关系: 数据库表格展示: 结果展示: 然后 代码展示 ...
- 用logstash 作数据的聚合统计
用logstash 作数据的聚合统计 以spark-streaming 处理消费数据,统计日志经spark sql存储在mysql中 日志写入方式为append val wordsDataFrame ...