Hadoop MapReduce程序编写备忘
最近在编写Hadoop 的MapReduce程序的时侯,学到了不少东西,记下来备忘:
1. ?Mapper和Reducer的上下文执行环境信息:?? 在编写Mapper类时,一般使用如下的类继承声明:
?
public static void addInputPath(JobConf conf, Path path, Class<? extends InputFormat> inputFormatClass) ;public static void addInputPath(JobConf conf, Path path, Class<? extends InputFormat> inputFormatClass, Class<? extends Mapper> mapperClass)?
?
根据提供的方法,就可以看到MultipleInputs的强大了吧。也就是说使用MultipleInputs你可以使用两个完全不同的输入类型,一个可能是TextInputFormat,另一个则可能是SeqFileInputFormat,也可能是DBInputFormat。而针对每一种输入类型,你还可以指定对应的Mapper类,强大的MultipleInputs可以对不同的输入类型进行融合,消化,然后传给reduce方法进行处理。
?
?
4. 多个Job的依赖关系JobControl?
??使用JobControl可以控制多个Job之间的依赖关系。实现workflow的效果。例如Job2需要在Job1干完之后才能开始干活,那该怎么办?总不能Job1启动执行结束后再启动Job2吧。
?
使用JobControl可以实现工作流。
在JobControl中可以设置Job与Job之间的依赖关系。JobControl根据依赖关系进行Job的调度。 JobControl实现了Runnable接口,意味着这个类可以在线程中启动运行。在运行时,我们可以调用JobControl的getRunningJobs获取到正在运行的Job。Job里面的JobClient可以得到Job运行的详细信息。
?
?
?