Windows环境下eclipse提交到远程wordcount程序报错 at org.apache.hadoop.util.Shell.runCommand(Shell.java:545)

本文提供了解决使用Hadoop版本2.7远程连接Windows7时遇到的报错问题的方法,包括下载并正确配置winutils.exe文件以避免dll缺失错误,从而使得wordcount程序可以正常执行。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

远程hadoop2.7,本地的windows7
程序报错如下:
2015-09-28 22:04:21,423 WARN  [main] util.NativeCodeLoader (NativeCodeLoader.java:<clinit>(62)) - Unable to load native-hadoop library for your platform... using builtin-java classes where applicable
aaa
2015-09-28 22:04:22,973 INFO  [main] Configuration.deprecation (Configuration.java:warnOnceIfDeprecated(1173)) - session.id is deprecated. Instead, use dfs.metrics.session-id
2015-09-28 22:04:22,975 INFO  [main] jvm.JvmMetrics (JvmMetrics.java:init(76)) - Initializing JVM Metrics with processName=JobTracker, sessionId=
Exception in thread "main" ExitCodeException exitCode=-1073741515: 
at org.apache.hadoop.util.Shell.runCommand(Shell.java:545)
at org.apache.hadoop.util.Shell.run(Shell.java:456)
at org.apache.hadoop.util.Shell$ShellCommandExecutor.execute(Shell.java:722)
at org.apache.hadoop.util.Shell.execCommand(Shell.java:815)
at org.apache.hadoop.util.Shell.execCommand(Shell.java:798)
at org.apache.hadoop.fs.RawLocalFileSystem.setPermission(RawLocalFileSystem.java:728)
at org.apache.hadoop.fs.RawLocalFileSystem.mkOneDirWithMode(RawLocalFileSystem.java:486)
at org.apache.hadoop.fs.RawLocalFileSystem.mkdirsWithOptionalPermission(RawLocalFileSystem.java:526)
at org.apache.hadoop.fs.RawLocalFileSystem.mkdirs(RawLocalFileSystem.java:504)
at org.apache.hadoop.fs.FilterFileSystem.mkdirs(FilterFileSystem.java:305)
at org.apache.hadoop.mapreduce.JobSubmissionFiles.getStagingDir(JobSubmissionFiles.java:133)
at org.apache.hadoop.mapreduce.JobSubmitter.submitJobInternal(JobSubmitter.java:147)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1290)
at org.apache.hadoop.mapreduce.Job$10.run(Job.java:1287)
at java.security.AccessController.doPrivileged(Native Method)
at javax.security.auth.Subject.doAs(Unknown Source)
at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1657)
at org.apache.hadoop.mapreduce.Job.submit(Job.java:1287)
at org.apache.hadoop.mapreduce.Job.waitForCompletion(Job.java:1308)
at hadoop2.wordcount.main(wordcount.java:53)


解决办法:
       下载对应版本(或者更高版本)的winutils.exe复制到本地HDOOP_HOME下bin目录下,并保证winutils.exe双击运行没有报***.dll 缺失的错误。
          如果缺失***.dll下载对应的vs++ ,重启电脑运行winutils.exe不报错,wordcount即可执行。
   
