解决 java.lang.NoSuchMethodError: org.apache.hadoop.fs.FSOutputSummer.(Ljava/util/zip/Checksum;II)V

1 篇文章 0 订阅
1 篇文章 0 订阅


环境: linux部署hdfs2.6.0集群,windows部署开发环境


为了学习mahout,使用网上的HdfsDAO读写远程hdfs时,ls和mkdir测试通过,但上传文件报错:

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.fs.FSOutputSummer.<init>(Ljava/util/zip/Checksum;II)V
	at org.apache.hadoop.hdfs.DFSOutputStream.<init>(DFSOutputStream.java:1553)
	at org.apache.hadoop.hdfs.DFSOutputStream.<init>(DFSOutputStream.java:1582)
	at org.apache.hadoop.hdfs.DFSOutputStream.newStreamForCreate(DFSOutputStream.java:1614)
	at org.apache.hadoop.hdfs.DFSClient.create(DFSClient.java:1465)
	at org.apache.hadoop.hdfs.DFSClient.create(DFSClient.java:1390)
	at org.apache.hadoop.hdfs.DistributedFileSystem$6.doCall(DistributedFileSystem.java:394)
	at org.apache.hadoop.hdfs.DistributedFileSystem$6.doCall(DistributedFileSystem.java:390)
	at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
	at org.apache.hadoop.hdfs.DistributedFileSystem.create(DistributedFileSystem.java:390)
	at org.apache.hadoop.hdfs.DistributedFileSystem.create(DistributedFileSystem.java:334)
	at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:909)
	at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:890)
	at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:787)
	at org.apache.hadoop.fs.FileSystem.create(FileSystem.java:776)
	at org.playground.HadoopDFSFileReadWrite.main(HadoopDFSFileReadWrite.java:37)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:497)
	at com.intellij.rt.execution.application.AppMain.main(AppMain.java:140)
解决方案:

参考了: http://softdevblogs.com/ 上的相关帖子

发现是 原有的pom中依赖的hadoop2.6因为与mahout 0.11.0依赖的2.4.1版而冲突,实际使用了2.4.1与线上服务器不符

排除掉mahout 0.11.0间接依赖的hadoop设置,只用自己直接设置的hadoop版本号

如:

		<!--	mahout -->
		<dependency>	
				<groupId>org.apache.mahout</groupId>	
				<artifactId>mahout-examples</artifactId>	
				<version>0.11.0</version>
				<exclusions>
					<exclusion>
						<artifactId>jdk.tools</artifactId>
						<groupId>jdk.tools</groupId>
					</exclusion>
					<exclusion>
						<artifactId>hadoop-client</artifactId>
						<groupId>org.apache.hadoop</groupId>
					</exclusion>
				</exclusions>
		</dependency>	
		<dependency>
				<groupId>org.apache.mahout</groupId>
				<artifactId>mahout-math</artifactId>
				<version>0.11.0</version>
		</dependency>
		<dependency>
				<groupId>org.apache.mahout</groupId>
				<artifactId>mahout-hdfs</artifactId>
				<version>0.11.0</version>
				<exclusions>
					<exclusion>
						<artifactId>hadoop-client</artifactId>
						<groupId>org.apache.hadoop</groupId>
					</exclusion>
				</exclusions>
		</dependency>
		<dependency>
			<groupId>org.apache.hadoop</groupId>
			<artifactId>hadoop-common</artifactId>
			<version>2.6.0</version>
			<exclusions>
				<exclusion>
					<groupId>jdk.tools</groupId>
					<artifactId>jdk.tools</artifactId>
				</exclusion>
				<exclusion>
					<artifactId>jasper-compiler</artifactId>
					<groupId>tomcat</groupId>
				</exclusion>
				<exclusion>
					<artifactId>jasper-runtime</artifactId>
					<groupId>tomcat</groupId>
				</exclusion>
				<exclusion>
					<artifactId>servlet-api</artifactId>
					<groupId>javax.servlet</groupId>
				</exclusion>
				<exclusion>
					<artifactId>jsp-api</artifactId>
					<groupId>javax.servlet.jsp</groupId>
				</exclusion>
			</exclusions>
		</dependency>
		
		<dependency>
				<groupId>org.apache.hadoop</groupId>	
				<artifactId>hadoop-hdfs</artifactId>	
				<version>2.6.0</version>	
				<exclusions>	
						<exclusion>	
								<artifactId>jdk.tools</artifactId>	
								<groupId>jdk.tools</groupId>	
						</exclusion>	
				</exclusions>	
		</dependency>


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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值