Hadoop-2.7.3集群卡在INFO mapreduce.Job: Running job: job_1457182697428_0001

该篇文章是在完全分布式的前提下。


看了网上的一些说法,主要有2种方法:


方法一:

说的是修改yarn-site.xml配置文件。

其主要属性如下:

(1)yarn.nodemanager.resource.memory-mb

表示该节点上YARN可使用的物理内存总量,默认是8192(MB),注意,如果你的节点内存资源不够8GB,则需要调减小这个值,而YARN不会智能的探测节点的物理内存总量。

(2)yarn.nodemanager.vmem-pmem-ratio

任务每使用1MB物理内存,最多可使用虚拟内存量,默认是2.1。

(3) yarn.nodemanager.pmem-check-enabled

是否启动一个线程检查每个任务正使用的物理内存量,如果任务超出分配值,则直接将其杀掉,默认是true。

(4) yarn.nodemanager.vmem-check-enabled

是否启动一个线程检查每个任务正使用的虚拟内存量,如果任务超出分配值,则直接将其杀掉,默认是true。

(5)yarn.scheduler.minimum-allocation-mb

单个任务可申请的最少物理内存量,默认是1024(MB),如果一个任务申请的物理内存量少于该值,则该对应的值改为这个数。

(6)yarn.scheduler.maximum-allocation-mb

单个任务可申请的最多物理内存量,默认是8192(MB)。

然后,在yarn-site.xml中添加:

  1. <property>  
  2.     <name>yarn.nodemanager.resource.memory-mb</name>  
  3.     <value>20480</value>  
  4. </property>  
  5. <property>  
  6.    <name>yarn.scheduler.minimum-allocation-mb</name>  
  7.    <value>2048</value>  
  8. </property>  
  9. <property>  
  10.     <name>yarn.nodemanager.vmem-pmem-ratio</name>  
  11.     <value>2.1</value>  
  12. </property>  
但是方法一我用了,还是没有解决问题,不知道是什么原因。


方法二:

 将mapred-site.xml配置文档修改如下:

 <configuration>
        <property>
            <name>mapreduce.job.tracker</name>
            <value>hdfs://192.168.8.4:8001</value>
            <final>true</final>
        </property>
        <property>
            <name>mapreduce.jobhistory.address</name>
            <value>Master:10020</value>
        </property>
        <property>
            <name>mapreduce.jobhistory.webapp.address</name>
            <value>Master:19888</value>
        </property>
</configuration>

192.168.8.4是我的Master


重启hadoop后,结果运行流畅。

运行的方式如下:

