在idea中运行SparkSQL,要连接服务器部署的Hive出现下面问题
WARN Executor task launch worker for task 0 org.apache.hadoop.hdfs.BlockReaderFactory - I/O error constructing remote block reader.
java.net.ConnectException: Connection timed out: no further information
原因:客户端创建文件先访问NameNode服务器进行创建文件Meta信息,以及文件树,此时访问的的NameNode的IP,NameNode服务器创建文件成功后,会返回对应dataNode的服务器节点,但此时的节点信息中的ip是与NameNode在同一网络下的内网IP,客户端是无法访问,也就无法写入。
解决:在客户端中,或者服务器端etc/hadoop/hdfs-site.xml中配置
在hdfs-site.xml增加
<property>
<name>dfs.client.use.datanode.hostname</name>
<value>true</value>
</property>
或者
conf.set("dfs.client.use.datanode.hostname","true");--设置客户端访问datanode使用hostname来进行访问