gpt4 book ai didi

bash - Hadoop Crontab 放

转载 作者:可可西里 更新时间:2023-11-01 16:07:57 30 4
gpt4 key购买 nike

我正在尝试使用 crontab 编写一个简单的任务,将一些文件从本地复制到 HDFS。我的代码是这样的:

#!/bing/ksh

ANIO=$(date +"%Y")
MES=$(date +"%m")
DIA=$(date +"%d")
HORA=$(date +"%H")

# LOCAL AND HDFS DIRECTORIES
DIRECTORIO_LOCAL="/home/cloudera/bicing/data/$ANIO/$MES/$DIA/stations"$ANIO$MES$DIA$HORA"*"
DIRECTORIO_HDFS="/bicing/data/$ANIO/$MES/$DIA/"

# Test if the destination directory exist and create it if it's necesary
echo "hdfs dfs -test -d $DIRECTORIO_HDFS">>/home/cloudera/bicing/data/logFile
hdfs dfs -test -d $DIRECTORIO_HDFS

if [ $? != 0 ]
then
echo "hdfs dfs -mkdir -p $DIRECTORIO_HDFS">>/home/cloudera/bicing/data/logFile
hdfs dfs -mkdir -p $DIRECTORIO_HDFS
fi

# Upload the files to HDFS
echo "hdfs dfs -put $DIRECTORIO_LOCAL $DIRECTORIO_HDFS">>/home/cloudera/bicing/data/logFile
hdfs dfs -put $DIRECTORIO_LOCAL $DIRECTORIO_HDFS

如您所见非常简单,它只定义文件夹变量,在 HDFS 中创建目录(如果它不存在)并将文件从本地复制到 HDFS。

如果我直接在终端上启动该脚本,它就可以工作,但是当我使用 Crontab 安排它时,它不会将文件“放入”HDFS。

此外,脚本会创建一个“日志文件”,其中包含本应执行的命令。当我将它们复制到终端时,它们可以完美运行。

hdfs dfs -test -d /bicing/data/2015/12/10/
hdfs dfs -mkdir -p /bicing/data/2015/12/10/
hdfs dfs -put /home/cloudera/bicing/data/2015/12/10/stations2015121022* /bicing/data/2015/12/10/

我已经检查了目录和文件,但找不到解决问题的关键。

提前致谢!!!

最佳答案

当您在控制台上执行这些命令时,它们运行良好,因为设置了“HADOOP_HOME”。但是,当 Cron 作业运行时,很可能“HADOOP_HOME”环境变量不可用。

您可以通过两种方式解决此问题:

  1. 在脚本中,在开头添加以下语句。这会将所有 Hadoop jar 的路径添加到您的环境中。

    export HADOOP_HOME={Path to your HADOOP_HOME}
    export PATH=$PATH:$HADOOP_HOME\etc\hadoop\;$HADOOP_HOME\share\hadoop\common\*;$HADOOP_HOME\share\hadoop\common\lib\*;$HADOOP_HOME\share\hadoop\hdfs\*;$HADOOP_HOME\share\hadoop\hdfs\lib\*;$HADOOP_HOME\share\hadoop\mapreduce\*;$HADOOP_HOME\share\hadoop\mapreduce\lib\*;$HADOOP_HOME\share\hadoop\tools\*;$HADOOP_HOME\share\hadoop\tools\lib\*;$HADOOP_HOME\share\hadoop\yarn\*;$HADOOP_HOME\share\hadoop\yarn\lib\*
  2. 您还可以更新您的 .profile(存在于 $HOME/.profile 中)或 .kshrc(存在于 $HOME/.kshrc 中)以包含HADOOP 路径。

这应该可以解决您的问题。

关于bash - Hadoop Crontab 放,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34212612/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com