本地HDFS的javaAPI访问云服务器Hadoop问题引申
1. 问题扩展
扩展于2021-12-29日解决外网无法访问HDFS文件系统①博文,直达链接已附上,两篇内容配合食用更佳。
1.1 防火墙问题
防火墙开启导致的error,关闭防火墙并设置开机不自启,Spark和hadoop平台中,很多服务貌似都和防火墙有点冲突,所以最好还是直接设置防火墙开机不自启动吧。
systemctl status firewalld
systemctl stop firewalld
systemctl disable firewalld
如果防火墙关闭后还不行可以在hdfs-site.xml设置"dfs.socket.timeout"值为60000。
<property>
<name>dfs.socket.timeout</name>
<value>60000</value>
</property>
1.2 连接超时
集群内部配置hosts映射是内网映射(内网ip与主机名映射),本地只能通过公网ip访问集群
Failed to connect to /内网ip:9000 for block, add to deadNodes and continue. org.apache.hadoop.net.ConnectTimeoutException: 60000 millis timeout while waiting for channel to be ready for connect. ch : java.nio.channels.SocketChannel[connection-pending remote=/内网ip:9000]
本地IDEA无法连接内网ip,报错解读60000ms超时访问,连接不到内网ip(client访问的是外网地址,要连内网ip是肯定连不上的)
1.3 解决方法
<property>
<description>only cofig in clients</description>
<name>dfs.client.use.datanode.hostname</name>
<value>true</value>
</property>
2. 问题引申
Win系统的特有bug
CopyException in thread "main" java.lang.UnsatisfiedLinkError: org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSums(IILjava/nio/ByteBuffer;ILjava/nio/ByteBuffer;IILjava/lang/String;JZ)V
at org.apache.hadoop.util.NativeCrc32.nativeComputeChunkedSums(Native Method)
at org.apache.hadoop.util.NativeCrc32.verifyChunkedSums(NativeCrc32.java:59)
at org.apache.hadoop.util.DataChecksum.verifyChunkedSums(DataChecksum.java:301)
at org.apache.hadoop.hdfs.RemoteBlockReader2.readNextPacket(RemoteBlockReader2.java:231)
at org.apache.hadoop.hdfs.RemoteBlockReader2.read(RemoteBlockReader2.java:152)
at org.apache.hadoop.hdfs.DFSInputStream$ByteArrayStrategy.doRead(DFSInputStream.java:767)
at org.apache.hadoop.hdfs.DFSInputStream.readBuffer(DFSInputStream.java:823)
at org.apache.hadoop.hdfs.DFSInputStream.readWithStrategy(DFSInputStream.java:883)
at org.apache.hadoop.hdfs.DFSInputStream.read(DFSInputStream.java:926)
at java.io.DataInputStream.read(DataInputStream.java:149)
windows下HADOOP_HOME 的bin 目录脚本是32位的,应替换为支持windows版本的64位,网上有编译好的windows64位版本的hadoop包,需要的自行查阅下载,这里不做提供
在IDEA中配置环境参数
HADOOP_HOME=E:\hadoop\hadoop版本
PATH=%PATH%;E:\hadoop\hadoop版本\bin
大年初一不出门,在此给大家拜年。 了解更多知识请戳下:
@Author:懒羊羊
|