flume采集数据存至hdfs
时间: 2024-12-29 15:24:12 浏览: 65
### 配置 Flume 将数据采集后存储到 HDFS
为了实现通过 Flume 收集日志并将这些日志存储至 HDFS 中,需按照如下方法设置 `flume` 的配置文件以及启动命令。
#### 创建和编辑配置文件
创建一个新的配置文件位于 `/opt/software/flume/apache-flume-1.9.0-bin/conf/demo.conf` 文件中定义 source, channel 和 sink 组件之间的连接关系[^2]:
```properties
# 定义agent名称为a1及其组件source、channel、sink
a1.sources = r1
a1.sinks = k1
a1.channels = c1
# 描述配置给定source的type和其他属性
a1.sources.r1.type = exec
a1.sources.r1.command = tail -F /path/to/logfile.log
# 使用内存作为通道
a1.channels.c1.type = memory
a1.channels.c1.capacity = 1000
a1.channels.c1.transactionCapacity = 100
# 设置sink指向HDFS
a1.sinks.k1.type = hdfs
a1.sinks.k1.hdfs.path = hdfs://namenode:8020/access/
a1.sinks.k1.hdfs.fileType = DataStream
a1.sinks.k1.hdfs.writeFormat = Text
a1.sinks.k1.hdfs.batchSize = 1000
a1.sinks.k1.hdfs.rollInterval = 600
a1.sinks.k1.hdfs.rollSize = 0
a1.sinks.k1.hdfs.rollCount = 0
# 连接source/channel/sink
a1.sources.r1.channels = c1
a1.sinks.k1.channel = c1
```
上述配置说明了如何利用 `exec` 类型的数据源读取本地的日志文件,并将其发送到指定路径下的 HDFS 存储位置。这里假设日志文件存在于服务器上的某个固定路径下;如果需要监控数据库中的变化,则可以替换相应的 Source Type 如 SQLSource 来代替默认的 Exec Source[^5]。
#### 启动 Flume Agent 并使其后台运行
当所有的准备工作完成后,在终端执行以下指令来启动名为 "a1" 的代理程序并让其以后台模式持续工作:
```bash
nohup ./bin/flume-ng agent -c conf/ -f /opt/software/flume/apache-flume-1.9.0-bin/conf/demo.conf -n`. 此外还使用了 nohup 命令使得即使关闭当前shell窗口也不会影响该进程继续执行[^3].
#### 检查 HDFS 上的结果
最后可以通过访问 HDFS 查看是否成功上传了由 Flume 所收集的日志文件:
```bash
cd /home/soft/hadoop-3.2.4/bin
./hdfs dfs -ls -R /access
```
此命令会列出所有存放在 `/access` 路径下的文件列表,从而验证 Flume 是否正常运作并向目标地址写入了预期的内容[^1].
阅读全文
相关推荐


















