flume的三大核心组件有哪些?
一、flume的三大核心组件
1. Source
Source: 数据源:通过source组件可以指定让Flume读取哪里的数据,然后将数据传递给后面的 channel
Flume内置支持读取很多种数据源,基于文件、基于目录、基于TCP\UDP端口、基于HTTP、Kafka的等等。当然了,它也是支持自定义的。
Exec Source:实现文件监控,可以实时监控文件中的新增内容,类似于linux中的tail -f 效果。
NetCat TCP/UDP Source: 采集指定端口(tcp、udp)的数据,可以读取流经端口的每一行数据
Spooling Directory Source:采集文件夹里新增的文件
Kafka Source:从Kafka消息队列中采集数据
2. Channel
Channel: 接受Source发出的数据,可以把channel理解为一个临时存储数据的管道。Channel的类型有很多:内存、文件,内存+文件、JDBC等
Memory Channel:使用内存作为数据的存储
优点是效率高,因为就不涉及磁盘IO
缺点有两个
1:可能会丢数据,如果Flume的agent挂了,那么channel中的数据就丢失了。
2:内存是有限的,会存在内存不够用的情况
File Channel:使用文件来作为数据的存储
优点是数据不会丢失 缺点是效率相对内存来说会有点慢,但是这个慢并没有我们想象中的那么慢,所以这个也是比较常用的一种channel。
Spillable Memory Channel:使用内存和文件作为数据存储,即先把数据存到内存中,如果内存中数据达到阈值再flush到文件中
优点:解决了内存不够用的问题。
缺点:还是存在数据丢失的风险
3. Sink
Sink:从Channel中读取数据并存储到指定目的地
Sink的表现形式有很多:打印到控制台、HDFS、Kafka等,
常用的sink组件有:
Logger Sink:将数据作为日志处理,可以选择打印到控制台或者写到文件中,这个主要在测试的时候使用
HDFS Sink:将数据传输到HDFS中,这个是比较常见的,主要针对离线计算的场景
Kafka Sink:将数据发送到kafka消息队列中,这个也是比较常见的,主要针对实时计算场景,数据不落盘,实时传输,最后使用实时计算框架直接处理。
延伸阅读:
二、Flume 基本思想及特点
Flume 采用了插拔式软件架构,所有组件均是可插拔的,用户可以根据自己的需求定制每个组件。Flume 本质上我理解是一个中间件。
Flume 主要具有以下几个特点:
1. 良好的扩展性;Flume 的架构是完全分布式的,没有任何中心化组件,使得其非常容易扩展。
2. 高度定制化;采用插拔式架构,各组件插拔式配置,用户可以很容易的根据需求自由定义。
3. 良好的可靠性;Flume 内置了事务支持,能保证发送的每条数据能够被下一跳收到而不丢失。
4. 可恢复性;依赖于其核心组件channel,选择缓存类型为FileChannel,事件可持久化到本地文件系统中。
以上就是关于Flume的内容希望对大家有帮助。
猜你喜欢LIKE
相关推荐HOT
更多>>“指向二维数组内元素的指针”和“解引用数组的指针”有什么区别?
一、“指向二维数组内元素的指针”和“解引用数组的指针”的区别C语言中的二维数组是按行排列的,也就是先存放 a[0] 行,再存放 a[1] 行,最后...详情>>
2023-10-11 22:20:32机器学习、深度学习和强化学习的关系和区别是什么?
一、机器学习、深度学习和强化学习的关系和区别机器学习Maching Learning,是实现人工智能的一种手段,也是目前被认为比较有效的实现人工智能的...详情>>
2023-10-11 20:53:27递推和递归的区别是什么?
一、递推和递归的区别1、从程序上看,递归表现为自己调用自己,递推则没有这样的形式。2、递归是从问题的最终目标出发,逐渐将复杂问题化为简单...详情>>
2023-10-11 20:24:02id选择器和类选择器的区别?
一、id选择器和类选择器的区别1、一个HTML标签只能应用于一个ID选择器。2、一个HTML标签可以应用多个class选择器。3、ID选择器是以“#”开头,...详情>>
2023-10-11 18:37:41热门推荐
易语言中的判断和如果命令有什么区别?
沸“指向二维数组内元素的指针”和“解引用数组的指针”有什么区别?
热网站数据库(oracle、mysql)以及各种编程语言(php、python、perl、lisp)的区别?
热不同环境和语言的正则表达式在使用上有什么区别?
新机器学习、深度学习和强化学习的关系和区别是什么?
递推和递归的区别是什么?
ftp主动模式和被动模式的区别?
group和team的区别?
id选择器和类选择器的区别?
java和c和HTML有什么区别?
Java与JavaScript有什么区别?
Java中的notify和notifyAll有哪些区别?
Java中抽象类和接口有哪些区别?
java微服务和分布式的区别?