你好,游客 登录 注册 搜索
背景:
阅读新闻

Hadoop作业提交深度剖析2–执行shell命令

[日期:2015-07-09] 来源:工学1号馆  作者:wuyudong [字体: ]

这篇文将将继续介绍Hadoop作业的提交,主要剖析执行shell命令的内部机制

 

假设用户采用java语言编写了一个MapReduce程序,并将其打包成XXX.jar,然后通过以下命令提交作业:

当用户输入以上命令后,bin/hadoop脚本根据“jar”命令将作业交给RunJar类处理,相关代码如下:

下面来详细剖析RunJar类源代码:

RunJar类中只有一个函数:unJar,作用是将一个jar包解压缩成一个目录

需了解的知识:

JarFile类:用于从任何可以使用 java.io.RandomAccessFile 打开的文件中读取 jar 文件的内容。它扩展了 java.util.zip.ZipFile 类,使之支持读取可选的 Manifest 条目。Manifest 可用于指定关于 jar 文件及其条目的元信息。

public Enumeration<JarEntry> entries():返回 zip 文件条目的枚举。

JarEntry类:此类用于表示 JAR 文件条目。

理论了半天,来做个实验,在eclipse上建立一个java类来模拟一下。由于使用的都是java库文件,所以不需要配置hadoop运行环境,十分方便

我这里使用的是hadoop自带的examples的jar包来做实验,输入输出目录指定后,即可运行程序,结果如预期的一样,将hadoop-examples-1.0.1.jar包解压缩到指定的目录

RunJar类中的main函数解压jar包和设置环境变量,将运行参数传递给MapReduce程序,并运行之。





收藏 推荐 打印 | 录入:Cstor | 阅读:
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款