hadoop 版本儿:hadoop-2.0-cdh4.3.0
想做一个hive的命令的schedule,所以必须获取正在运行的job的数量。
到网上查了一通,一开始用了JobClient,怎么弄都是Null pointor Exception,非常郁闷,不得已看了代码,发现在jobclient初始化的时候出现了这句话:
setConf(conf);
String tracker = conf.get("mapred.job.tracker", "local");
可是2.0根本没有job tracker...我又看了hadoop的命令的shell文件,发现调用hadoop job ××的命令都是用的JobClient啊。所以我矛盾了,浪费了好长时间。
然后我看了2.0的源码,发现有一个YarnRunner的类,其初始化和API和JobClient都是差不多的,所以决定用这个试试,
首先是配置Configuration,然后在初始化YarnRunner,直接就能用了!
好了上代码:
Configuration conf = new Configuration(); conf.set(CONF_KEY, CONF_VALUE); YarnRunner runner = new YARNRunner(conf);
其中的CONF_KEY是:yarn.resourcemanager.address
value去集群上的yarn-site.xml上面看一下就好了~
希望可以节省同行的时间~