Flume面试题
2021/7/20 23:06:08
本文主要是介绍Flume面试题,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
1 Flum的应用场景?
线上数据存储在磁盘或通过socket传输给另外一个系统,很难推动线上应用和服务去修改接口,向kafka里面写数据,Flume是主要用来线上数据的传输。
2 Flum丢包问题
单机upd的flume source配置,100M/s数据量,10w qps flume就开始大量丢包,因此,很多公司在搭建自己的系统时,直接抛弃了flume,自己研发传输系统,但也会参考source-channel-sink.
一些公司在Flume工作过程中,会对业务日志进行监控,如果数据丢失在1%左右是没有问题的,当数据丢失在5%就会出现问题。
Flume:Flume是管道流方式,提供了很多默认实现,让用户通过参数部署,及扩展API
KafKa:Kafka是一个可持久化的分布式消息队列
Kafka是一个通用的系统,它允许多个生产者和多个消费者共享多个主题,相比之下Flum是一种专用的工具,被用来往HDFS,HBase发送数据。它对HDFS有特殊的优化,并且集成了Hadoop的安全性。如果数据被多个系统消费,使用Kafka,如果数据设计给Hadoop使用,则使用Flume。
Flume可以使用拦截器处理数据。这些对数据屏蔽或过量是很有用的。Kafka需要外部的流处理才能做到。
Kafka和flume是高可靠系统,可以通过配置实现数据的0丢失。但是flume不支持副本,一但某个Flume agent节点挂掉之后,即使使用了高可靠的管道传输,这些数据也会丢失,直到你恢复你的磁盘。如果需要可靠的管道传输,可以使用kafka.
4、数据怎么采集到Kafka,实现方式?
使用Flume Kafka插件,插件自定义了flume和sink,数据从channel取出,通过kafka的Produce写入kafka中。
5、flume管道内存,flume宕机了数据怎么解决?
1)Flume的channel分为很多种,可以将数据写入到文件。
2)防止非首个agent宕机的方法数可以做集群或者主备。
尚硅谷
4.1你是如何实现Flum数据传输的监控的
使用第三方框架Ganglia实时监控Flume.
4.2 Flume的Source,Sink,Channel的作用?你们Source是什么类型?
1作用
1)Source可以用来收集数据,可以处理各种格式,日志数据
2)Channel组件对采集的数据进行缓存,可以存放在Memory或File中。
3)Sink组件是用于把数据发送到目的地的组件,目的地包括Hdfs,Hbase,avro,thrift,Hbase.
4.3 Flume的Channel Selectors(拦截器,监控器)
官方文档上Chann Selectors 有两种类型:Replicating Channel Selector 和Multiplexing,
这两种Selector的区别是Replicating会将source 过来的事件发送给所有的Channel,而Multiplexing可以选择该发往哪些Channel.
4.4 Flume参数调优
Source :batchsize可以影响Source运送envent到Channel的条数,适当的调节这个参数,可以提高Source运送到channel 的event性能。
2 Channel
type选择memory时Channel的性能最好,但是如果Flume如果意外挂掉可能丢失数据,这是type可以选择File,但性能比Memory差。
使用Channel时配置DataDir配置多个不同盘下的目录可以提高性能。
Capacity决定channel可容纳最大envent的条数。transactionCapacity决定Source往Channel写数据的最大的条数,其也决定sink往Channel读取数据的条数。
transanctionCapacity需要大于Source和Sink的batchSize参数。
3.Sink
增加sink,能提高数据消费的效率。但是也不是越多越好,多了话,也会造成系统资源的浪费。
bachsize决定sink读取Channel的envent的条数大小,适当增加batchsize可以跳高sink从channel搬运数据的大小。
4.5 Flume的事务机制
Flume有两个事务机制:这两个事务机制分别负责Source 到Channel,Channel到sink。
4.6 Flume采集数据会丢失吗?
根据Flume的架构原理,Flume是不可能丢失数据的,其内部有完善的事务机制,Source到Channel是事务性的,Channel到Sink是事务性的,因此不会丢失。唯一丢失的Channel的type是使用memory会丢失数据。或agent宕机导致数据丢失,或者Cahnnel存储的数据已满,导致Source不在写入,未写入的数据丢失。
这篇关于Flume面试题的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-19Java前端后端分离学习指南
- 2024-11-19Java全栈学习:从入门到实践
- 2024-11-19Java微服务系统学习入门指南
- 2024-11-19Java微服务学习:入门与实践指南
- 2024-11-19Java学习:初学者必备指南
- 2024-11-19Java医疗系统学习:从入门到初级实战教程
- 2024-11-19SpringCloud Alibaba入门教程:轻松搭建微服务架构
- 2024-11-19SSM框架入门教程:轻松搭建Java企业级应用
- 2024-11-19订单系统学习:新手入门指南
- 2024-11-19读写分离学习:轻松入门与实战指南