解决File ~ could only be written to 0 of the 1 minReplication nodes.

这篇具有很好参考价值的文章主要介绍了解决File ~ could only be written to 0 of the 1 minReplication nodes.。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

在通过javaApi上传本地文件时出现以下错误,主要原因是:

File /test3.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.

org.apache.hadoop.ipc.RemoteException(java.io.IOException): File /test3.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:2329)
	at org.apache.hadoop.hdfs.server.namenode.FSDirWriteFileOp.chooseTargetForNewBlock(FSDirWriteFileOp.java:294)
	at org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:2942)
	at org.apache.hadoop.hdfs.server.namenode.NameNodeRpcServer.addBlock(NameNodeRpcServer.java:915)
	at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolServerSideTranslatorPB.addBlock(ClientNamenodeProtocolServerSideTranslatorPB.java:593)
	at org.apache.hadoop.hdfs.protocol.proto.ClientNamenodeProtocolProtos$ClientNamenodeProtocol$2.callBlockingMethod(ClientNamenodeProtocolProtos.java)
	at org.apache.hadoop.ipc.ProtobufRpcEngine2$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine2.java:600)
	at org.apache.hadoop.ipc.ProtobufRpcEngine2$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine2.java:568)
	at org.apache.hadoop.ipc.ProtobufRpcEngine2$Server$ProtoBufRpcInvoker.call(ProtobufRpcEngine2.java:552)
	at org.apache.hadoop.ipc.RPC$Server.call(RPC.java:1093)
	at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:1035)
	at org.apache.hadoop.ipc.Server$RpcCall.run(Server.java:963)
	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:1878)
	at org.apache.hadoop.ipc.Server$Handler.run(Server.java:2966)


	at org.apache.hadoop.ipc.Client.getRpcResponse(Client.java:1573)
	at org.apache.hadoop.ipc.Client.call(Client.java:1519)
	at org.apache.hadoop.ipc.Client.call(Client.java:1416)
	at org.apache.hadoop.ipc.ProtobufRpcEngine2$Invoker.invoke(ProtobufRpcEngine2.java:242)
	at org.apache.hadoop.ipc.ProtobufRpcEngine2$Invoker.invoke(ProtobufRpcEngine2.java:129)
	at com.sun.proxy.$Proxy14.addBlock(Unknown Source)
	at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.addBlock(ClientNamenodeProtocolTranslatorPB.java:530)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:422)
	at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeMethod(RetryInvocationHandler.java:165)
	at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invoke(RetryInvocationHandler.java:157)
	at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeOnce(RetryInvocationHandler.java:95)
	at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:359)
	at com.sun.proxy.$Proxy15.addBlock(Unknown Source)
	at org.apache.hadoop.hdfs.DFSOutputStream.addBlock(DFSOutputStream.java:1084)
	at org.apache.hadoop.hdfs.DataStreamer.locateFollowingBlock(DataStreamer.java:1898)
	at org.apache.hadoop.hdfs.DataStreamer.nextBlockOutputStream(DataStreamer.java:1700)
	at org.apache.hadoop.hdfs.DataStreamer.run(DataStreamer.java:707)

但是之前还能解决向hdfs创建目录,为什么不能上传文件嘞?按理说权限不应该有问题,那具体是什么原因,这里通过百度,很多人说是因为

hadoop namenode -format格式化时格式化了多次造成那么spaceID不一致,说要重新格式化启动集群,貌似好像不是这个原因,这边表示很生气。

具体原因在我看到这位大哥的博客之后,立马懂了,在这里感谢大哥,附一下大哥的网址

HDFS服务器使用命令可以上传文件,但客户端上传失败问题File ~ could only be written to 0 of the 1 minReplication nodes._迷雾总会解的博客-CSDN博客

根据大哥的见解好像是

