cat: ‘/output/*‘: No such file or directory 错误

主要报错代码如下,运行查看结果显示cat: '/output/*': No such file or directory 错误。

[2025-03-11 05:54:52.055]Container [pid=21342,containerID=container_1741697581161_0002_01_000002] is running 378255872B beyond the 'VIRTUAL' memory limit. Current usage: 159.2 MB of 1 GB physical memory used; 2.5 GB of 2.1 GB virtual memory used. Killing container.

这表明 Map 任务使用的虚拟内存超出了 YARN 为其分配的限制,导致容器被 YARN 杀死,最终作业失败。

在作业运行失败的情况下,/output 目录可能没有被正确创建或者没有生成结果文件。通常,只有当作业成功完成时,才会在指定的输出目录(这里是 /output)下生成结果文件。

解决办法

1. 增加容器的内存限制

可以通过修改 yarn-site.xml 和 mapred-site.xml 文件来增加容器的内存限制。

  • 在 yarn-site.xml 中添加或修改以下配置:
<property>
    <name>yarn.nodemanager.resource.memory-mb</name>
    <value>4096</value> <!-- 增加节点管理器的总可用内存,单位为 MB -->
</property>
<property>
    <name>yarn.scheduler.maximum-allocation-mb</name>
    <value>4096</value> <!-- 增加每个容器的最大可用内存,单位为 MB -->
</property>

  • 在 mapred-site.xml 中添加或修改以下配置:
<property>
    <name>mapreduce.map.memory.mb</name>
    <value>2048</value> <!-- 增加 Map 任务的内存分配,单位为 MB -->
</property>
<property>
    <name>mapreduce.map.java.opts</name>
    <value>-Xmx1638m</value> <!-- 增加 Map 任务 JVM 的堆内存大小,通常为 mapreduce.map.memory.mb 的 0.8 倍 -->
</property>
<property>
    <name>mapreduce.reduce.memory.mb</name>
    <value>2048</value> <!-- 增加 Reduce 任务的内存分配,单位为 MB -->
</property>
<property>
    <name>mapreduce.reduce.java.opts</name>
    <value>-Xmx1638m</value> <!-- 增加 Reduce 任务 JVM 的堆内存大小,通常为 mapreduce.reduce.memory.mb 的 0.8 倍 -->
</property>

修改完成后,重启 Hadoop 集群使配置生效:

stop-all.sh
sbin/start-all.sh
2. 重新运行作业

在修改配置并重启集群后,删除之前可能存在的 output 目录(如果有的话),然后重新运行 WordCount 程序:

hdfs dfs -rm -r /output
hadoop jar share/hadoop/mapreduce/hadoop-mapreduce-examples-*.jar wordcount /input /output
3. 检查作业运行情况

作业运行完成后,使用以下命令查看输出结果:

hdfs dfs -ls /output
hdfs dfs -cat /output/*

通过以上步骤,应该可以解决内存限制导致的作业失败问题,并成功生成 output 目录和结果文件。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值