先执行:hdfs dfs -put /usr/local/hadoop/etc/hadoop/*.xml input

然后执行:hadoop jar /usr/local/hadoop/share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar grep input output 'dfs[a-z.]+'

<think>好的,我现在需要帮助用户解决关于Hadoop MapReduce作业在map 0% reduce 0%的问题。首先,用户提供了几个引用资料,我需要仔细分析这些引用中的信息,并结合自己的知识来给出详细的解答。 首先,引用[1]和[2]都提到了配置问题,尤其是mapred-site.xml和yarn-site.xml的配置。引用[1]中的mapred-site.xml配置了mapreduce.framework.name为yarn,这可能正确,但还需要检查其他相关配置是否正确。引用[2]指出yarn的配置可能不完整,特别是yarn.nodemanager.aux-services需要设置为mapreduce_shuffle,并且要确保没有拼写错误,比如configration标签是否正确。用户可能在这里有配置错误,导致NodeManager无法正确启动辅助服务,进而导致作业无法启动map或reduce任务。 引用[3]提到作业在调整配置后可能出现超时问题,比如SocketTimeoutException,这可能与网络配置或资源不足有关。如果作业长时间在0%,之后出现超时,可能说明某些节点无法正常通信,或者资源分配不足,导致任务无法启动。 引用[4]提到了本地模式下的配置错误,比如在代码中错误地添加了多余的Configuration对象,导致初始化失败。这可能提示用户检查他们的代码是否有类似的错误,尤其是在初始化InputSplit时是否正确处理了配置。 用户的问题是关于作业状态一直停留在map 0% reduce 0%,需要解析可能的原因和解决方案。结合引用和常见问题,可能的原因包括配置错误(如YARN服务未正确配置)、资源不足(内存或CPU不足)、网络问题、HDFS权限问题,或者日志和错误排查不足。 接下来,我需要按照用户要求的格式,分步骤详细说明可能的原因和解决方案,确保符合系统级指令,如正确使用LaTeX格式,生成相关问题等。同时,回答需要结构清晰,帮助用户逐步排查问题。 可能需要提到的步骤包括检查YARN配置,确认NodeManager的aux-services设置正确,检查资源管理器的日志,查看HDFS的健康状况,确保输入路径存在且正确,检查网络连通性,查看任务日志中的具体错误信息,以及调整资源配置参数如mapreduce.map.memory.mb等。 在生成相关问题的时候,需要考虑用户可能进一步的问题,比如如何查看日志,如何调整资源配置,如何处理超时错误等。 最后,确保所有引用都正确标注,比如引用[1]到[4]对应的解决方案点。</think>### Hadoop MapReduce Job状态解析 当Hadoop MapReduce作业长时间在$map\ 0\%\ reduce\ 0\%$状态时,通常表明任务未正常启动或资源分配受阻。以下是逐步排查的关键点: --- #### 1. **检查YARN配置** - **核心配置项**:确保`yarn-site.xml`中配置了正确的`yarn.nodemanager.aux-services`,且值为`mapreduce_shuffle`[^2]: ```xml <property> <name>yarn.nodemanager.aux-services</name> <value>mapreduce_shuffle</value> </property> ``` - **验证方式**:通过`yarn node -list`命令检查NodeManager是否正常注册到ResourceManager。若节点未注册,需检查日志`yarn-nodemanager.log`中的错误信息。 --- #### 2. **资源分配问题** - **内存与CPU限制**:检查`yarn-site.xml`中的资源上限配置: ```xml <property> <name>yarn.nodemanager.resource.memory-mb</name> <value>8192</value> <!-- 根据物理内存调整 --> </property> <property> <name>yarn.nodemanager.resource.cpu-vcores</name> <value>4</value> </property> ``` - **任务资源配置**:在`mapred-site.xml`中为Map/Reduce任务设置合理内存: ```xml <property> <name>mapreduce.map.memory.mb</name> <value>2048</value> </property> <property> <name>mapreduce.reduce.memory.mb</name> <value>4096</value> </property> ``` - **现象关联**:若资源不足,任务会持续等待分配容器,表现为长期$0\%$进度[^3]。 --- #### 3. **输入路径与权限问题** - **输入路径验证**:通过`hadoop fs -ls <input_path>`确认输入目录存在且可读。 - **权限修复**:使用`hadoop fs -chmod -R 755 <path>`调整权限。 --- #### 4. **网络与超时问题** - **防火墙检查**:确保集群节点间端口(如`8030-8033`, `8040-8042`, `8088`)开放。 - **超时调整**:若日志出现`SocketTimeoutException`,可增大超时阈值[^3]: ```xml <property> <name>yarn.nm.liveness-monitor.expiry-interval-ms</name> <value>600000</value> <!-- 默认600秒 --> </property> ``` --- #### 5. **日志分析** - **任务日志获取**:通过`yarn logs -applicationId <app_id>`获取完整日志。 - **关键错误定位**:在`stderr`日志中搜索`Exception`或`Error`,例如`ClassNotFoundException`可能表明依赖未打包。 --- #### 6. **本地模式调试** - **配置检查**:若使用本地模式(如测试环境),需确保未错误引入分布式配置,如代码中误用`Configuration`对象导致冲突[^4]。 - **本地运行验证**:通过`mapreduce.framework.name=local`强制本地执行,缩小问题范围。 --- ### 相关问题 1. 如何查看YARN应用程序的详细日志? 2. MapReduce作业出现`Container killed by YARN for exceeding memory limits`错误如何解决? 3. Hadoop集群节点间网络通信需要开放哪些端口? 4. 如何调整MapReduce任务的超时时间以避免失败?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值