在Hadoop平台上运行程序时,导入第三方类库的方法

    在将编写的MapReduce程序提交到Hadoop集群中运行时,往往需要导入第三方类库,否则很容易报出:Error: java.lang.ClassNotFoundException:异常,首先说一下以下四种解决方法:

 

(1) 将第三方jar包放在集群中每个节点$HADOOP_HOME/lib目录下或者JDK的ext目录下,其中$HAOOP_HOME为Hadoop的根目录。

 

 

      这种方法在linux下还可以写一个shell脚本,用scp或者rcp命令来实现,这脱离了java范畴,依赖操作系统,不好。

 

(2) 将所有的jar包解压缩,然后把他和源程序的类文件打包到一个jar包中,这种方法比较笨重,可以用程序去实现。

 

(3) 用DistributedCache .addFileToClassPath(Path file, Configuration conf)或者DistributedCache .addArchiveToClassPath(Path archive, Configuration conf) ,其中路径是HDFS上的一个路径,不要用HDFS://等类似的路径,而要用相对路径。

(4) 将第三方jar包和源程序类文件打包到一个jar包中,设置manifest.mf的classpath值,为jar包所在的路径,这个路径必须是相对应当前jar包的路径。

 

原理:

   主要借鉴了在提交作业到Haodop中时,hadoop寻找classpath的方式,寻找的地方来解决的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值