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

时间:2016-09-29 07:51:01

标签: hadoop mapreduce hdfs data-ingestion

我的群集面临一个非常奇怪的问题。

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

  

所有数据节点都不好......正在中止。

这真的很奇怪,因为100 MB已经成为文件大小的门槛。

即使我尝试将文件大小增加1个字节(104857601字节),并尝试在HDFS中加载它,它也会因长堆栈跟踪而失败。主要说“所有数据节点都很糟糕......正在中止”

有没有人早些时候遇到类似的情况?

是否有可能错误地导致了这种行为?如果是,那么限制可以摄取的数据大小的任何配置都可以改变吗?

由于

2 个答案:

答案 0 :(得分:2)

"有没有人早些时候遇到类似的情况?"

是的,我有。您应该减少运行hadoop的用户的限制。 我在一个从apache网站下载它的linux机器上安装了hadoop,我的系统没有调整它,我得到了你的消息。这些是cloudera快速入门的设置,将您的限制与这些设置进行比较。

[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

答案 1 :(得分:0)

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