前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >大数据-Flume采集文件到HDFS

大数据-Flume采集文件到HDFS

作者头像
cwl_java
发布2019-12-26 10:17:01
8550
发布2019-12-26 10:17:01
举报
文章被收录于专栏:cwl_Java

2.2. 采集案例

2.2.4. 采集文件到HDFS

需求 比如业务系统使用log4j生成的日志,日志内容不断增加,需要把追加到日志文件中的数据实时采集到 hdfs

分析 根据需求,首先定义以下3大要素

  • 采集源,即source——监控文件内容更新 : exec ‘tail -F file’
  • 下沉目标,即sink——HDFS文件系统 : hdfs sink
  • Source和sink之间的传递通道——channel,可用file channel 也可以用 内存channel

Step 1: 定义 Flume 配置文件

代码语言:javascript
复制
cd /export/servers/apache-flume-1.8.0-bin/conf 
vim tail-file.conf
代码语言:javascript
复制
agent1.sources = source1 
agent1.sinks = sink1 
agent1.channels = channel1 
# Describe/configure tail -F source1 
agent1.sources.source1.type = exec 
agent1.sources.source1.command = tail -F /export/servers/taillogs/access_log 
agent1.sources.source1.channels = channel1 
# Describe sink1 
agent1.sinks.sink1.type = hdfs 
#a1.sinks.k1.channel = c1 
agent1.sinks.sink1.hdfs.path = hdfs://node01:8020/weblog/flume-collection/%y-%m-%d/%H-% 
agent1.sinks.sink1.hdfs.filePrefix = access_log 
agent1.sinks.sink1.hdfs.maxOpenFiles = 5000 
agent1.sinks.sink1.hdfs.batchSize= 100 
agent1.sinks.sink1.hdfs.fileType = DataStream 
agent1.sinks.sink1.hdfs.writeFormat =Text 
agent1.sinks.sink1.hdfs.round = true 
agent1.sinks.sink1.hdfs.roundValue = 10 
agent1.sinks.sink1.hdfs.roundUnit = minute 
agent1.sinks.sink1.hdfs.useLocalTimeStamp = true 
# Use a channel which buffers events in memory 
agent1.channels.channel1.type = memory 
agent1.channels.channel1.keep-alive = 120 
agent1.channels.channel1.capacity = 500000 
agent1.channels.channel1.transactionCapacity = 600 
# Bind the source and sink to the channel 
agent1.sources.source1.channels = channel1 
agent1.sinks.sink1.channel = channel1

Step 2: 启动 Flume

代码语言:javascript
复制
cd /export/servers/apache-flume-1.6.0-cdh5.14.0-bin bin/flume-ng agent -c conf -f conf/tail-file.conf -n agent1

Step 3: 开发 Shell 脚本定时追加文件内容

代码语言:javascript
复制
mkdir -p /export/servers/shells/ 
cd /export/servers/shells/ 
vim tail-file.sh
代码语言:javascript
复制
#!/bin/bash 
while true dodate >> /export/servers/taillogs/access_log; sleep 0.5; done

Step 4: 启动脚本

代码语言:javascript
复制
# 创建文件夹 
mkdir -p /export/servers/taillogs 
# 启动脚本 
sh /export/servers/shells/tail-file.sh
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 2.2. 采集案例
    • 2.2.4. 采集文件到HDFS
      • Step 1: 定义 Flume 配置文件
      • Step 2: 启动 Flume
      • Step 3: 开发 Shell 脚本定时追加文件内容
      • Step 4: 启动脚本
相关产品与服务
大数据
全栈大数据产品,面向海量数据场景,帮助您 “智理无数,心中有数”!
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档