在hadoop集群(分布式集群)中执行mapreduce作业时出现以下错误:
我在Yarn的应用程序日志中发现了下面的错误,其中映射器失败了。
java.lang.NoSuchMethodError: org/apache/hadoop/mapreduce/util/MRJobConfUtil.setTaskLogProgressDeltaThresholds(Lorg/apache/hadoop/conf/Configuration;)V (loaded from file:/data/hadoop/yarn/usercache/hdfs-user/appcache/application_1671477750397_2609/filecache/11/job.jar/job.jar by sun.misc.Launcher$AppClassLoader@8bf41861) called from class org.apache.hadoop.mapred.TaskAttemptListenerImpl
hadoop版本为hadoop 3.3.0
这个方法在那个版本中存在,但在3.0.0中不存在
因此,您需要使用该版本的hadoop-client
依赖,而不是3.0.0-cdh6...
。同时,用compileOnly
代替implementation
。这样,它就不会与YARN在其类路径中已经拥有的内容冲突。
同样,spark-core
也会有同样的问题,如果你的应用程序中有Spark,那么使用它,而不是MapReduce函数。
运行gradle dependencies
,然后搜索hadoop库并确保它们是3.3.0