NameNode节点存放的是文件目录,也就是文件夹、文件名称,本地可以通过公网访问 NameNode,所以可以进行文件夹的创建,当上传文件需要写入数据到DataNode时,NameNode 和DataNode 是通过局域网进行通信,NameNode返回地址为 DataNode 的私有 IP,本地无法访问

这里也可以看出大哥也使用的是服务器,根据上述理解我们知道因为我们使用的服务器,官方给我们提供的是可以访问的公网,但是内部名称节点和数据节点的通信是通过私网,也就是相当于;老师们经常讲的在一个机架上的各个服务器,它们有一个自己的局域网,而我们本机是无法访问的,明白这个道理之后我们就可以操作了

具体解决步骤

1)首先配置java代码,设置configuration

Configuration conf = new Configuration();
conf.set("dfs.client.use.datanode.hostname", "true");//添加此配置信息即可
FileSystem fs = FileSystem.get(new URI("hdfs://host:9000"), conf, "root");

2)设置完成之后,我们需要找到那个私网ip

在你的服务器上,输入以下指令

   hadoop dfsadmin -report

解决File ~ could only be written to 0 of the 1 minReplication nodes.
 

 3)本地还需要配置一下DNS域名映射,在C:\Windows\System32\drivers\etc的hosts文件中配置

        阿里云等服务器还需要配置一下我们的安全组 开放9866端口

解决File ~ could only be written to 0 of the 1 minReplication nodes.

 注意:在这边建议把原文件复制一份到外面操作,完成之后再粘贴回来

开放端口

解决File ~ could only be written to 0 of the 1 minReplication nodes.

展示最终代码

package com.zhy.hdfs;
import org.apache.hadoop.conf.Configuration;
import org.apache.hadoop.fs.FileSystem;
import org.apache.hadoop.fs.Path;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.io.File;
import java.io.IOException;
import java.net.URI;
import java.net.URISyntaxException;


public class HdfsClient {
    FileSystem fs=null;
    @Before
    public void init() throws URISyntaxException, IOException, InterruptedException {
        Configuration configuration=new Configuration();
        configuration.set("dfs.client.use.datanode.hostname","true");
        //2.根据configuration获取Filesystem对象
        fs=FileSystem.get(new URI("hdfs://你的ip:9000"),configuration,"root");

    }
    @After
    public void destory() throws IOException {
        //4.释放FileSystem对象(类似数据库连接)
        fs.close();
    }



    @Test
    public void testMkdirs() throws URISyntaxException, IOException, InterruptedException {

        fs.mkdirs(new Path("/api_test2"));

    }
    //上传文件
    @Test
    public void copyFromLocalToHdfs() throws URISyntaxException, IOException, InterruptedException {
        //上传文件
        //src:源文件目录:本地路径
        //dst:目标文件目录:hdfs路径
        fs.copyFromLocalFile(new Path("d:/test.txt"),new Path("/test3.txt"));

    }


}

结果展示

解决File ~ could only be written to 0 of the 1 minReplication nodes.

解决File ~ could only be written to 0 of the 1 minReplication nodes.文章来源地址https://www.toymoban.com/news/detail-402533.html

