章节内容
上一节我们完成了内容:
- 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,发现数据已经写入了: