我不知道为什么我的Hadoop项目无法在命令行下执行
hadoop jar class-examples-1-1.0.0-SNAPSHOT.jar stock.intro.MR2Screener1 "companylistNASDAQ.csv" output/mr2_screener1
异常消息显示对我没有有用的信息= _ =
任何方向或想法?感谢
2016-11-03 09:14:13,448 INFO org.apache.hadoop.yarn.server.nodemanager.containermanager.monitor.ContainersMonitorImpl: Memory usage of ProcessTree 30206 for container-id container_1478145101159_0003_01_000001: 131.6 MB of 2 GB physical memory used; 1.6 GB of 4.2 GB virtual memory used
2016-11-03 09:14:14,084 WARN org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor: Exit code from container container_1478145101159_0003_01_000001 is : 1
2016-11-03 09:14:14,085 WARN org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor: Exception from container-launch with container ID: container_1478145101159_0003_01_000001 and exit code: 1
ExitCodeException exitCode=1:
at org.apache.hadoop.util.Shell.runCommand(Shell.java:578)
at org.apache.hadoop.util.Shell.run(Shell.java:481)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:763)
at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:213)
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:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
https://gist.github.com/anonymous/242e22801f289d38f30182ff44cd317d
尝试使用HDFS绝对路径的luanch命令
" hadoop jar class-examples-1-1.0.0-SNAPSHOT.jar stock.intro.MR2Screener1" /user/cloudera/companylistNASDAQ.csv" " /用户/ Cloudera的/输出/ mr2_screener1""
Runner to remedy this.
16/11/03 16:24:42 INFO input.FileInputFormat: Total input paths to process : 1
16/11/03 16:24:42 INFO mapreduce.JobSubmitter: number of splits:1
16/11/03 16:24:42 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1478145101159_0007
16/11/03 16:24:42 INFO impl.YarnClientImpl: Submitted application application_1478145101159_0007
16/11/03 16:24:43 INFO mapreduce.Job: The url to track the job: http://quickstart.cloudera:8088/proxy/application_1478145101159_0007/
16/11/03 16:24:43 INFO mapreduce.Job: Running job: job_1478145101159_0007
16/11/03 16:24:52 INFO mapreduce.Job: Job job_1478145101159_0007 running in uber mode : false
16/11/03 16:24:52 INFO mapreduce.Job: map 0% reduce 0%
16/11/03 16:24:52 INFO mapreduce.Job: Job job_1478145101159_0007 failed with state FAILED due to: Application application_1478145101159_0007 failed 2 times due to AM Container for appattempt_1478145101159_0007_000002 exited with exitCode: 1
For more detailed output, check application tracking page:http://quickstart.cloudera:8088/proxy/application_1478145101159_0007/Then, click on links to logs of each attempt.
Diagnostics: Exception from container-launch.
Container id: container_1478145101159_0007_02_000001
Exit code: 1
Stack trace: ExitCodeException exitCode=1:
at org.apache.hadoop.util.Shell.runCommand(Shell.java:578)
at org.apache.hadoop.util.Shell.run(Shell.java:481)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:763)
at org.apache.hadoop.yarn.server.nodemanager.DefaultContainerExecutor.launchContainer(DefaultContainerExecutor.java:213)
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:262)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
at java.lang.Thread.run(Thread.java:745)
答案 0 :(得分:0)
您只能在Eclipse中运行类示例,而不能在集群
上运行虽然这个问题在课堂上被问到并回答,但也许我并不完全清楚,所以让我再试一次。
我给你的代码不会在群集上运行,因为群集使用的是使用Java 1.7编译的Hadoop 2.6.0。
然而将在Eclipse中运行,因为Eclipse在独立模式下运行Hadoop并且您正在使用Java 1.8进行编译。
您提供的日志文件非常棒,但是当您按照作业输出中的链接到终端时获得了您提供的日志文件,最终导致您http://quickstart.cloudera:8042/logs/yarn-yarn-nodemanager-quickstart.cloudera.log
我赞赏你找到这个滚动日志,面向管理员。但是,这不是最有用的日志文件。
您需要使用作业中引用的日志文件(HW1,第1部分)。
在群集上运行时,用于调试的日志存储在
下的HDFS中/var/log/hadoop-yarn/apps/cloudera/logs
使用Hue
可以轻松读取日志文件我复制了错误并在应用程序日志中查找了第一个错误。这是:
2016-11-06 11:18:37,017 FATAL [main] org.apache.hadoop.mapreduce.v2.app.MRAppMaster: Error starting MRAppMaster
java.lang.UnsupportedClassVersionError: stock/intro/SectorCountWithFilter$StockSectorMapper : Unsupported major.minor version 52.0
Java虚拟机(JVM)在尝试读取支持Java版本的类文件时抛出UnsupportedClassVersionError。在我们的例子中,Hadoop集群JVM可以处理高达1.7的Java版本,并且您的代码是使用Java 1.8在Eclipse中编译的。
我们如何知道JVM的运行情况?好吧,看看错误,我们可以看到MRApplicationMaster启动时会出现此错误 - 因此MRApplicationMaster JVM无法链接您的类文件。如您所知,这是在您的作业开始处理时在Hadoop集群上启动的JVM。一旦放弃,其他任何事情都无关紧要。然后可能会出现各种错误,因为作业启动已中止,但您应该忽略这些错误并专注于出现的第一个错误。
我们可以得出结论,我们看到的主要错误是在集群上运行的Java版本与用于编译代码的Java版本之间存在不匹配。
我们如何解决?在我们的例子中,唯一要做的是在Eclipse中引用不同的JRE - 并在pom.xml中更改maven编译选项。
顺便说一句,不要在几乎所有关于这个错误的博客中传播可怕的建议:你不能只看你机器上的java版本来找出JVM运行的版本。使用$ java -version
无法解决我们的问题,并且充其量也为不可靠的解决方案提供了随意的基础。
在VM群集上运行的Hadoop构建使用java = 1.7.0_67。
你的老师......
答案 1 :(得分:0)
谷歌搜索“java主要次要版本”将为您提供确切的Java版本。 e.g。
java version numbers on stack overflow
这肯定是一个棘手的问题,但是理解这些信息的症状是很好的,因为它们非常神秘(出于一些无法解释的原因......为什么它不能用我们理解的语言告诉我们? )
DOES 在现实生活中发生!