目录

  • 一、打包jar包以及上传的步骤
  • 在eclipse把mapreduce程序进行打包
  • 通过Xshell把JAR包上传到linux
  • 二、执行jar包的注意事项
  • 出现jdk版本异常的问题
  • 情况描述
  • 原因
  • 解决办法
  • 执行jar包命令主类名问题
  • 问题描述
  • 原因一及解决办法
  • 原因二及解决办法



————————————————————————————————————————

一、打包jar包以及上传的步骤

执行mapreduce程序时,我们常常需要按自己的需求去写mapreduce程序。eclipse是我们最常用的java编辑工具,一下就用eclipse为例。

在eclipse把mapreduce程序进行打包

第一步:选中mapreduce程序所在的项目,点击左上角File > Export

mapreduce中小文件合并 mapreduce打包_mapreduce中小文件合并


第二步:弹出窗口中选中JAVA > JAR file,接着Next

mapreduce中小文件合并 mapreduce打包_mapreduce中小文件合并_02


第三步:按图中顺序进行操作,其中第四步是JAR包的保存目录(上传JAR包时打开该目录选择JAR包即可)

mapreduce中小文件合并 mapreduce打包_精华_03


第四步:无需对窗口进行操作,直接Next下一步。

mapreduce中小文件合并 mapreduce打包_jar包_04


第五步:选择Browse对MapReduce程序的主类名进行指定。

mapreduce中小文件合并 mapreduce打包_类名_05


最后选择OK,JAR包便保存到你自己指定的目录里了。

mapreduce中小文件合并 mapreduce打包_jar包_06

通过Xshell把JAR包上传到linux

小白刚上手大多使用虚拟机进行操作,那就需要用Xshell连接到你需要进行操作的linux,并使用rz指令然后选择你保存jar包的目录上传你需要的jar包文件。

二、执行jar包的注意事项

一般情况下,按上述步骤即可对jar包进行打包。但是有了jar包后我就需要对它进行执行,执行过程有些地方的细节容易被忽略掉,以下就讨论其中两个重要的操作细节。(java编辑器还是以eclipse为例)

出现jdk版本异常的问题

情况描述

:在执行jar包程序时,出现如下图的jdk版本异常;

mapreduce中小文件合并 mapreduce打包_jar包_07

原因

linux环境下的jdk版本与eclipse所用来打包jar包的jdk版本不兼容。譬如:eclipse下用jdk11进行打包,而linux下用的是jdk1.8;这样jdk高低版本不兼容的情况下就会导致jdk版本异常。

解决办法

既然jdk版不兼容,那就把jdk的版本调到兼容了就可以了。

  1. 查看linux环境下的jdk版本,把eclipse下调为linux下可以兼容的版本,一般就是高版本兼容低版本的。那么,我们要怎么怎么换eclipse的jdk版本呢?步骤如下:
    选中jar包所在的项目文件,然后右击选择最后一个properties,接着按下图顺序进行操作即可;
  2. mapreduce中小文件合并 mapreduce打包_类名_08

  3. 假如不按上面那个解决办法的话,就换一种思路来解决。我们把linux环境下的jdk版本调到和eclipse所用的jdk版本兼容即可,这样就需要重装jdk了,较上述办法略麻烦。本人建议用第一种较为方便快捷!

执行jar包命令主类名问题

问题描述

把刚刚重写过的wordcount程序打包并执行程序,却出现如下图执行异常,正确键入命令后却发现系统没有和你想象的套路出牌。

mapreduce中小文件合并 mapreduce打包_精华_09

原因一及解决办法

在不同开发环境下,命令执行也略有差别,但一般情况就是图片里的命令操作,特殊情况就换一下命令即可,就是中间那个WordCount命令写为jar包项目文件名.包名.主类名。如下:

mapreduce中小文件合并 mapreduce打包_类名_10


那么,命令行输入则为:

mapreduce中小文件合并 mapreduce打包_类名_11

原因二及解决办法

倘若按照第一种办法还是下面这种情况:

mapreduce中小文件合并 mapreduce打包_jar包_12


那我就跟大家说说一个很重要的原因了,回到上面打包jar包步骤的第五步,在那里假如我们指定了jar包程序的主类名时,那么在命令行里就无需再一次指定主类名了,所以主类名这个命令就可以省略掉了,如下图:

mapreduce中小文件合并 mapreduce打包_mapreduce中小文件合并_13


这样就执行成功了!!!那么去查看输出结果吧。