如何解决使用Flume采集Hive日志时,HDFS不显示相关文件

        在配置Flume采集Hive日志数据时,我们会遇到这种问题,明明在Linux命令行上成功运行Flume指令,但是当我们查看HDFS文件系统时却发现并没有相关的文件被创建和写入。

其实造成这种现象的原因主要是以下两点:

1、没有为hive指明日志存储路径或在hive-flume-hdfs.conf中没有设置正确的日志索引

2、执行的flume语句不规范

以下就是对该问题的解决

1.hive日志文件存放位置不当

首先打开文件夹

cd /usr/local/hive/conf

通常hive的日志配置文件存放在log4j.properties或hive- log4j.properties中

查看该文件vim log4j.properties

此配置项即为hive日志存放路径,记住该路径后面要用!!!

如果没有该文件或该内容可自行创建

cd /usr/local/hive

mkdir logs

vim hive.log

cd /usr/local/hive/conf/log4j.properties

粘贴如下内容

log4j.rootLogger=WARN, RF
# 配置 RollingFileAppender
log4j.appender.RF=org.apache.log4j.RollingFileAppender
log4j.appender.RF.File=/usr/local/hive/logs/hive.log
log4j.appender.RF.MaxFileSize=10MB
log4j.appender.RF.MaxBackupIndex=10
log4j.appender.RF.layout=org.apache.log4j.PatternLayout
log4j.appender.RF.layout.ConversionPattern=%d{ISO8601} %-5p [%t] %c: %m%n

检验配置是否生效

开启hadoop集群,如果已经开启请关闭后重启

start-all.sh

开启hive,并查看日志文件

hive

show databases;

create database test;

exit;

cat /usr/local/hive/logs/hive.log

出现类似以上内容即为正常

以上都是对hive中没有明确定义hive日志位置的解决,但是即使我们明确配置了hive的日志文件位置却依然无法解决问题。

2.flume相关文件配置不当

下面我们就需要对hive-flume-hdfs.conf文件进行配置

cd /usr/local/flume/conf
vim hive-flume-hdfs.conf

这个路径因人而异,要记住,后面要用

文件内容如下

a2.sources=r2
a2.sinks=k2
a2.channels=c2
a2.sources.r2.type = exec
a2.sources.r2.command = tail -F /var/log/mariadb/mariadb.log
a2.sources.r2.shell = /bin/bash -c
a2.channels.c2.type = memory
a2.channels.c2.capacity = 1000
a2.channels.c2.transactionCapacity= 100
a2.sinks.k2.type= hdfs
a2.sinks.k2.hdfs.path = hdfs://master: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 = 100
#⽂件格式
a2.sinks.k2.hdfs.fileType =DataStream
#多久⽣成⼀个新的⽂件
a2.sinks.k2.hdfs.rollInterval = 60
#设置每个⽂件的滚动⼤⼩
a2.sinks.k2.hdfs.rollSize = 134217700
#⽂件的滚动与Event 数量⽆关
a2.sinks.k2.hdfs.rollCount = 0
a2.sources.r2.channels = c2
a2.sinks.k2.channel = c2

这个位置需要大家更改成我们原先设置hive日志文件储存的路径。

3.操作指令不当

        到这里,我们已经基本完成对相关错误的修改,但是在我们实际运行时,可能会由于输入指令不规范,导致flume集群没有正常开启,导致我们使用flume采集hive日志时遇到问题。

        如果是按照以上步骤配置的话,推荐指令如下:

cd /usr/local/flume/bin/

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

另外开启新终端,开启hive连接服务

hiveserver2

然后打开hive,进行一些基础操作指令

随后进入HDFS网页,即可查看到相关目录

  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
好的,我可以回答这个问题。您可以按照以下步骤来使用Flume采集Kafka数据到HDFSHive: 1. 首先,确保您已经安装了Flume、Kafka、HDFSHive等必要的软件。 2. 然后,在Flume的配置文件添加Kafka作为Source和HDFS/Hive作为Sink。例如,以下是一个简单的配置文件示例: ``` agent.sources = kafka-source agent.channels = hdfs-channel agent.sinks = hdfs-sink hive-sink agent.sources.kafka-source.type = org.apache.flume.source.kafka.KafkaSource agent.sources.kafka-source.batchSize = 1000 agent.sources.kafka-source.kafka.bootstrap.servers = localhost:9092 agent.sources.kafka-source.kafka.topics = my-topic agent.sources.kafka-source.kafka.consumer.group.id = my-group agent.channels.hdfs-channel.type = memory agent.channels.hdfs-channel.capacity = 10000 agent.channels.hdfs-channel.transactionCapacity = 100 agent.sinks.hdfs-sink.type = hdfs agent.sinks.hdfs-sink.hdfs.path = hdfs://localhost:9000/flume/kafka agent.sinks.hdfs-sink.hdfs.fileType = DataStream agent.sinks.hdfs-sink.hdfs.writeFormat = Text agent.sinks.hdfs-sink.channel = hdfs-channel agent.sinks.hive-sink.type = hive agent.sinks.hive-sink.hive.metastore = thrift://localhost:9083 agent.sinks.hive-sink.hive.database = my-db agent.sinks.hive-sink.hive.table = my-table agent.sinks.hive-sink.hive.partition = dt=%Y-%m-%d agent.sinks.hive-sink.channel = hdfs-channel ``` 在上面的配置文件,我们使用Kafka作为Source,将数据写入到HDFSHive。我们使用Memory Channel将数据缓存在内存,然后将其写入到HDFSHive。在Hive Sink,我们还定义了一个分区,以便按日期对数据进行分区。 3. 最后,运行Flume代理以开始从Kafka读取数据并将其写入到HDFSHive。您可以使用以下命令来启动Flume代理: ``` $ bin/flume-ng agent -n agent -c conf -f conf/flume-kafka-hdfs-hive.conf ``` 这样,Flume代理就会开始从Kafka读取数据,并将其写入到HDFSHive。 希望这些信息能够帮助您采集Kafka数据到HDFSHive。如果您有任何其他问题,请随问我。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值