阿里云服务器Hadoop java api 上传文件报错 could only be written to 0 of the 1 minReplication nodes.
问题描述
阿里云服务器命令行使用命令可以上传文件,但HDFS java API上传失败,上传后只有文件名没有数据
报错: 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
解决思路
Hadoop的NameNode节点和DataNode节点之间是使用内网IP通信的,所以不管我们配置单机伪分布式,还是集群(CDH,HDP...)都是需要配置内网IP和主机名的映射,因为我们外网开发环境可以通过外网IP访问NameNode节点,所以创建目录是没问题的,但是文件的内容需要写到DataNode节点上,这时外网是无法和DataNode节点直接通信发数据的(需要了解NameNode和DataNode之间数据的传输机制也就是put和get操作).
解决办法
1.在服务器端配置内网IP和主机名映射,在外网开发机器上配置外网IP和主机名映射(主机名相同)
2.在hdfs-site.xml文件中配置属性<property><name>dfs.datanode.use.datanode.hostname</name><value>true</value></property>
<-----------注意需要重启hdfs!!!---------->
3.然后在代码中configuration中配置configuration.set("dfs.client.use.datanode.hostname", "true");FileSystem fs = FileSystem.get(new URI("hdfs://hostname:9000"), configuration, "hadoop");
4.还需要注意一点的是Hadoop3版本默认的端口有修改
Namenode 端口:
50470 --> 9871
50070 --> 9870
8020 --> 9820Secondary NN 端口:
50091 --> 9869
50090 --> 9868Datanode 端口:
50020 --> 9867
50010 --> 9866
50475 --> 9865
50075 --> 9864
此时需要通过命令(此命令需要HDFS的超级用户使用)hdfs dfsadmin -report 查看当前datanode的端口(我是使用的伪分布式)Name: 172.17.111.223:9866 (***这里是主机名***)
Hostname: (***这里是主机名***)
Decommission Status : Normal
Configured Capacity: 105552769024 (98.30 GB)
DFS Used: 49152 (48 KB)
Non DFS Used: 4163235840 (3.88 GB)
DFS Remaining: 96863227904 (90.21 GB)
DFS Used%: 0.00%
DFS Remaining%: 91.77%
Configured Cache Capacity: 0 (0 B)
Cache Used: 0 (0 B)
Cache Remaining: 0 (0 B)
Cache Used%: 100.00%
Cache Remaining%: 0.00%
Xceivers: 1
Last contact: Wed Nov 24 16:47:57 CST 2021
Last Block Report: Wed Nov 24 14:28:35 CST 2021
Num of Blocks: 1
5.需要在阿里云安全组开放刚才查到的端口 9866 此时再运行代码,成功发送数据到HDFS上
阿里云服务器Hadoop java api 上传文件报错 could only be written to 0 of the 1 minReplication nodes.相关推荐
- 阿里云使用idea通过hdfs api来上传文件时出现could only be written to 0 of the 1 minReplication nodes.错误
问题描述: 使用阿里云服务器,在本地windows电脑上使用idea进行hdfs api操作来上传文件时出现错误如下: org.apache.hadoop.ipc.RemoteException(ja ...
- 阿里云服务器建站怎么上传文件?
阿里云建站后使用Filezilla进行上传下载文件 1.远程连接阿里云,并阿里云中下载安装好Filezilla工具: 2.Filezilla工具安装好后,进入Filezilla操作界面: 3.在Fil ...
- 阿里云存储OSS中设置上传文件content type
阿里云存储OSS中设置上传文件ContentType 如果你使用浏览器上传文件,则浏览器会自动在header中设置正确地content type,然后对文件的访问会得到正确地回应. 如果采用编程的方式 ...
- laravel上传文件报错:413 Request Entity Too Large
上传图片的时候,是用laravel自带的上传图片的方法,一下气上传了20张,结果就无情报错: 413 Request Entity Too Large,后面查一下,这个报错信息是nginx报的错误,不 ...
- Spring MVC实现上传文件报错解决方案
Spring MVC实现上传文件报错解决方案 参考文章: (1)Spring MVC实现上传文件报错解决方案 (2)https://www.cnblogs.com/liuling/p/2014-3-5 ...
- Linux - xshell上传文件报错乱码
xshell上传文件报错乱码,解决方法 rz -be 回车 下载sz filename 转载于:https://www.cnblogs.com/RzCong/p/8600899.html
- 上传文件报错500或者文件大于2M上传不上去解决方法
上传文件报错500或者文件大于2M上传不上去解决方法 参考文章: (1)上传文件报错500或者文件大于2M上传不上去解决方法 (2)https://www.cnblogs.com/sillong/p/ ...
- ajax上传文件报错The current request is not a multipart request的解决办法
ajax上传文件报错The current request is not a multipart request的解决办法 主要报错语句为: The current request is not a ...
- 金蝶中间件上传文件报错
金蝶中间件上传文件报错 上传文件报错,见下图:allowCasualMultipartParsing is false,no MultipartConfig,so no parse! 解决办法: 在w ...
最新文章
- 【ubuntu】在ubuntu下无法输出拼音输入法中的中括号“【” 和 “】”的解决方法
- for循环 lamda python_Python中if-else判断语句、while循环语句以及for循环语句的使用...
- 【keras】rnn中的LSTM
- Golang 并发Groutine实例解读(一)
- 计算机视觉与深度学习 | OpenCV3.0.0及高版本安装文件(build/sources)及视频教程
- XenDesktop7.12配置StoreFront使用HTTPS
- C++对象内存布局--③测试多继承中派生类的虚函数在哪一张虚函数表中
- C# 按部门拆分excel文件
- 【建议收藏】centos更新yum源为阿里云
- POJ - 2352 Stars(线段树/树状数组)
- 【Leetcode | 1】93. 复原IP地址
- python自动化_python自动化办公?学这些就够用了
- zedboard板子上呼吸灯的实现(第一版)仿真代码的实现
- 微正指纹识别算法MZFinger5.0
- 技术分析是我的唯一信仰
- 用JAVA怎么做个视图_java问题 可以把用JFrame做出来的具有视图层的小程序放在桌面上当一个小软件吗?...
- 3dmax软件导入图片为背景的方法与步骤
- 用户登录 kibana 时,提示 “no permissions...” ,导致用户无法查看 log
- vc++ C函数atoi和itoa的用法总结(转载)
- 接口自动化测试项目实战
热门文章
- Python使用selenium模拟滑块验证登录12306网站 实测可用
- 各种数字字体样式_正言读书丨聊聊我的字体选择“变态”史,以及最近迷上的两款字体...
- ADAMS仿真软件教程--模型的相关操作
- IAR 使用中遇到的问题
- Nuendo学习之旅——没声音怎么办
- 一台显示器,两台不同的局域网计算机的切换需求
- CentOS重启后resolv.conf被重置的解决方案
- Android Studio 使用腾讯浏览服务(替换掉系统自带的WebView)
- Ant组件——DatePicker 日期选择框
- Java Web项目中HTML文件中的汉字在浏览器中显示乱码的解决方案