Java 文件只能写入1个复制节点中的0个
服务器A:192.168.96.130,操作系统:centos7.x 服务器B:本地主机,我的电脑,操作系统:windows10 我在serverA上安装Hadoop3.1.2,并编写Java应用程序将数据写入服务器A上的HDFS。 当Java应用程序部署在服务器A上时,它可以成功地将包含内容的文件写入HDFS。 当Java应用程序部署在服务器B上时,它可以将文件写入HDFS,但不能将内容写入文件。始终获取错误:Java 文件只能写入1个复制节点中的0个,java,hadoop,Java,Hadoop,服务器A:192.168.96.130,操作系统:centos7.x 服务器B:本地主机,我的电脑,操作系统:windows10 我在serverA上安装Hadoop3.1.2,并编写Java应用程序将数据写入服务器A上的HDFS。 当Java应用程序部署在服务器A上时,它可以成功地将包含内容的文件写入HDFS。 当Java应用程序部署在服务器B上时,它可以将文件写入HDFS,但不能将内容写入文件。始终获取错误: 2020-03-18 20:56:43,460 INFO org.apache.h
2020-03-18 20:56:43,460 INFO org.apache.hadoop.ipc.Server: IPC Server handler 9 on 9000, call Call#4 Retry#0 org.apache.hadoop.hdfs.protocol.ClientProtocol.addBlock from 192.168.96.1:53463
java.io.IOException: File /canal/canal_1/canal_1-2020-3-19-4.txt could only be written to 0 of the 1 minReplication nodes. There are 1 datanode(s) running and 1 node(s) are excluded in this operation.
at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget4NewBlock(BlockManager.java:2121)
at org.apache.hadoop.hdfs.server.namenode.FSDirWriteFileOp.chooseTargetForNewBlock(FSDirWriteFileOp.java:295)
at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:2702)
at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:875)
at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.java:561)
at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
at org.apache.hadoop.ipc.ProtobufRpcEngine$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine.java:523)
at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:991)
at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:872)
at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:818)
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:1729)
at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2678)
下面是我的Java应用程序代码:
配置conf=新配置;
FileSystem fs=FileSystem.getnewURIhdfs://192.168.96.1:9000/,conf,root;
FSDataOutputStream out=fs.createnewpath/canal/canal_1/canal_1-2020-03-10.txt;
out.WriteBytes 15Kevin152020.3.15;
冲水;
关上;
fs.close;
如何解决这个问题?我认为您应该首先检查集群是否健康。http://namenode1:50070
那么,您可能还没有关闭iptables,因此在服务器2上无法远程登录端口。您可以尝试在SERVER1和server2上执行命令telnet SERVER1\u IP 50020来检查它。使用此命令检查datanode是否已满。$dfs-du-h/。或者检查datanode是否已关闭。