学习flume的时候可能会想到明明有MySQL为什么还要用flume,下面来解释一下两者区别:

Flume就是传输数据

Java 后台处理复杂的业务逻辑,大数据是处理海量数据,所以不可能把大数据放在后台服务器,不然会拖垮整个后台服务器。(服务器崩了,浏览器会崩)
所以大数据一般都是远程传过来的。

比如购买商品时的数据,从另外一台服务器读取过来订单,支付记录会落入mysql里面,这种用户购买商品时浏览的日志落入磁盘中,不会写入mysql 分析的。无论是爬虫过来的,还是Java后台日志数据都是在本地文件夹里面。

flume可以监听端口或者文件夹,对传输到此处的数据进行打印输出或上传hdfs等操作,flume是Cloudera提供的一个基于流式系统高可用的、高可靠的分布式海量日志采集、聚合和传输系统

**Java后台数据实时产生,**动态追加的,想传到Hadoop 可以通过put命令上传,但是这样实时性太差,太慢了,为了实时的做到这个事情就要用到flume。

Flume既可以监控本地文件夹数据,也可以接受网络端口的数据(变化的数据),然后传给hdfs处理。

大概了解为什么学习flume之后下面开始学习flume具体的功能:

flume 读取集群外数据到集群 flume读取mysql_官网

Flume 不仅可以读取各种本地磁盘的数据还可以读取网络端口的数据,然后它会把这些数据传输到hdfs或者Kafka上面。

flume 读取集群外数据到集群 flume读取mysql_Flume学习 _02

Flume 就是由很多Agent 组成的,Agent是有三样东西组成那就是:
source:读取资源
channel :缓冲区
sink:输出数据
为了避免读出数据和输出数据速度不一样导致数据丢失,才有了一个暂时存放数据的channel。

想要学习flume必须要学会看flume官网

Flume官网

flume 读取集群外数据到集群 flume读取mysql_Flume学习 _03


真的不要觉得我在讲废话,因为后期做具体练习的时候需要用到官网里面的数据,不然没法理解代码!!

flume 读取集群外数据到集群 flume读取mysql_官网_04

(其实是会跟centOS 不兼容)

点击1.7.0版本:

flume 读取集群外数据到集群 flume读取mysql_个人学习总结_05

flume官网支持直接搜索资源,点击ctrl +f 搜索
我们刚说了flume可以读出网络端口的数据,那么我们来看一下倒底怎么操作的:(netcat Source)

flume 读取集群外数据到集群 flume读取mysql_官网_06

读出本地文件是:exec Source

flume 读取集群外数据到集群 flume读取mysql_官网_07

这就是对flume的初步了解,想真正了解flume 那么就要做相应的练习才能来理解。