3

这可能已经在某个地方得到了回答,但我还没有找到。

我有一个简单的 shell 脚本,我想用它来将日志文件移动到我的 Hadoop 集群中。该脚本将由 Logrotate 每天调用。

它失败并出现以下错误:“/user/qradar: cannot open `/user/qradar' (No such file or directory)”。

#!/bin/bash

#use today's date and time
day=$(date +%Y-%m-%d)

#change to log directory
cd /var/log/qradar

#move and add time date to file name
mv qradar.log qradar$day.log

#load file into variable
#copy file from local to hdfs cluster

if [ -f qradar$day.log ]

then
    file=qradar$day.log
    hadoop dfs -put /var/log/qradar/&file   /user/qradar

else
    echo "failed to rename and move the file into the cluster" >> /var/log/messages

fi

目录 /user/qradar 确实存在,并且可以与 Hadoop 文件命令一起列出。我还可以使用 Hadoop 文件命令手动将文件移动到正确的目录中。我可以通过这种方式将文件移动到集群中吗?有没有更好的办法?

欢迎任何想法和评论。谢谢

4

1 回答 1

4

&file错字hadoop dfs -put吗?

如果不是,那么这可能是您的问题,您正在后台运行命令hadoop dfs -put /var/log/qradar/(与号在后台运行命令),然后file /user/qradar是 shell 在本地路径上查找的 command 。

我的猜测是您的意思是以下(美元而不是&符号):

hadoop dfs -put /var/log/qradar/$file /user/qradar
于 2012-10-08T23:11:26.513 回答