Hadoop-19 Flume Agent批量采集数据到HDFS集群 监听Hive的日志 操作则把记录写入到HDFS 方便后续分析

章节内容

上一节我们完成了内容:

  • Flume 启动测试
  • Flume Conf编写
  • Flume 测试发送和接收数据

背景介绍

这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。

之前已经在 VM 虚拟机上搭建过一次,但是没留下笔记,这次趁着前几天薅羊毛的3台机器,赶紧尝试在公网上搭建体验一下。

  • 2C4G 编号 h121
  • 2C4G 编号 h122
  • 2C2G 编号 h123

文档推荐

除了官方文档以外,这里有一个写的很好的中文文档:
https://flume.liyifeng.org/

环境准备

要将数据写入到 HDFS 中,我们需要一些支持库来完成。

(这些支持库基本都在Hadoop的支持库中,没有的话,大家可以到Maven仓库搜索下载补充一下)

shell 复制代码
cd $HADOOP_HOME/share/hadoop/httpfs/tomcat/webapps/webhdfs/WEB-INF/lib
  • commons-configuration-1.6.jar
  • commons-io-2.4.jar
  • hadoop-auth-2.9.0.jar
  • hadoop-common-2.9.0.jar
  • hadoop-hdfs-2.9.0.jar
  • htrace-core4-4.1.0-incubating.jar

你需要把这些Jar包都拷贝到 $FLUME_HOME/lib 文件夹下:

shell 复制代码
cd $FLUME_HOME/lib
ls

配置文件

shell 复制代码
cd 
vim flume-exec-hdfs.conf

编写如下的内容:

shell 复制代码
# Name the components on this agent
a2.sources = r2
a2.sinks = k2
a2.channels = c2

# Describe/configure the source
a2.sources.r2.type = exec
a2.sources.r2.command = tail -F /tmp/root/hive.log
# Use a channel which buffers events in memory
a2.channels.c2.type = memory
a2.channels.c2.capacity = 10000
a2.channels.c2.transactionCapacity = 500

# Describe the sink
a2.sinks.k2.type = hdfs
# 这里注意修改为服务器的IP!!!
# 注意是 HDFS 的,别写错了,具体看 Hadoop 的 core-site.xml fs.defaultFS
a2.sinks.k2.hdfs.path = hdfs://h121.wzk.icu:9000/flume/%Y%m%d/%H%M
# 上传文件的前缀
a2.sinks.k2.hdfs.filePrefix = logs-
# 是否使用本地时间戳
a2.sinks.k2.hdfs.useLocalTimeStamp = true
# 积攒500个Event才flush到HDFS一次
a2.sinks.k2.hdfs.batchSize = 500
# 设置文件类型,支持压缩。DataStream没启用压缩
a2.sinks.k2.hdfs.fileType = DataStream

# 1分钟滚动一次
a2.sinks.k2.hdfs.rollInterval = 60
# 128M滚动一次
a2.sinks.k2.hdfs.rollSize = 134217700
# 文件的滚动与Event数量无关
a2.sinks.k2.hdfs.rollCount = 0

# 最小冗余数
a2.sinks.k2.hdfs.minBlockReplicas = 1
# Bind the source and sink to the channel
a2.sources.r2.channels = c2
a2.sinks.k2.channel = c2

启动Agent

shell 复制代码
$FLUME_HOME/bin/flume-ng agent --name a2 \
--conf-file flume-exec-hdfs.conf \
-Dflume.root.logger=INFO,console

如果你启动一切顺利的话,你可以看到如下的内容:

测试效果

启动集群

shell 复制代码
start-dfs.sh
start-yarn.sh

启动Hive

shell 复制代码
hive -e "show databases;"

查看日志

可以看到 Flume 上有了输出

查看HDFS

观察HDFS,发现数据已经写入了:

相关推荐
掘金-我是哪吒36 分钟前
分布式微服务系统架构第129集:redis安装部署文档
redis·分布式·微服务·架构·系统架构
caihuayuan51 小时前
生产模式下react项目报错minified react error #130的问题
java·大数据·spring boot·后端·课程设计
houzhizhen1 小时前
Hive PredicatePushDown 谓词下推规则的计算逻辑
hive
计算机毕设定制辅导-无忧学长2 小时前
RabbitMQ 消息模式实战:从简单队列到复杂路由(一)
分布式·rabbitmq·ruby
兔子坨坨2 小时前
详细了解HDFS
大数据·hadoop·hdfs·big data
夏旭泽2 小时前
系统架构-大数据架构设计
大数据·系统架构
Eternity......3 小时前
Spark,连接MySQL数据库,添加数据,读取数据
大数据·spark
智慧化智能化数字化方案3 小时前
报告精读:华为2024年知行合一通信行业数据治理实践指南报告【附全文阅读】
大数据·数据治理实践指南报告·华为2024年知行合一·通信行业数据治理实践指南报告
caihuayuan43 小时前
React Native 0.68 安装react-native-picker报错:找不到compile
java·大数据·sql·spring·课程设计
maozexijr3 小时前
Flink 并行度的设置
大数据·flink