2017-10-26 4 views
0

何が変わったのか、突然このエラーが発生しました。hdfs:十分なレプリカを配置できませんでした:予想されるサイズは2ですが、ストレージタイプは0個しか選択できません。

Hdfsはドッキング・クラスタ(1 rm + 2ノード)上で実行されています。
は、コンテナ内で正常に動作するため、データノードに問題はありません。
ホストマシンからhdfsにファイルをコピーするときに、コードまたはhdfsコマンドでスローされます。

エラースタックはhadoop-root-namenode-master.logからのものです。

2017-10-26 09:18:05,102 WARN org.apache.hadoop.hdfs.protocol.BlockStoragePolicy: Failed to place enough replicas: expected size is 2 but only 0 storage types can be selected (replication=2, selected=[], unavailable=[DISK], removed=[DISK, DISK], policy=BlockStoragePolicy{HOT:7, storageTypes=[DISK], creationFallbacks=[], replicationFallbacks=[ARCHIVE]}) 
2017-10-26 09:18:05,102 WARN org.apache.hadoop.hdfs.server.blockmanagement.BlockPlacementPolicy: Failed to place enough replicas, still in need of 2 to reach 2 (unavailableStorages=[DISK], storagePolicy=BlockStoragePolicy{HOT:7, storageTypes=[DISK], creationFallbacks=[], replicationFallbacks=[ARCHIVE]}, newBlock=true) All required storage types are unavailable: unavailableStorages=[DISK], storagePolicy=BlockStoragePolicy{HOT:7, storageTypes=[DISK], creationFallbacks=[], replicationFallbacks=[ARCHIVE]} 
2017-10-26 09:18:05,103 INFO org.apache.hadoop.ipc.Server: IPC Server handler 7 on 9000, call org.apache.hadoop.hdfs.protocol.ClientProtocol.addBlock from 192.168.1.6:52435 Call#7 Retry#0 
java.io.IOException: File /spark/apps/spark-app.jar could only be replicated to 0 nodes instead of minReplication (=1). There are 2 datanode(s) running and 2 node(s) are excluded in this operation. 
    at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget4NewBlock(BlockManager.java:1571) 
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getNewBlockTargets(FSNamesystem.java:3107) 
    at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:3031) 
    at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:725) 
    at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.java:492) 
    at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java) 
    at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:616) 
    at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:982) 
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2049) 
    at org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:2045) 
    at java.security.AccessController.doPrivileged(Native Method) 
    at javax.security.auth.Subject.doAs(Subject.java:422) 
    at org.apache.hadoop.security.UserGroupInformation.doAs(UserGroupInformation.java:1698) 
    at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2043) 

ソースコードは次のとおりです。

System.setProperty("HADOOP_USER_NAME", "root"); 
    Configuration conf = new Configuration(); 
    conf.addResource(new Path("src/main/resources/core-site.xml"));  
    FileSystem fs = FileSystem.get(conf); 
    fs.copyFromLocalFile(new Path(jars/spark-app.jar"), new Path("/spark/apps/spark-app.jar")); 

答えて

0

それは私の時間のサーフィンの多くを取ったが、私はDEBUGにlog4jのレベルを変更した後、私はすぐに問題があります。ログは、クライアントがデータノードのIPであり、ホストからアクセスできない「172.20.0.3」を接続していることを示します。次に、172.20/16(route add -p ...)へのルートを追加して、今は正常に動作します。

関連する問題