在hadoop0.20.2版本之后,hadoop提供了一个新的api接口,用于开启hadoop代码。
那么采用如下形式来实现:
mapper和reducer类不再是接口而是抽象类,因此,map函数和reduce函数不再实现mapper和reducer接口了,而是继承相应的抽象类。这样更容易扩展。另外,在新版的api中,广泛使用context对象,并且用mapcontext来对mapreduce之间的通信进行维护,还充当了outputcollector和reporter的角色。
job由统一的configuration来完成,而不必额外使用jobconf来对守护进程进行配置。由job类来负责job的通信,而不是jobclient,且jobclient已经在新的api中被删除了。
此外,关于toolrunner类,继承自configured,实现tool接口。在main方法中通过toolrunner.run()来调用上述类中的run方法。
将所有的关于job的配置信息放置在run方法中来实现。
public int run(String[] args) throws Exception
{
Job job = new Job(getConf());
job.setJarByClass(***.class);
关于job的一些输入输出的配置信息
}
然后是在main函数中,通过toolrunner.run()来调用此方法来实现开启hadoop。
未完待续。。。