博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hadoopJob执行shell脚本
阅读量:4112 次
发布时间:2019-05-25

本文共 1291 字,大约阅读时间需要 4 分钟。

需求:

1.基于hadoop jar 执行hadoop的job

2.参数也要可输入

3.shell脚本可供crontab调度

 

方式:

1.java解析输入的参数,并对参数进行规范定义

2.shell实现hadoop jar命令行执行,调度脚本用shell实现

3.crontab调度调度脚本

 

实现:

java解析输入参数:

/** * 
 * 获取命令行参数,命令行job参数格式如下: * --param1  val1 \ * --param2  val2 \ * 
* * @param args 命令行参数 * @return 返回map参数映射对 * @date 2013-11-13 */public Map
parseMRCommands(String[] args) { Map
commands = new HashMap
(); String key = null; for (String cmdStr : args) { if (cmdStr.startsWith("--")) { if (key != null) { commands.put(key, ""); } key = cmdStr.substring(2); } else { // add new command key:value commands.put(key, cmdStr); // clear key key = null; } } return commands;}

输入的参数规范如下:

--param1  val1 \

 

shell执行脚本run.sh:

#! /bin/bashhadoop jar ../lib/test-SNAPSHOT.jar com.test.TTask \           --input.path.key /user/input/texts \           --output.path.key /user/output/texts.out \

shell调度脚本cron-run.sh:

#!/bin/sh#File:cron-run.shsource /user/.bash_profilecd $DEV_WORKING/mapred/binprocess_id=`jps -m | grep "TTask" | awk '{print $1}'`process_id=${process_id:=0}date if [ $process_id -gt 0 ] then	echo "job is running, pid = $process_id" else 	echo "pid is null, job runing now, start..." 	nohup ./run.sh > run.log 2>&1 &fi

然后就可以直接在crontab中对cron-run.sh做周期性调度

 

 

转载地址:http://dsqsi.baihongyu.com/

你可能感兴趣的文章
LeetCode:633. 平方数之和
查看>>
LeetCode:403. 青蛙过河
查看>>
LeetCode:137. 只出现一次的数字 II
查看>>
LeetCode:690. 员工的重要性
查看>>
Resnet训练 验证自己的数据集
查看>>
Python判断文件/目录是否存在
查看>>
python 将字典写入csv
查看>>
在本地显示远程服务器的TensorboardX结果
查看>>
欢迎使用CSDN-markdown编辑器
查看>>
求字符串的周期 使用strncmp函数
查看>>
一串字符求最小字典序
查看>>
循环小数 uva202
查看>>
uva1588 Kickdown
查看>>
浮点数在计算机中的保存
查看>>
using namespace std
查看>>
uva11059
查看>>
生成1~n的排列
查看>>
uva1587 判断所给的六个面能否构成长方体
查看>>
HDU 1016 Prime Ring Problem
查看>>
线段树总括
查看>>