📅  最后修改于: 2023-12-03 14:57:35.882000             🧑  作者: Mango
Apache Flume 是一个可靠、分布式、高可扩展的系统,用于将大量数据从不同源头传输到 Hadoop 系统中的目标存储介质。
Apache Flume 是一个可靠、分布式、高可扩展的系统,它的目的是将大量数据从不同源头传输到目标存储介质中,如 HDFS、HBase 和 Apache Solr 等等。
Flume 通过定义数据流管道(pipeline)的方式来将数据从源头到目的地。数据流管道是一种开放式框架,可以根据不同的需求来实现不同的场景。
Flume 的主要原理是:数据源 → 接收 → 处理 → 目标存储介质
Flume 组件主要分为三类:
假如我们需要把一个系统中的 web log 数据传输到 Hadoop 分布式文件系统中,那么可以使用 Flume 程序。首先,在 web 服务器上将 log 数据通过 Flume 发送到数据流管道(pipeline)中,随后再将管道中的数据缓存到内存或磁盘中,最后再将缓存好的数据写入到 HDFS 中。
## 代码片段
### 配置 Source
webtail.sources = webtail webtail.sources.webtail.type = TAILDIR webtail.sources.webtail.positionFile = /var/flume/taildir_position.json webtail.sources.webtail.filegroups = logs webtail.sources.webtail.filegroups.logs = /var/logs/httpd/access.log webtail.sources.webtail.batchSize = 100
### 配置 Channel
webtail.channels = webtail webtail.channels.webtail.type = memory webtail.channels.webtail.capacity = 1000000 webtail.channels.webtail.transactionCapacity = 1000 webtail.channels.webtail.keep-alive = 3
### 配置 Sink
webtail.sinks = webtail webtail.sinks.webtail.channel = webtail webtail.sinks.webtail.type = HDFS webtail.sinks.webtail.hdfs.path = /user/flume/weblog/%Y/%m/%d webtail.sinks.webtail.hdfs.rollInterval = 600 webtail.sinks.webtail.hdfs.rollSize = 104857600 webtail.sinks.webtail.hdfs.fileType = DataStream
### 配置工作流程
webtail.sources = webtail webtail.channels = webtail webtail.sinks = webtail
webtail.sources.webtail.channels = webtail webtail.sinks.webtail.channel = webtail
```markdown
以上是 Flume 的简单介绍,它是一个可靠、分布式、高可扩展的系统,在大数据场景下应用广泛。