<think>好的,我现在需要解决用户的问题,也就是在运行HadoopWordCount示例时遇到的“找不到或无法加载主类 org.apache.hadoop.examples.WordCount”错误。首先,我得仔细分析用户提供的引用信息,看看有没有相关的线索。 根据用户提供的引用内容[^1][^2][^3][^4],之前的问题大多涉及找不到MRAppMaster主类,而这次的问题是关于WordCount主类找不到。可能的原因可能类似,比如类路径配置不正确或者JAR文件缺失。 首先,我应该考虑用户是否正确指定了主类。Hadoop的示例JAR通常需要明确指定主类,尤其是在不同版本的Hadoop中,主类的路径可能有所变化。例如,用户使用的命令是否正确?比如是否应该使用类似`hadoop jar hadoop-mapreduce-examples-*.jar wordcount ...`这样的命令,其中“wordcount”作为参数传递,而不是作为主类名。如果用户错误地将主类写成了org.apache.hadoop.examples.WordCount,而实际上主类是org.apache.hadoop.examples.WordCount2或者其他,就会导致问题。 接下来,检查JAR文件是否存在。用户提供的引用中提到的是hadoop-mapreduce-examples-2.8.2.jar,但用户可能使用了不同版本的Hadoop,或者该JAR文件不在当前目录下。需要确认JAR文件路径是否正确,是否有执行权限。 另外,Hadoop环境配置也可能导致问题。例如,mapred-site.xml中的配置是否正确,是否指定了正确的框架名称(如设置为yarn)。如果配置错误,可能导致Hadoop无法正确找到所需的类路径。用户提到的引用中提到了修改mapred-site.xml,这可能涉及到设置mapreduce.application.classpath,确保所有必要的库都被包含进去。 还有可能是Hadoop的类路径未正确设置。用户需要检查Hadoop环境变量,特别是HADOOP_CLASSPATH,是否包含了示例JAR文件所在的目录。此外,Hadoop的版本兼容性也是一个问题,比如某些版本的Hadoop可能将示例类放在不同的包路径下。 最后,用户可能需要重新编译或重新获取示例JAR文件,特别是如果该文件在安装过程中被损坏或未正确生成的话。比如,通过重新构建Hadoop的示例模块来生成正确的JAR文件。 总结可能的解决步骤:1. 检查运行命令是否正确;2. 确认JAR文件存在且路径正确;3. 检查Hadoop配置,尤其是mapred-site.xml;4. 设置正确的类路径;5. 验证Hadoop安装完整性。</think>### 解决Hadoop WordCount报错“找不到或无法加载主类”的步骤 #### 1. **验证运行命令格式** - **错误示例**:`hadoop jar hadoop-mapreduce-examples.jar org.apache.hadoop.examples.WordCount ...` - **正确命令**:应直接使用`wordcount`作为程序入口参数,而非手动指定主类: ```bash hadoop jar hadoop-mapreduce-examples-*.jar wordcount /input /output ``` - 如果必须显式指定主类,需确认实际类名(如`org.apache.hadoop.examples.WordCount2`)[^4]。 #### 2. **检查JAR文件路径和完整性** - 确认示例JAR文件存在于Hadoop安装目录: ```bash ls $HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar ``` - 若文件缺失,需重新编译Hadoop源码或从官方渠道获取对应版本: ```bash mvn package -DskipTests # 在Hadoop源码目录中执行 ``` #### 3. **配置`mapred-site.xml`** - 修改`mapred-site.xml`,确保MapReduce框架配置正确: ```xml <configuration> <property> <name>mapreduce.framework.name</name> <value>yarn</value> </property> <property> <name>yarn.app.mapreduce.am.env</name> <value>HADOOP_MAPRED_HOME=${HADOOP_HOME}</value> </property> <property> <name>mapreduce.application.classpath</name> <value> $HADOOP_HOME/share/hadoop/mapreduce/*, $HADOOP_HOME/share/hadoop/mapreduce/lib/* </value> </property> </configuration> ``` 配置后同步到所有节点并重启YARN服务。 #### 4. **设置环境变量** - 在`hadoop-env.sh`中添加类路径: ```bash export HADOOP_CLASSPATH=$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar:$HADOOP_CLASSPATH ``` - 执行`source $HADOOP_HOME/etc/hadoop/hadoop-env.sh`使配置生效。 #### 5. **验证Hadoop安装** - 运行基础命令检查HDFS和YARN状态: ```bash hdfs dfsadmin -report # 查看HDFS状态 yarn node -list # 查看YARN节点 ``` - 若其他任务正常但WordCount失败,可尝试重新编译示例模块。 #### 6. **补充操作(针对特定版本)** - **Hadoop 3.x注意事项**:部分版本需手动将`hadoop-mapreduce-examples.jar`添加到`HADOOP_CLASSPATH`: ```bash export HADOOP_CLASSPATH=$HADOOP_HOME/share/hadoop/mapreduce/hadoop-mapreduce-client-jobclient-*-tests.jar:$HADOOP_CLASSPATH ``` --- ###
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值