无法将大于 100 MB 的文件加载到 HDFS

Not able to load files larger than 100 MB into HDFS

我的集群遇到了一个非常奇怪的问题。

每当我尝试将任何大于 100 MB(104857600 字节)的文件加载到 HDFS 时,它都会失败并出现以下错误:

All datanodes are bad... Aborting.

这真的很奇怪,因为 100 MB 已成为文件大小的阈值。

即使我尝试将文件大小增加 1 个字节(104857601 字节),并尝试将其加载到 HDFS 中,它也会失败并显示一个长堆栈跟踪。主要是说"All datanodes are bad... Aborting"

有没有人之前遇到过类似的情况?

是否有可能错误地更改了一些配置导致了这种行为?如果是,是否有任何限制我可以更改的可摄取数据大小的配置?

谢谢

如果您能够从堆栈跟踪中获取数据节点的更多详细信息,您应该能够停止作为守护进程之一的数据节点。 通过杀死或停止数据节点,您将获得可能已损坏、重新实例化的数据节点。基本上,您正在重新启动该特定数据节点的 jvm。 命令: 停止:bin/hadoop-daemon.sh stop datanode 开始:bin/hadoop-daemon.sh start datanode

"Has anybody faced similar situation earlier?"

是的,我有。您应该降低运行 hadoop 的用户的限制。 我在从 apache 网站下载的 linux 盒子上安装了 hadoop,但我的系统没有针对它进行调整,我收到了你的消息。这些是cloudera quick start中的设置,将你的限制与这些进行比较。

[cloudera@quickstart ~]$ ulimit -a 
core file size          (blocks, -c) 0
data seg size           (kbytes, -d) unlimited
scheduling priority             (-e) 0
file size               (blocks, -f) unlimited
pending signals                 (-i) 30494
max locked memory       (kbytes, -l) 64
max memory size         (kbytes, -m) unlimited
open files                      (-n) 1024
pipe size            (512 bytes, -p) 8
POSIX message queues     (bytes, -q) 819200
real-time priority              (-r) 0
stack size              (kbytes, -s) 10240
cpu time               (seconds, -t) unlimited
max user processes              (-u) 1024
virtual memory          (kbytes, -v) unlimited
file locks                      (-x) unlimited