我的群集面临一个非常奇怪的问题。
每当我尝试将任何文件加载到大于100 MB(104857600字节)的HDFS时,它都会失败并显示以下错误:
所有数据节点都不好......正在中止。
这真的很奇怪,因为100 MB已经成为文件大小的门槛。
即使我尝试将文件大小增加1个字节(104857601字节),并尝试在HDFS中加载它,它也会因长堆栈跟踪而失败。主要说“所有数据节点都很糟糕......正在中止”
有没有人早些时候遇到类似的情况?
是否有可能错误地导致了这种行为?如果是,那么限制可以摄取的数据大小的任何配置都可以改变吗?
由于
答案 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