开发一个MR任务涉及代码编写,打包,运行,调试。指定第三方lib库,读取程序配置文件和资源文件,运行日志配置,能够读取指定源数据,并且输出结果到指定存储媒体。以下根据上述程序编写的基本条件逐一列出在hadoop中如何开发。
1. 把自己的代码打包成jar包,jar包中可包含lib目录和classes目录,lib目录中可放第三方包,classes目录中可放额外配置文件或资源文件等。通过hadoop命令提交运行任务时,会自动把这个jar包路径按照参数名”mapred.jar”设置到环境参数中,在提交到JobTracker上运行时,会自动把本地路径的jar包上传到hdfs目录上并且重新设置”mapred.jar”参数为hdfs上的路径。TaskTracker接收到任务运行时会根据”mapred.jar”配置的路径,从hdfs下载到本地并解压缩,解压缩后把jar包根目录,jar包下子目录classes和lib中的所有文件加入到启动任务的classpath中。
2. 可通过参数”mapred.child.java.opts”设置启动任务的JVM参数,比如远程调试端口等。
3. 可在命令行中通过参数”libjars”,”files”,”archives”设置程序依赖的第三方lib库(由于有些依赖lib包可能比较大,通过这种方式可以把jar缓存在TaskTracker上,这样以后提交TaskTracker就无需再下载,通过把lib库打包在jar包中,则需要每次都下载),程序需要的资源文件,以及其它压缩包等。范例如下:
代码提交到JobTracker时会自动把命令行中指定的文件上传到HDFS目录上,并且设置环境参数"mapred.cache.files"为