搜索
您的当前位置:首页正文

Hadoop疑难解决:could only be written to 0 of the 1 minReplication nodes. There are 1 datanode(s) running

来源:筏尚旅游网

在Hadoop上传文件时出现报错

打开后DEBUG日志后,查看到提示

Not enough replicas was chosen. Reason: {NO_REQUIRED_STORAGE_TYPE=1}

Choosing random from 0 available nodes on node /, scope=, excludedScope=null, excludeNodes=[172.17.0.5:2270]. numOfDatanodes=1

Datanode None is not chosen since required storage types are unavailable for storage type DISK.

通过根据Hadoop源代码,可以看到org.apache.hadoop.hdfs.DataStreamer这个类里面记录了排除的节点,在上传文件时导致无可用的datanode而无法上传。而以下几种情况都会导致datanode被排除:

System.setProperty("HADOOP_USER_NAME","root");
  1. 磁盘策略
    当我们往 HDFS 上写入新的数据块,DataNode 将会使用 volume 选择策略来为这个块选择存储的地方。
    通过参数 dfs.datanode.fsdataset.volume.choosing.policy 来设置.
    这个参数目前支持两种磁盘选择策略。

org.apache.hadoop.hdfs.server.datanode.fsdataset.RoundRobinVolumeChoosingPolicy org.apache.hadoop.hdfs.server.datanode.fsdataset.AvailableSpaceVolumeChoosingPolicy

第一种为集群默认的卷轮询方式,实现类:RoundRobinVolumeChoosingPolicy.java 第二种为卷可用空间优先方式,实现类:AvailableSpaceVolumeChoosingPolicy.java

因篇幅问题不能全部显示,请点此查看更多更全内容

Top