ToolRunner

What is the usage of Configured class in Hadoop programs?

时间秒杀一切 提交于 2019-12-10 02:26:40
问题 Most of Hadoop MapReduce programs are like this: public class MyApp extends Configured Implements Tool { @Override public int run(String[] args) throws Exception { Job job = new Job(getConf()); /* process command line options */ return job.waitForCompletion(true) ? 0 : 1; } public static void main(String[] args) throws Exception { int exitCode = ToolRunner.run(new MyApp(), args); System.exit(exitCode); } } What is the usage of Configured ? As Tool and Configured both have getConf() and

ToolRunner与eclipse hadoop 插件的替代品,简化M/R程序的开发

回眸只為那壹抹淺笑 提交于 2019-12-06 18:42:58
目前开发的时候测试M/R程序有三种方式 1. 直接打成jar包,然后放到服务器中去执行。此方法步骤繁琐,每次都要打包上传。 2. 使用Hadoop的Ecilpse插件,但是对于N多的Hadoop版本总替换插件,是不是也是一种痛苦呢? 3. 使用Hadoop的测试框架,这种情况我使用的比较少,感觉不太方便,每都相当于在本地启动各个服务(我电脑配置不好,压力啊!!汗一个) 其实Hadoop自带的ToolRunner只差一步就可以实现在Eclipse中运行了,而我们所要做的就是扩展一下而已。 Ok废话不多说了,原理如下: JobClient类在提交job的时候需要一个jar包,这个很简单,我们使用Ecipse编译出的class文件创建一个Jar包即可。如果你使用的是hadoop自带的那些jar,ok那没有问题,但是如果你引用了第三方的类库,那么问题随之而来,有两种解决办法 1. 将你所需要第三方jar包加入到TaskTracker的ClassPath中,这样每新加入一个jar包就需要重启所有的TaskTracker。 2. 将第三方类库加入到M/R的ClassPath中,这就需要使用Hadoop的缓存机制,在M/R执行前将这些jar包都放入到Hadoop中,每个M/R就可以使用这些jar包中的类了。 很明显第二种方法是最适合的,而且Hadoop已经实现了这一功能。