Flume之企业面试题

1 你是如何实现Flume数据传输的监控的

使用第三方框架Ganglia实时监控Flume。

2 Flume的Source,Sink,Channel的作用?你们Source是什么类型?

1、作用 (1)Source组件是专门用来收集数据的,可以处理各种类型、各种格式的日志数据,包括avro、thrift、exec、jms、spooling directory、netcat、sequence generator、syslog、http、legacy (2)Channel组件对采集到的数据进行缓存,可以存放在Memory或File中。 (3)Sink组件是用于把数据发送到目的地的组件,目的地包括Hdfs、Logger、avro、thrift、ipc、file、Hbase、solr、自定义。

2、我公司采用的Source类型为: (1)监控后台日志:exec (2)监控后台产生日志的端口:netcat

3 Flume 的 Channel Selectors

 

4 Flume 参数调优

  1. Source 增加Source个数(使用Tair Dir Source时可增加FileGroups个数)可以增大Source的读取数据的能力。 例如:当某一个目录产生的文件过多时需要将这个文件目录拆分成多个文件目录,同时配置好多个 Source 以保证 Source 有足够的能力获取到新产生的数据。 batchSize 参数决定 Source 一次批量运输到 Channel 的event条数,适当调大这个参数可以提高 Source 搬运 Event 到 Channel 时的性能。

  2. Channel type 选择 memory 时 Channel 的性能最好,但是如果 Flume 进程意外挂掉可能会丢失数据。type 选择 file 时 Channel 的容错性更好,但是性能上会比 memory channel 差。 使用file Channel时 dataDirs 配置多个不同盘下的目录可以提高性能。 Capacity 参数决定 Channel 可容纳最大的 event 条数。transactionCapacity 参数决定每次 Source 往 channel 里面写的最大event 条数和每次 Sink 从channel 里面读的最大 event 条数。transactionCapacity 需要大于 Source 和Sink的batchSize 参数。

  3. Sink 增加 Sink 的个数可以增加 Sink 消费 event 的能力。Sink 也不是越多越好够用就行,过多的 Sink 会占用系统资源,造成系统资源不必要的浪费。 batchSize 参数决定 Sink 一次批量从 Channel 读取的 event 条数,适当调大这个参数可以提高 Sink 从 Channel 搬出 event 的性能。

5 Flume 的事务机制

Flume的事务机制(类似数据库的事务机制):

Flume 使用两个独立的事务分别负责从 Soucrce 到 Channel(put),以及从 Channel 到Sink 的事件传递(take)。

比如 spooling directory source 为文件的每一行创建一个事件,一旦事务中所有的事件全部传递到 Channel 且提交成功,那么 Soucrce 就将该文件标记为完成。

同理,事务以类似的方式处理从 Channel 到 Sink 的传递过程,如果因为某种原因使得事件无法记录,那么事务将会回滚。且所有的事件都会保持到 Channel 中,等待重新传递。

6 Flume 采集数据会丢失吗?

不会,Channel 存储可以存储在 File 中,数据传输自身有事务。

 

### Apache Flume 高频面试题及答案解析 #### 1. 什么是 Apache Flume? Apache Flume 是一个分布式、可靠且可用的服务,用于有效地收集、聚合并移动大量日志数据Flume 支持在日志系统中定制各类数据发送方(agent),具有高可靠性、高可扩展性和灵活性[^1]。 #### 2. 解释 Flume 的架构组件及其功能 - **Source**: 接收事件的入口点。可以配置多种类型的 Source 来接收来自不同系统的数据。 - **Channel**: 存储接收到的数据直到 Sink 处理完毕。常见的 Channel 类型有 Memory Channel 和 File Channel。 - **Sink**: 将数据写入目的地,如 HDFS 或者 Kafka 等外部存储系统。 - **Agent**: 单个 JVM 进程实例化上述三个核心组件(Source, Channel, Sink)来完成整个流程的工作流构建[^2]. #### 3. Flume 和 Log4j 方式的优劣对比是什么? Log4j 的方式与项目耦合度较高,不够灵活;相比之下,Flume 提供了一种更松散耦合的日志传输机制,能够更好地适应变化的需求,并且其设计允许动态调整配置而不影响现有应用程序性能. #### 4. 如何处理 Flume 中间停止的情况? 当 Flume Agent 停止工作时,可以通过设置 checkpointing (检查点) 功能确保重启后能继续未完成的任务。对于基于事务的操作,默认情况下会自动重试失败的消息传递直至成功为止。此外,在某些场景下还可以利用 Spooling Directory Source 实现断点续传的效果. ```bash agent.sources = spoolDirSrc agent.channels = fileChan agent.sinks = hdfsSink agent.sources.spoolDirSrc.type = spooldir agent.sources.spoolDirSrc.spoolDir = /path/to/spooldir ```
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值