章节内容
上一节我们完成了内容:
Flume 启动测试
Flume Conf编写
Flume 测试发送和接收数据
背景介绍
这里是三台公网云服务器,每台 2C4G,搭建一个Hadoop的学习环境,供我学习。
之前已经在 VM 虚拟机上搭建过一次,但是没留下笔记,这次趁着前几天薅羊毛的3台机器,赶紧尝试在公网上搭建体验一下。
2C4G 编号 h121
2C4G 编号 h122
2C2G 编号 h123
文档推荐
除了官方文档以外,这里有一个写的很好的中文文档:
环境准备
要将数据写入到 HDFS 中,我们需要一些支持库来完成。
(这些支持库基本都在Hadoop的支持库中,没有的话,大家可以到Maven仓库搜索下载补充一下)
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 文件夹下:
cd $FLUME_HOME/lib ls
配置文件
cd vim flume-exec-hdfs.conf
编写如下的内容:
# 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
$FLUME_HOME/bin/flume-ng agent --name a2 \ --conf-file flume-exec-hdfs.conf \ -Dflume.root.logger=INFO,console
如果你启动一切顺利的话,你可以看到如下的内容:
测试效果
启动集群
start-dfs.sh start-yarn.sh
启动Hive
hive -e "show databases;"
查看日志
可以看到 Flume 上有了输出
查看HDFS
观察HDFS,发现数据已经写入了: