大数据面试题(七)----Flume面试题

“无意中发现了一个巨牛的人工智能教程,忍不住分享一下给大家。教程不仅是零基础,通俗易懂,而且非常风趣幽默,像看小说一样!觉得太牛了,所以分享给大家。点这里可以跳转到教程。”。

大数据面试宝典目录,请点击

目录

1. Flume 使用场景(☆☆☆☆☆)
2. Flume 丢包问题(☆☆☆☆☆)
3. Flume 与Kafka 的选取


1. Flume 使用场景(☆☆☆☆☆)

线上数据一般主要是落地(存储到磁盘)或者通过socket 传输给另外一个系统,这种情况下,你很难推动线上应用或服务去修改接口,实现直接向kafka 里写数据,这时候你可能就需要flume 这样的系统帮你去做传输。

2. Flume 丢包问题(☆☆☆☆☆)

单机upd 的flume source 的配置,100+M/s 数据量,10w qps flume 就开始大量丢包,因此很多公司在搭建系统时,抛弃了Flume,自己研发传输系统,但是往往会参考Flume 的Source-Channel-Sink模式。一些公司在Flume 工作过程中,会对业务日志进行监控,例如Flume agent 中有多少条日志,Flume 到Kafka 后有多少条日志等等,如果数据丢失保持在1%左右是没有问题的, 当数据丢失达到5%左右时就必须采取相应措施。

3. Flume 与Kafka 的选取

采集层主要可以使用Flume、Kafka 两种技术:
       Flume:Flume 是管道流方式,提供了很多的默认实现,让用户通过参数部署,及扩展API。
       Kafka:Kafka 是一个可持久化的分布式的消息队列。Kafka 是一个非常通用的系统。你可以有许多生产者和很多的消费者共享多个主题Topics。相比之下,Flume 是一个专用工具被设计为旨在往HDFS,HBase 发送数据。它对HDFS 有特殊的优化,并且集成了Hadoop 的安全特性。所以,Cloudera 建议如果数据被多个系统消费的话,使用kafka;如果数据被设计给Hadoop 使用,使用Flume。正如你们所知Flume 内置很多的source 和sink 组件。然而,Kafka 明显有一个更小的生产消费者生态系统,并且Kafka 的社区支持不好。希望将来这种情况会得到改善,但是目前: 使用Kafka 意味着你准备好了编写你自己的生产者和消费者代码。如果已经存在的FlumeSources 和Sinks 满足你的需求,并且你更喜欢不需要任何开发的系统,请使用Flume。
        Flume 可以使用拦截器实时处理数据。这些对数据屏蔽或者过量是很有用的。Kafka 需要外部的流处理系统才能做到。Kafka 和Flume 都是可靠的系统,通过适当的配置能保证零数据丢失。然而,Flume 不支持副本事件。于是,如果Flume 代理的一个节点奔溃了,即使使用了可靠的文件管道方式, 你也将丢失这些事件直到你恢复这些磁盘。如果你需要一个高可靠行的管道,那么使用Kafka 是个更好的选择。
        Flume 和Kafka 可以很好地结合起来使用。如果你的设计需要从Kafka 到Hadoop 的流数据,使用Flume 代理并配置Kafka 的Source 读取数据也是可行的:你没有必要实现自己的消费者。你可以直接利用Flume 与HDFS 及HBase 的结合的所有好处。你可以使用ClouderaManager 对消费者的监控,并且你甚至可以添加拦截器进行一些流处理。

发布了422 篇原创文章 · 获赞 357 · 访问量 124万+

猜你喜欢

转载自blog.csdn.net/silentwolfyh/article/details/103865089