到了这里,关于解决File ~ could only be written to 0 of the 1 minReplication nodes.的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • this version of the Java Runtime only recognizes class file versions up to 52.0

    博客上很多博主说这个是jdk版本的问题,我所有地方都设置的是jdk1.8,但还是报错 Caused by: java.lang.UnsupportedClassVersionError: org/springframework/cloud/bootstrap/RefreshBootstrapRegistryInitializer has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only re

    2024年02月11日
    浏览(115)
  • 解决PyTorch DDP: Finding the cause of “Expected to mark a variable ready only once“

    早上做消融实验的时候需要复现俩月前的实验结果,但是莫名其妙同样的代码和环境却跑不通了,会在loss.backward()的时候报如下错误: RuntimeError: Expected to mark a variable ready only once. This error is caused by one of the following reasons: 1) Use of a module parameter outside the ``forward`` function. Please

    2024年02月07日
    浏览(54)
  • cannot be resolved to absolute file path because it does not reside in the file system 问题解决

    在Springboot中利用Resource来获取文件并在前端返回该文件, 本地测试正常, 打包到远程报错: cannot be resolved to absolute file path because it does not reside in the file system 紧接上一个问题: 项目打包成 jar 后包无法读取src/main/resources下文件, 在Springboot打包之后, 无法读取到jar包内的文件, 因此

    2023年04月18日
    浏览(48)
  • 【问题解决】 Could not find a package configuration file provided by “OpenCV“ with any of the following n

    编译依赖于opencv的包时报错 Could not find a package configuration file provided by “OpenCV” with any of the following names: OpenCVConfig.cmake opencv-config.cmake 这个问题是找不到 “OpenCVConfig.cmake” 或 “opencv-config.cmake” 文件,主要是找不到 OpenCV 路径而导致的。 造成这个问题的主要原因就是没有安

    2024年03月18日
    浏览(56)
  • Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file

    maven打包报错 java 运行时的最新版本(类文件版本 61.0)编译的,该版本的 Java 运行时只识别 52.0 以下的类文件版本 原因: 根据 Spring Boot with spring version 2.5.7 fails repackage with jdk 1.8 这篇文章中下面的说法 目标org.springframework.boot:spring-boot-maven插件:3.0.0-M1:重新打包失败:由于

    2024年02月13日
    浏览(45)
  • idea 报错Java Runtime (class file version 61.0), this version of the Java Runtime only ...55.0

    RootLogLevelConfigurator has been compiled by a more recent version of the Java Runtime (class file version 61.0), this version of the Java Runtime only recognizes class file versions up to 55.0 55对应jdk11,61对应jdk17. 查看自己pom文件中java的版本,将版本改为11 setting中版本改为11 project structure中版本改为11 pom中指定spring

    2024年02月08日
    浏览(54)
  • 手动修复 rabbitmq 报错 “Crash dump is being written to“

    rabbitmq 报错: 修复方法: (1) 找到 rabbitmq 使用的 pv,例如: rabbitmq-0 的 pod: (2) 找到 pv 使用的信息: 需要的信息: (3) 在 pod 节点上查看对应的物理设备 (4) 查看设备挂载目录 (5) 查找 wal 文件路径,查找的路径来自步骤 (4) (6) 删除 wal 文件 此步骤请慎重操作,建议将文件备份后再操作

    2024年02月04日
    浏览(38)
  • Unity 解决 “... can only be called from the main thread” 问题

    有些属性或方法只能在主线程中调用,如 .gameObject 、 Instantiate() 等。这是 Unity 设计时的一个缺陷(为了保证线程安全),多年来一直没有修正,或者说官方懒得弄。 以 Instantiate() 为例,在非主线程调用时,报错大概如下所示。其他属性或方法的报错也大体相同。 注:应注意

    2024年01月17日
    浏览(64)
  • 解决only one element tensors can be converted to Python scalars

    目录 解决 \\\"only one element tensors can be converted to Python scalars\\\" 错误 问题源头 解决方法 方法一:使用​​item()​​方法 方法二:使用索引操作 总结 语法 参数 返回值 使用场景 示例 当我们使用PyTorch进行深度学习任务时,有时会遇到以下错误信息:\\\"only one element tensors can be conve

    2024年02月03日
    浏览(47)
  • 解决TypeError: only size-1 arrays can be converted to Python scalars

    目录 解决TypeError: only size-1 arrays can be converted to Python scalars 错误示例 错误分析 解决方法 方法一:使用​​flatten()​​ 方法二:使用ravel() 结论 在Python中,当我们尝试将一个数组作为标量(scalar)进行操作时,有时会遇到 ​ ​TypeError: only size-1 arrays can be converted to Python sca

    2024年02月05日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包