3.2 实时读取本地文件到 HDFS 案例

3.2.1 案例需求

实时监控 Hive 日志,并上传到 HDFS 中

3.2.2 需求分析

3.2.3 操作步骤

步骤1: 配置 HADOOP_HOME 环境变量

如果要 sink 到 HDFS, Flume 需要 HADOOP 的相关 jar 包, 所以务必配置 HADOOP_HOME 环境变量, 然后 Flume 可以通过 HADOOP_HOME 找到需要的 jar 包.

如果前面这种方式启动失败, 就需要手动copy下面几个 jar 包到/opt/module/flume/lib 目录下

commons-configuration-1.6.jar、
hadoop-auth-2.7.2.jar、
hadoop-common-2.7.2.jar、
hadoop-hdfs-2.7.2.jar、
commons-io-2.4.jar、
htrace-core-3.1.0-incubating.jar

步骤2: 创建flume-file-hdfs.conf文件

在 job 目录下创建文件:

touch flume-file-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 /opt/module/hive-2.3.3/logs/hive.log
a2.sources.r2.shell = /bin/bash -c

# Describe the sink
a2.sinks.k2.type = hdfs
a2.sinks.k2.hdfs.path = hdfs://hadoop201:9000/flume/%Y%m%d/%H
#上传文件的前缀
a2.sinks.k2.hdfs.filePrefix = logs-
#是否按照时间滚动文件夹
a2.sinks.k2.hdfs.round = true
#多少时间单位创建一个新的文件夹
a2.sinks.k2.hdfs.roundValue = 1
#重新定义时间单位
a2.sinks.k2.hdfs.roundUnit = hour
#是否使用本地时间戳
a2.sinks.k2.hdfs.useLocalTimeStamp = true
#积攒多少个Event才flush到HDFS一次
a2.sinks.k2.hdfs.batchSize = 1000
#设置文件类型,可支持压缩
a2.sinks.k2.hdfs.fileType = DataStream
#多久生成一个新的文件
a2.sinks.k2.hdfs.rollInterval = 600
#设置每个文件的滚动大小
a2.sinks.k2.hdfs.rollSize = 134217700
#文件的滚动与Event数量无关
a2.sinks.k2.hdfs.rollCount = 0
#最小冗余数
a2.sinks.k2.hdfs.minBlockReplicas = 1

# Use a channel which buffers events in memory
a2.channels.c2.type = memory
a2.channels.c2.capacity = 1000
a2.channels.c2.transactionCapacity = 100

# Bind the source and sink to the channel
a2.sources.r2.channels = c2
a2.sinks.k2.channel = c2

步骤3: 执行监控配置

flume-ng agent --conf conf --conf-file job/flume-file-hdfs.conf --name a2

步骤4: HDFS 上查看日志文件

Copyright © 尚硅谷大数据 2019 all right reserved,powered by Gitbook
该文件最后修订时间: 2018-12-17 14:44:53

results matching ""

    No results matching ""