"不是一个有效的罐子"尝试运行Map Reduce Job时

时间:2015-01-23 14:47:20

标签: eclipse hadoop mapreduce

我试图通过从eclipse构建一个jar来运行我的MapReduce作业,但在尝试执行该作业时,我得到了#34;不是一个有效的Jar"错误。

我试图关注Not a valid Jar链接,但这没有用。

任何人都可以请给我关于如何从eclipse构建jar的说明,以便在Hadoop上运行。

我知道从eclipse构建Jar文件的过程,但是我不确定,我是否需要特别注意构建一个jar文件,以便它在Hadoop上运行。

3 个答案:

答案 0 :(得分:1)

确保您提交的jar(hist.jar)位于您提交'hadoop jar'命令的当前目录中。

如果问题仍然存在,请告诉您正在使用的Java,Hadoop和Linux版本。

答案 1 :(得分:1)

提交命令时,请确保在线上有以下内容来执行命令:

  1. 当您指示罐子时,请确保您正确地指向罐子。通过使用绝对路径可能最容易确定。要获得绝对路径,如果您导航到jar所在的位置,请运行' readlink -f'命令获取绝对路径。所以对你来说,不仅仅是hist.jar,而是/home/akash_user/jars/hist.jar或者你系统上的任何地方。如果您正在使用Eclipse,它可能会将其保存在有趣的地方,因此请确保这不是问题。 jar无法从HDFS存储运行。必须从本地存储运行。

  2. 在命名主类时,在示例直方图中,必须使用类的完全限定名,包,项目和类。因此,通常,如果程序/项目名为Histogram,并且HistogramDriver,HistogramMapper,HistogramReducer和您的main()在HistogramDriver中,则需要键入Histogram.HistogramDriver以使程序运行。 (除非你让你的jar可以运行,一开始需要额外的东西,制作.mdf和东西。)

答案 2 :(得分:0)

执行MapReduce作业时,不应将jar文件保留在HDFS中。确保Jar在本地路径中可用。输入路径和输出目录应该是HDFS的路径。