在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");
磁盘策略
当我们往 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
因篇幅问题不能全部显示,请点此查看更多更全内容