1、更改项目的MANIFEST.MF(如果一键打包,系统会自动给你生成一个这样的文件,如果一步步的打包,在最后一项你可以选择使用自己的MANIFEST.MF文件,这个文件你可以让项目先自动生成一个到项目里,在项目根目录下,然后你再来更改)文件,在"Class-Path: "参数这里写上lib文件夹里的dom4j.jar的路径(Class-Path: /lib/dom4j.jar),然后依次Next,选择根据自己的MANIFEST.MF文件打包jar。但是这样的打包其实并没有将dom4j.jar打包进来,它需要在运行的时候将dom4j.jar放到打包的jar文件同目录下,也就是打包的jar在运行的时候来调用这个dom4j.jar。如果是执行单机程序,这样做肯定是可以的,但是在分布式平台上,这个dom4j.jar明显是不能被其他节点机共享的,所以此路不通!
(这里发现一个比较好玩的,就是在MANIFEST.MF文件里通过参数注明程序运行的主类,如“Main-Class: com.huamei.common.xmlParse“,注意和上面一样,冒号后面有空一格!这样打包之后,我们在命令运行jar的时候,就可以不用再加上主类名了,如”hadoop jar parse.jar /user/input /user/output“,而不用像以前命令”hadoop jar parse.jar com.huamei.common.xmlParse /user/input /user/output “一样,更加简短了)
2、这是在网上看到的,不知道他说这个因何而起,希望看到的盆友,帮我解惑。他说我们将dom4j.jar放到打包的jar(这里是直接打包,不经过第一个,因为第一个不行)同一目录下,然后执行命令"hadoop jar -dom4j.jar parse.jar /user/input /user/output",这个肯定是报错的,无论我将-xxx.jar放到哪里都是错的,但不知道这位高人为什么这么说。 希望大家解惑。
3、通过Ant来打包jar文件,在根目录下新建一个build.xml文件,然后写上打包的配置,之后即可打包。由于我对整个ant不是很了解,试了一下没成功,所以这里不赘述,网上资料很多,大家可以自己搜着试一下。
4、使用hadoop的DistributedCache,这个在org.apache.hadoop.filecache.DistributedCache包里,利用它可以临时将程序运行所需要的外部文件加载到集群上,包括.jar,.zip等等文件,对于jar文件,它会自动添加到ClassPath中,这样我们的程序就可以加载第三方jar包了。当然,你需要先将dom4j.jar上传到hdfs上,DistributedCache里的方法会获取这个hdfs路径。DistributedCache的详解请看:http://dongxicheng.org/mapreduce-nextgen/hadoop-distributedcache-details/,这个方法是非常好用的一种方法。
5、很笨拙的一个方法,那就是将dom4j.jar文件分别复制一份到各节点机$HADOOP_HOME/lib下,这样就可以自动加载了。
6、使用eclipse的插件来打包解决,它是FatJar插件,望采纳,谢谢。
去官网下一个hadoop-0.20.203.0rc1.tar.gz包,然后解压一下,
在解压出来的hadoop-core-0.20.203.0.jar里有org.apache.hadoop.mapreduce 包
~如果你认可我的回答,请及时点击【采纳为满意回答】按钮
~~手机提问的朋友在客户端右上角评价点【满意】即可。
~你的采纳是我前进的动力
~~o(∩_∩)o,记得好评和采纳,互相帮助,谢谢。
Hadoop|
Apache Pig|
Apache Kafka|
Apache Storm|
Impala|
Zookeeper|
SAS|
TensorFlow|
人工智能基础|
Apache Kylin|
Openstack|
Flink|
MapReduce|
大数据|
云计算|
用户登录
还没有账号?立即注册
用户注册
投稿取消
文章分类: |
|
还能输入300字
上传中....