Hadoop 链接数过高导致的问题
运行时候报异常could only be replicated to 0 nodes instead of minReplication (=1). There are 1 datanode(s) running and no node(s) are excluded in this operation.
根据报错的意思来看,有1个datanode正在运行,而且该node是正常可用的,但是就是操作不成功。
上述的操作是指 上传一个文件到hdfs中,并不是所有的shell,命令都不可用。
检查:
1.存储的磁盘空间是否足够,这个可以用df -h 查看磁盘空间,也可以直接使用 hdfs dfsadmin -report 查看,,不再赘述
2.若是日志报告没有可用的节点,
There are no datanode(s) running and no node(s) are excluded in this operation.
这种情况一般是namenode格式化的时候有问题,或者防火墙的问题,在此处不赘述,别的博客的说明很多。
3.50010端口的连接数过高,这点很致命啊,我的问题就在这,lsof -i:50010 后,出来一大串 ,我的有532个(和自己的hdfs-site.xml的配置有关)然后发现都是同一个进程的链接,干掉该进程后启动成功。
原因:和以下几个参数有关
– dfs.namenode.handler.count
– NameNode用来处理来自DataNode的RPC请求的线程数量
– 建议设置为DataNode数量的10%,一般在10~200个之间
– 如设置太小,DataNode在传输数据的时候日志中会报告“connecton refused"信息
– 在NameNode上设定
– 默认值:10
– dfs.datanode.handler.count
– DataNode用来连接NameNode的RPC请求的线程数量
– 取决于系统的繁忙程度
– 设置太小会导致性能下降甚至报错
– 在DataNode上设定
– 默认值:3
– dfs.datanode.max.xcievers
– DataNode可以同时处理的数据传输连接数
– 默认值:256
– 建议值:4096