hadoop运行到mapreduce.job: Running job后停止运行

本文解决在使用Hadoop2.7.1版本、openjdk8运行于VirtualBox5.0.6上的Ubuntu15.04伪分布环境下,执行特定命令时遇到的运行停滞问题。通过调整VirtualBox分配资源至适当水平,最终成功解决了问题。

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

版本信息:Hadoop2.7.1, openjdk 8,运行在VirtualBox 5.0.6的Ubuntu 15.04上,基本上是目前(2015.10.13)最新的版本;

问题,在伪分布环境下,运行 bin/hadoop jarshare/hadoop/mapreduce/hadoop-mapreduce-examples-2.7.1.jar grep input output'dfs[a-z.]+'(Hadoop2.7.1里的实例)时,运行到INFO mapreduce.Job: Running job:job_....之后,就不再运行了,没有错误提示,ubuntu也基本死了。

网上解决方法:
(1)有说服务未启动的。但jps后发现6个服务都启动了,包括NameNode,SecondaryNameNode, ResourceManager, DataNode, NodeManager和jps;
(2)有说hosts文件的问题。经检查/etc/hosts中两条 127.0.0.1 localhost和127.0.1.1 <username> (<username>显示的是我的用户名)很正常;
(3)有说yarn-site.xml等文件未配置正确。经检查与官网(http://hadoop.apache.org/docs/r2.7.1/hadoop-project-dist/hadoop-common/SingleCluster.html)上所说完全一致;

最终解决方法:
原来仅是VirtualBox创建Ubuntu时分配的资源太少了:
机器配置:内存4096M、硬盘500G、4个CPU、显存128M
默认分配:内存768M、硬盘8G、1个CPU、显存12M
改变后分配值:内存1987M(提示分配给虚拟内存最高的数值,即1988M时VitualBox就提醒我分配内存太高)、硬盘64G、2个CPU、36M显存
以上数值,非专业调整,都是我感觉着调整的,也未必合理。

最终示例顺利运行过去了。

2025-03-24 20:28:45,787 INFO client.DefaultNoHARMFailoverProxyProvider: Connecting to ResourceManager at /0.0.0.0:8032 2025-03-24 20:28:50,330 INFO mapreduce.JobResourceUploader: Disabling Erasure Coding for path: /tmp/hadoop-yarn/staging/hadoop/.staging/job_1742818172876_0003 2025-03-24 20:28:51,633 INFO input.FileInputFormat: Total input files to process : 1 2025-03-24 20:28:52,603 INFO mapreduce.JobSubmitter: number of splits:1 2025-03-24 20:28:53,502 INFO mapreduce.JobSubmitter: Submitting tokens for job: job_1742818172876_0003 2025-03-24 20:28:53,502 INFO mapreduce.JobSubmitter: Executing with tokens: [] 2025-03-24 20:28:54,024 INFO conf.Configuration: resource-types.xml not found 2025-03-24 20:28:54,025 INFO resource.ResourceUtils: Unable to find 'resource-types.xml'. 2025-03-24 20:28:54,286 INFO impl.YarnClientImpl: Submitted application application_1742818172876_0003 2025-03-24 20:28:54,511 INFO mapreduce.Job: The url to track the job: http://node1:8088/proxy/application_1742818172876_0003/ 2025-03-24 20:28:54,513 INFO mapreduce.Job: Running job: job_1742818172876_0003 2025-03-24 20:29:17,402 INFO mapreduce.Job: Job job_1742818172876_0003 running in uber mode : false 2025-03-24 20:29:17,404 INFO mapreduce.Job: map 0% reduce 0% 2025-03-24 20:29:18,478 INFO mapreduce.Job: Task Id : attempt_1742818172876_0003_m_000000_0, Status : FAILED Container launch failed for container_1742818172876_0003_01_000002 : org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService:mapreduce_shuffle does not exist at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62) at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45) at java.lang.reflect.Constructor.newInstance(Constructor.java:423) at org.apache.hadoop.yarn.api.records.impl.pb.SerializedExceptionPBImpl.inst
最新发布
03-25
<think>好的,我现在需要帮助用户解决Hadoop YARN中的InvalidAuxServiceException错误,特别是关于auxService:mapreduce_shuffle的问题。首先,我应该回忆一下自己之前处理过类似问题的经验,或者查找相关的资料。根据用户提供的引用,看起来问题通常与YARN的配置有关,尤其是yarn-site.xml文件中的设置。 首先,用户遇到的错误信息是org.apache.hadoop.yarn.exceptions.InvalidAuxServiceException: The auxService:mapreduce_shuffle does not exist。根据引用[4],这可能是因为yarn.nodemanager.aux-services属性没有正确配置为mapreduce_shuffle,或者对应的ShuffleHandler类没有指定。 接下来,我需要按照步骤来检查配置文件。第一步是检查yarn-site.xml,确认是否有正确的aux-services设置。用户提供的引用[4]中的配置示例是正确的,应该包含yarn.nodemanager.aux-services设置为mapreduce_shuffle,并且指定对应的类为org.apache.hadoop.mapred.ShuffleHandler。这里需要注意的是,有时候属性名称可能有拼写错误,比如引用[5]提到的错误配置是mapreduce.shuffle.class,而正确的应该是mapreduce_shuffle.class,中间的“.”可能被错误地替换成了“.”或者有其他拼写问题。 然后,需要确保修改配置文件后,这些更改已经分发到所有节点,并且重新启动了YARN服务。有时候即使修改了配置文件,如果没有重启服务,改动也不会生效。用户可能在这一步容易忽略,导致问题依旧存在。 另外,用户可能是在初次运行Hadoop作业时遇到这个问题,所以需要检查是否所有必要的服务都已经正确启动,比如ResourceManager和NodeManager。如果集群配置是分布式的,还需要确认所有节点的配置文件一致,没有遗漏或错误。 此外,用户提供的引用中有提到在运行jar文件时出现这个错误,特别是MapReduce作业。这可能意味着在提交作业时,集群配置有误,或者作业本身依赖的Shuffle服务未正确配置。因此,重点应放在YARN的aux服务配置上。 总结一下,解决方案应该包括以下几个步骤: 1. 检查并修正yarn-site.xml中的相关配置。 2. 确保配置文件分发到所有节点。 3. 重启YARN服务以应用配置更改。 4. 验证配置是否正确生效。 最后,还需要考虑生成相关问题,帮助用户进一步理解和排查问题,比如配置文件的其他可能错误,或者如何验证Shuffle服务是否正常运行。</think>### Hadoop YARN InvalidAuxServiceException: auxService:mapreduce_shuffle 解决方案 #### 问题原因 该错误表明 YARN 的 NodeManager 未正确配置辅助服务(Auxiliary Service),具体缺少 `mapreduce_shuffle` 服务。此服务是 MapReduce 任务数据传输的核心组件,负责 Reduce 任务从 Map 任务节点获取数据[^3][^4]。 #### 解决步骤 1. **修改 `yarn-site.xml` 配置** 在 Hadoop 集群的所有节点上,打开 `$HADOOP_HOME/etc/hadoop/yarn-site.xml`,添加以下配置: ```xml <configuration> <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> <property> <name>yarn.nodemanager.aux-services.mapreduce_shuffle.class</name> <value>org.apache.hadoop.mapred.ShuffleHandler</value> </property> </configuration> ``` **注意**:属性名必须严格匹配 `mapreduce_shuffle.class`(下划线),而非 `mapreduce.shuffle.class`(点号)[^5]。 2. **同步配置文件到所有节点** 使用 `scp` 或集群管理工具(如 Ansible)将修改后的配置文件分发到所有节点。 3. **重启 YARN 服务** ```bash $HADOOP_HOME/sbin/stop-yarn.sh $HADOOP_HOME/sbin/start-yarn.sh ``` 4. **验证配置生效** 检查 NodeManager 日志文件(`logs/yarn-*-nodemanager-*.log`),确认无相关错误,并搜索 `ShuffleHandler` 类加载成功的日志条目。 #### 扩展说明 - **为何需要 `mapreduce_shuffle`?** YARN 通过辅助服务机制支持不同计算框架,`mapreduce_shuffle` 是 MapReduce 专用的数据传输通道[^1]。 - **常见配置错误** 属性名拼写错误(如 `mapreduce.shuffle.class`)、未在所有节点同步配置、未重启服务[^5]。
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值