作者:书友63901698 | 来源:互联网 | 2023-08-13 20:12
【场景】:需要定期运行Hadoop的MapReduce【解决办法】:编写一个运行MapReduce的Shell脚本。然后使用crontab配置定时任务。【Shell脚本】
【场景】:
需要定期运行Hadoop的MapReduce
【解决办法】:
编写一个运行MapReduce的Shell脚本。然后使用crontab配置定时任务。
【Shell脚本】
#!/usr/bin/env bash
source /etc/profile
echo "TimeLimitDrawn Start"
hadoop jar $HADOOP_HOME/package/mr_post-1.0-SNAPSHOT-jar-with-dependencies.jar com.hdyh.mapreduce.TimeLimitDrawn >> /home/hadmin/hadoop/shell/mr.log
echo "TimeLimitDrawn End"
【定时任务】
* * */1 * * sh /home/hadmin/hadoop/package/TimeLimitDraw.sh
【crontab使用说明】
crontab –u //设定某个用户的cron服务,一般root用户在执行这个命令的时候需要此参数
crontab –l //列出某个用户cron服务的详细内容
crontab –r //删除某个用户的cron服务
crontab –e //编辑某个用户的cron服务
crontab 文件中的行由6个字段组成,不同字段间用空格或tab键分隔。前5个字段指定命令要运行的时间
①分钟(0-59)
②小时(0-23)
③日期(1-31)
④月份(1-12)
⑤星期几(0-6,其中0代表星期日,好像7也代表星期日)
⑥一个要在适当时间执行的字符串。
例子:
#MIN HOUR DAY MONTH DAYOFWEEK COMMAND
#每天早上6点10分
10 6 * * * date
#每两个小时
0 */2 * * * date
#晚上11点到早上8点之间每两个小时,早上8点
0 23-7/2,8 * * * date
#每个月的4号和每个礼拜一到礼拜三的早上11点
0 11 4 * 1-3 date
#1月1日早上4点
0 4 1 1 * date
让配置文件生效:如果让配置文件生效,还得重新启动cron,切记,既然每个用户下的cron配置文件修改后,也要重新启动cron服务器。
注意:如果要定期执行某个Shell命令的时候,一定要注意以下两点:
①、shell脚本要有-x(可执行)的权限
②、shell脚本可以被正确执行,但是hadoop命令无法运行时,多数情况都是因为环境变量的原因,可以在Shell脚本中使用source /etc/profile来使环境变量生效。
③、如果设置的是整点运行,按照下面错误的写法,会在7点开始执行很多次命令。
错误的写法:* 7 * * * sh /home/hadmin/hadoop/package/TimeLimitDraw.sh
正确的写法:0 7 * * * sh /home/hadmin/hadoop/package/TimeLimitDraw.sh
④、有时因为找不到文件或者权限问题无法正确执行时,系统会生成一个文件【/var/spool/mail/[用户名]】、 如:/var/spool/mail/root
在这个文件中有时可以找到一些有用的线索。
--end--