我已经设置了一个用于测试/学术建议的小型集群,我有3个节点,其中一个同时充当namenode和datanode(以及secondarynamenode)。
我上传了60gb的文件(大约650万个文件),上传开始变得非常慢,所以我在互联网上看到,我可以停止主机上的secondary namenode服务,目前它对任何东西都没有影响。重新启动所有3台计算机后,我的两个datanode显示0块(尽管在web界面中显示磁盘使用情况),即使两个namenodes服务都在运行。有问题的节点之一就是运行namenode的节点,所以我猜这不是网络问题。
有没有办法让这些积木再次被识别(没有重新开始,这花了大约两周的时间上传)
更新
再次重新启动半小时后,日志中显示:
2018-03-01 08:22:50212 info org.apache.hadoop.hdfs.server.datanode.datanode:未成功发送块报告0x199d1a180e357c12,包含1个存储报告,其中我们发送了0个。报告总共有6656617个块,使用了0个rpc。这需要679毫秒来生成,而rpc和nn处理则需要94毫秒。没有收到命令。2018-03-01 08:22:50212警告org.apache.hadoop.hdfs.server.datanode.datanode:offerservice java.io.eofexception中的ioexception:本地主机之间的文件结束异常为:“warpcore/192.168.15.200”;目标主机是:“warpcore”:9000;:java.io.eofexception;有关详细信息,请参阅:http://wiki.apache.org/hadoop/eofexception
还有eof堆栈跟踪,在搜索网页后我发现了这个[http://community.cloudera.com/t5/cdh-manual-installation/cdh-5-5-0-datanode-failed-to-send-a-large-block-report/m-p/34420]但还是不明白怎么解决这个问题。报表块太大,需要拆分,但我不知道如何或在何处配置。我´我在谷歌上搜索。。。
1条答案
按热度按时间huus2vyu1#
问题似乎是namenode上的ram不足,作为一种解决方法,我向namenode配置中添加了更多的目录,就好像我有多个磁盘一样,并按照这里注解中的说明手动重新平衡了文件。由于hadoop3.0分别报告每个磁盘datenode能够报告并且我能够检索文件,这是一个丑陋的解决方法,不适合生产,但对于我的学术目的来说已经足够好了。一个有趣的副作用是datanode多次报告可用磁盘空间,这可能会导致严重的生产问题。似乎更好的解决方案是使用har来减少这里和这里所描述的块的数量