开发一个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"为”files”中指定的文件,” mapred.cache.archives”为”archives”和”libjars”中指定的文件,并且”libjars”中指定的文件额外再通过参数"mapred.job.classpath.archives"设置这些文件需要添加到启动任务的classpath中。

本文详细介绍了在Hadoop中开发MapReduce任务的过程,包括将代码打包成jar包,设置JVM参数,管理第三方库和资源文件,以及日志配置。通过libjars、files和archives参数来管理依赖,并利用DistributedCache获取本地已下载的文件。任务的日志会自动输出到特定目录,便于跟踪和调试。
最低0.47元/天 解锁文章
611

被折叠的 条评论
为什么被折叠?



