在Hadoop2.6.0下使用命令行编译打包运行自己的MapReduce程序

本文详细介绍了如何从编写MapReduce源程序开始,一步步完成Java程序的打包,并最终在Hadoop集群上运行的全过程。文章包括配置环境变量、编译Java源文件、打包为jar文件及在集群中运行等步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  思路是:编写mapreduce源程序-----启动完全分布式hadoop集群----编译Java源程序----打包编译后的程序----在集群中运行编译后的程序。

  遇到的问题如下:   

  (1):如何将Java源程序打包成jar文件?

  (2):jar文件如何在hadoop集群中运行?

  (3):如何找到hadoop提供给Java源程序用来编译的Jar包?

  

  具体过程如下:

第一步:我们将 Hadoop 的 classhpath 信息添加到 CLASSPATH 变量中,在/etc/profile中增加如下几行:

  export HADOOP_HOME=/usr/local/hadoop
  export CLASSPATH=$($HADOOP_HOME/bin/hadoop classpath):$CLASSPATH

别忘了执行source /etc/profile 使变量生效。这样对于问题(3)就进行了很好的解决。(虽然不知道Java源程序具体需要哪些Jar包,但是我在classpath下把所有hadoop的jar包都放进去,这样就解决了问题(3))

第二步:编译xxx.java源程序,在命令行执行如下命令

  javac xxxx.java -d {存放的目录}

  其中-d选项指定生成的类文件的位置,在编译的时候这个选项必须重新指定,不能让xxxx.class生成在当前目录下。这是因为xxxx.java内包含package信息,如果我们不加-d选项,则编译的时候会将package信息丢失,导致能编译通过,但是后续不能找到类文件的错误。

第三步 :将xxxx.class文件打包成一个jar包:在命令行执行如下命令:

  jar -cvf xxxx.jar -C {存放的目录} . 

  要注意不要忘记最后有一个点,否则jar命令报错。该点指示jar命令的文件列表,表示指定目录下的所有文件。这里不能用*,否则会添加除了指定目录还有当前目录下的所有文件。这样以后打包的结果是在执行jar命令的目录下生成一个xxxx.jar。

第四步:在集群中运行编译后的程序,执行如下命令:

  ${HADOOP_HOME}/bin/hadoop jar xxxx.jar xxxx.MainClassName  InputPath OutputPath

 

转载于:https://www.cnblogs.com/reedom1991/p/7001643.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值