简体   繁体   English

致命[主要] org.apache.hadoop.mapreduce.v2.app.MRAppMaster:启动MRAppMaster java.lang.NoClassDefFoundError时出错

[英]FATAL [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Error starting MRAppMaster java.lang.NoClassDefFoundError

I am new to hadoop. 我是hadoop的新手。

I am trying to setup Giraph to run on hadoop-2.6.5 with yarn. 我正在尝试将Giraph设置为在带有纱线的hadoop-2.6.5上运行。

When I submit the Giraph job the job gets submitted successfully but fails and I get below log in container syslog: 当我提交Giraph作业时,该作业被成功提交但失败,并且在容器syslog中获得以下日志:

2018-01-30 12:09:01,190 INFO [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Created MRAppMaster for application appattempt_1517293264136_0002_000002 2018-01-30 12:09:01,437 WARN [main] org.apache.hadoop.util.NativeCodeLoader: Unable to load native-hadoop library for your platform... using builtin-java classes where applicable 2018-01-30 12:09:01,471 INFO [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Executing with tokens: 2018-01-30 12:09:01,471 INFO [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Kind: YARN_AM_RM_TOKEN, Service: , Ident: (appAttemptId { application_id { id: 2 cluster_timestamp: 1517293264136 } attemptId: 2 } keyId: -1485907628) 2018-01-30 12:09:01,583 INFO [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Using mapred newApiCommitter. 2018-01-30 12:09:01,190信息[主] org.apache.hadoop.mapreduce.v2.app.MRAppMaster:为应用程序appattempt_1517293264136_0002_000002创建MRAppMaster 2018-01-30 12:09:01,437 WARN [主] org.apache .hadoop.util.NativeCodeLoader:无法在适用的平台上使用内置的Java类为您的平台加载本机Hadoop库... 2018-01-30 12:09:01,471 INFO [main] org.apache.hadoop.mapreduce.v2 .app.MRAppMaster:使用令牌执行:2018年1月30日12:09:01,471 INFO [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster:种类:YARN_AM_RM_TOKEN,服务:,标识:(appAttemptId {application_id {id:2 cluster_timestamp:1517293264136} tryId:2} keyId:-1485907628)2018-01-30 12:09:01,583信息[main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster:使用映射的newApiCommitter。 2018-01-30 12:09:02,154 INFO [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: OutputCommitter set in config null 2018-01-30 12:09:02,207 FATAL [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Error starting MRAppMaster java.lang.NoClassDefFoundError: io/netty/buffer/ByteBufAllocator at org.apache.giraph.bsp.BspOutputFormat.getOutputCommitter(BspOutputFormat.java:62) at org.apache.hadoop.mapreduce.v2.app.MRAppMaster$1.call(MRAppMaster.java:470) at org.apache.hadoop.mapreduce.v2.app.MRAppMaster$1.call(MRAppMaster.java:452) at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.callWithJobClassLoader(MRAppMaster.java:1541) at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.createOutputCommitter(MRAppMaster.java:452) at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.serviceInit(MRAppMaster.java:371) at org.apache.hadoop.service.AbstractService.init(AbstractService.java:163) at org.apache.hadoop.mapreduce.v2.app.MRAppMaster$4.run(MRAppMaster.java:1499) at java.security.AccessControlle 2018-01-30 12:09:02,154 INFO [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster:OutputCommitter在配置中设置为null 2018-01-30 12:09:02,207 FATAL [main] org.apache .hadoop.mapreduce.v2.app.MRAppMaster:启动MRAppMaster java.lang.NoClassDefFoundError时出错:org / apache.giraph.bsp.BspOutputFormat.getOutputCommitter(BspOutputFormat.java:62)上的io / netty / buffer / ByteBufAllocator org.apache.hadoop.mapreduce.v2.app.MRAppMaster $ 1.call(MRAppMaster.java:452)上的.hadoop.mapreduce.v2.app.MRAppMaster $ 1.call(MRAppMaster.java:470)在org.apache.hadoop上org.apache.hadoop.mapreduce.v2.app.MRAppMaster.createOutputCommitter(MRAppMaster.java:452)的org.apache.hadoop.mapreduce.v2的.mapreduce.v2.app.MRAppMaster.callWithJobClassLoader(MRAppMaster.java:1541) org.apache.hadoop.service.AbstractService.init(AbstractService.java:163)上的.app.MRAppMaster.serviceInit(MRAppMaster.java:371),org.apache.hadoop.mapreduce.v2.app.MRAppMaster $ 4.run( MRAppMaster.java:1499),位于java.security.AccessControlle r.doPrivileged(Native Method) at javax.security.auth.Subject.doAs(Subject.java:422) at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1692) at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.initAndStartAppMaster(MRAppMaster.java:1496) at org.apache.hadoop.mapreduce.v2.app.MRAppMaster.main(MRAppMaster.java:1429) Caused by: java.lang.ClassNotFoundException: io.netty.buffer.ByteBufAllocator at java.net.URLClassLoader.findClass(URLClassLoader.java:381) at java.lang.ClassLoader.loadClass(ClassLoader.java:424) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331) at java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 13 more 2018-01-30 12:09:02,209 INFO [main] org.apache.hadoop.util.ExitUtil: Exiting with status 1 位于org.apache.hadoop的javax.security.auth.Subject.doAs(Subject.java:422)的r.doPrivileged(本机方法),位于org.apache.hadoop的UserGroupInformation.doAs(UserGroupInformation.java:1692)。 org.apache.hadoop.mapreduce.v2.app.MRAppMaster.main(MRAppMaster.java:1429)上的mapreduce.v2.app.MRAppMaster.initAndStartAppMaster(MRAppMaster.java:1496)原因:java.lang.ClassNotFoundException:io。位于sun.misc.Launcher $ AppClassLoader.loadClass(Launcher.java)上的java.net.URLClassLoader.findClass(URLClassLoader.java:381)上的netty.buffer.ByteBufAllocator,位于java.lang.ClassLoader.loadClass(ClassLoader.java:424)上的netty.buffer。 331)at java.lang.ClassLoader.loadClass(ClassLoader.java:357)...还有13个2018-01-30 12:09:02,209信息[main] org.apache.hadoop.util.ExitUtil:以状态1退出

Diagnosis in logs shows following log: 日志中的诊断显示以下日志:

Application application_1517293264136_0002 failed 2 times due to AM Container for appattempt_1517293264136_0002_000002 exited with exitCode: 1 For more detailed output, check application tracking page: http://172.16.0.218:8088/proxy/application_1517293264136_0002/Then , click on links to logs of each attempt. 应用程序application_1517293264136_0002因AM的appattempt_1517293264136_0002_000002的AM容器而失败了两次,并退出了exitCode:1有关更详细的输出,请检查应用程序跟踪页面: http ://172.16.0.218:8088/proxy/application_1517293264136_0002/Then,单击指向每次尝试日志的链接。 Diagnostics: Exception from container-launch. 诊断:容器启动异常。 Container id: container_1517293264136_0002_02_000001 Exit code: 1 Stack trace: ExitCodeException exitCode=1: at org.apache.hadoop.util.Shell.runCommand(Shell.java:575) at org.apache.hadoop.util.Shell.run(Shell.java:478) at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:766) at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:212) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:302) at org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:82) at java.util.concurrent.FutureTask.run(FutureTask.java:266) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) at java.lang.Thread.run(Thread.java:745) Container exited with a non-zero exit code 1 Failing this attempt. 容器ID:container_1517293264136_0002_02_000001退出代码:1堆栈跟踪:ExitCodeException exitCode = 1:在org.apache.hadoop.util.Shell.runCommand(Shell.java:575)在org.apache.hadoop.util.Shell.run(Shell。的org.apache.hadoop.util.Shell $ ShellCommandExecutor.execute(Shell.java:766)处的org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:212)处的Java:478) .apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(ContainerLaunch.java:302)位于org.apache.hadoop.yarn.server.nodemanager.containermanager.launcher.ContainerLaunch.call(java: 82)at java.util.concurrent.FutureTask.run(FutureTask.java:266)at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)at java.util.concurrent.ThreadPoolExecutor $ Worker.run(ThreadPoolExecutor .java:617)at java.lang.Thread.run(Thread.java:745)容器退出,退出代码为非零1尝试失败。 Failing the application. 应用程序失败。

The class it is failing at is io/netty/buffer/ByteBufAllocator which is in netty-all jar: https://mvnrepository.com/artifact/io.netty/netty-all 它失败的类是io/netty/buffer/ByteBufAllocator ,它位于netty-all jar中: https : io/netty/buffer/ByteBufAllocator

From other questions I have tried adding the jar in HADOOP_CLASSPATH. 从其他问题,我尝试将罐子添加到HADOOP_CLASSPATH中。

Yogin-Patel:hadoop yoginpatel$ echo $HADOOP_CLASSPATH
/Users/yoginpatel/Downloads/gradle-4.3/caches/modules-2/files-2.1/io.netty/netty-all/4.0.43.Final/9781746a179070e886e1fb4b1971a6bbf02061a4/netty-all-4.0.43.Final.jar
Yogin-Patel:hadoop yoginpatel$ 

It shows up in hadoop classpath as well. 它也显示在hadoop classpath中。

Yogin-Patel:hadoop yoginpatel$ hadoop classpath
/Users/yoginpatel/hadoop/etc/hadoop:/Users/yoginpatel/hadoop/share/hadoop/common/lib/*:/Users/yoginpatel/hadoop/share/hadoop/common/*:/Users/yoginpatel/hadoop/share/hadoop/hdfs:/Users/yoginpatel/hadoop/share/hadoop/hdfs/lib/*:/Users/yoginpatel/hadoop/share/hadoop/hdfs/*:/Users/yoginpatel/hadoop/share/hadoop/yarn/lib/*:/Users/yoginpatel/hadoop/share/hadoop/yarn/*:/Users/yoginpatel/hadoop/share/hadoop/mapreduce/lib/*:/Users/yoginpatel/hadoop/share/hadoop/mapreduce/*:/Users/yoginpatel/Downloads/gradle-4.3/caches/modules-2/files-2.1/io.netty/netty-all/4.0.43.Final/9781746a179070e886e1fb4b1971a6bbf02061a4/netty-all-4.0.43.Final.jar:/contrib/capacity-scheduler/*.jar
Yogin-Patel:hadoop yoginpatel$ 

I am trying to setup in development environment. 我正在尝试在开发环境中进行设置。 This is single node setup. 这是单节点设置。

I have even tried 我什至尝试过

job.addFileToClassPath(new Path("/Users/yoginpatel/Downloads/gradle-4.3/caches/modules-2/files-2.1/io.netty/netty-all/4.0.43.Final/9781746a179070e886e1fb4b1971a6bbf02061a4/netty-all-4.0.43.Final.jar"));

None of the approaches helped. 这些方法都无济于事。 How do I make hadoop node get the necessary jar accessed? 如何使hadoop节点访问必要的jar?

This is a GiraphJob submit code which would submit map reduce job to the cluster: 这是一个GiraphJob提交代码,该代码将地图减少作业提交到集群:

    @Test
    public void testPageRank() throws IOException, ClassNotFoundException, InterruptedException {

        GiraphConfiguration giraphConf = new GiraphConfiguration(getConf());
        giraphConf.setWorkerConfiguration(1,1,100);
        GiraphConstants.SPLIT_MASTER_WORKER.set(giraphConf, false);

        giraphConf.setVertexInputFormatClass(JsonLongDoubleFloatDoubleVertexInputFormat.class);
        GiraphFileInputFormat.setVertexInputPath(giraphConf,
                                                 new Path("/input/tiny-graph.txt"));
        giraphConf.setVertexOutputFormatClass(IdWithValueTextOutputFormat.class);

        giraphConf.setComputationClass(PageRankComputation.class);

        GiraphJob giraphJob = new GiraphJob(giraphConf, "page-rank");
        giraphJob.getInternalJob().addFileToClassPath(new Path("/Users/yoginpatel/Downloads/gradle-4.3/caches/modules-2/files-2.1/io.netty/netty-all/4.0.43.Final/9781746a179070e886e1fb4b1971a6bbf02061a4/netty-all-4.0.43.Final.jar"));

        FileOutputFormat.setOutputPath(giraphJob.getInternalJob(),
                                       new Path("/output/page-rank2"));
        giraphJob.run(true);
    }

    private Configuration getConf() {
        Configuration conf = new Configuration();
        conf.set("fs.defaultFS", "hdfs://localhost:9000");

        conf.set("yarn.resourcemanager.address", "localhost:8032");

        // framework is now "yarn", should be defined like this in mapred-site.xm
        conf.set("mapreduce.framework.name", "yarn");
        return conf;
    }

我通过将带有依赖项的giraph的jar放在hadoop lib路径中来使其工作:

cp giraph-1.3.0-SNAPSHOT-for-hadoop-2.6.5-jar-with-dependencies.jar ~/hadoop/share/hadoop/mapreduce/lib/

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

相关问题 无法找到或加载主 class org.apache.hadoop.mapreduce.v2.app.MRAppMaster - Could not find or load main class org.apache.hadoop.mapreduce.v2.app.MRAppMaster sqoop:java.lang.NoClassDefFoundError:org / apache / hadoop / mapreduce / InputFormat - sqoop: java.lang.NoClassDefFoundError: org/apache/hadoop/mapreduce/InputFormat 线程“ main”中的异常java.lang.NoClassDefFoundError:org / apache / hadoop / mapreduce / RecordReader - Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/hadoop/mapreduce/RecordReader GridGain错误:java.lang.NoClassDefFoundError:org / apache / hadoop / mapreduce / JobContext - GridGain Error : java.lang.NoClassDefFoundError: org/apache/hadoop/mapreduce/JobContext Hadoop 1.2.1 - mapreduce 编译期间的“java.lang.NoClassDefFoundError: org/apache/hadoop/mapred/JobConf” - Hadoop 1.2.1 - "java.lang.NoClassDefFoundError: org/apache/hadoop/mapred/JobConf" during mapreduce compilation 在 Hadoop 2.6.0 到 2.7.1 升级上启动 MRAppMaster 时出现 NoClassDefFoundError - NoClassDefFoundError when starting MRAppMaster on Hadoop 2.6.0 to 2.7.1 upgrade Hadoop 2.4:java.lang.NoClassDefFoundError:org / apache / hcatalog / mapreduce / InputJobInfo - Hadoop 2.4: java.lang.NoClassDefFoundError: org/apache/hcatalog/mapreduce/InputJobInfo java.lang.NoClassDefFoundError org.apache.hadoop.hbase.mapreduce.ImportTsv - java.lang.NoClassDefFoundError org.apache.hadoop.hbase.mapreduce.ImportTsv Hadoop / Eclipse - 线程“main”中的异常java.lang.NoClassDefFoundError:org / apache / hadoop / fs / FileSystem - Hadoop/Eclipse - Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/hadoop/fs/FileSystem 线程“main”中的异常 java.lang.NoClassDefFoundError: org/apache/hadoop/tracing/SpanReceiverHost - Exception in thread “main” java.lang.NoClassDefFoundError: org/apache/hadoop/tracing/SpanReceiverHost
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM