問(wèn)題描述
在做 HDFS編程實(shí)踐操作 的時(shí)候,遇到一個(gè)報(bào)錯(cuò)信息。
在IDEA中執(zhí)行hadoop相關(guān)的的程序時(shí),出現(xiàn)以下的報(bào)錯(cuò)信息,隨即開(kāi)始排錯(cuò)之旅,一波三折。
Exception in thread "main" java.net.ConnectException: Call From hadoop01/192.168.30.134 to localhost:9000 failed on connection exception: java.net.ConnectException: Connection refused; For more details see: ?http://wiki.apache.org/hadoop/ConnectionRefused
?? ?at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
?? ?at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
?? ?at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
?? ?at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
?? ?at org.apache.hadoop.net.NetUtils.wrapWithMessage(NetUtils.java:930)
?? ?at org.apache.hadoop.net.NetUtils.wrapException(NetUtils.java:845)
?? ?at org.apache.hadoop.ipc.Client.getRpcResponse(Client.java:1571)
?? ?at org.apache.hadoop.ipc.Client.call(Client.java:1513)
?? ?at org.apache.hadoop.ipc.Client.call(Client.java:1410)
?? ?at org.apache.hadoop.ipc.ProtobufRpcEngine2$Invoker.invoke(ProtobufRpcEngine2.java:258)
?? ?at org.apache.hadoop.ipc.ProtobufRpcEngine2$Invoker.invoke(ProtobufRpcEngine2.java:139)
?? ?at com.sun.proxy.$Proxy12.getListing(Unknown Source)
?? ?at org.apache.hadoop.hdfs.protocolPB.ClientNamenodeProtocolTranslatorPB.getListing(ClientNamenodeProtocolTranslatorPB.java:689)
?? ?at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
?? ?at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
?? ?at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
?? ?at java.base/java.lang.reflect.Method.invoke(Method.java:566)
?? ?at org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:433)
?? ?at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeMethod(RetryInvocationHandler.java:166)
?? ?at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invoke(RetryInvocationHandler.java:158)
?? ?at org.apache.hadoop.io.retry.RetryInvocationHandler$Call.invokeOnce(RetryInvocationHandler.java:96)
?? ?at org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:362)
?? ?at com.sun.proxy.$Proxy13.getListing(Unknown Source)
?? ?at org.apache.hadoop.hdfs.DFSClient.listPaths(DFSClient.java:1702)
?? ?at org.apache.hadoop.hdfs.DFSClient.listPaths(DFSClient.java:1686)
?? ?at org.apache.hadoop.hdfs.DistributedFileSystem.listStatusInternal(DistributedFileSystem.java:1113)
?? ?at org.apache.hadoop.hdfs.DistributedFileSystem.access$600(DistributedFileSystem.java:149)
?? ?at org.apache.hadoop.hdfs.DistributedFileSystem$24.doCall(DistributedFileSystem.java:1188)
?? ?at org.apache.hadoop.hdfs.DistributedFileSystem$24.doCall(DistributedFileSystem.java:1185)
?? ?at org.apache.hadoop.fs.FileSystemLinkResolver.resolve(FileSystemLinkResolver.java:81)
?? ?at org.apache.hadoop.hdfs.DistributedFileSystem.listStatus(DistributedFileSystem.java:1195)
?? ?at org.apache.hadoop.fs.FileSystem.listStatus(FileSystem.java:2078)
?? ?at org.apache.hadoop.fs.FileSystem.listStatus(FileSystem.java:2122)
?? ?at MergeFile.doMerge(MergeFile.java:39)
?? ?at MergeFile.main(MergeFile.java:65)
Caused by: java.net.ConnectException: Connection refused
?? ?at java.base/sun.nio.ch.SocketChannelImpl.checkConnect(Native Method)
?? ?at java.base/sun.nio.ch.SocketChannelImpl.finishConnect(SocketChannelImpl.java:777)
?? ?at org.apache.hadoop.net.SocketIOWithTimeout.connect(SocketIOWithTimeout.java:205)
?? ?at org.apache.hadoop.net.NetUtils.connect(NetUtils.java:600)
?? ?at org.apache.hadoop.ipc.Client$Connection.setupConnection(Client.java:652)
?? ?at org.apache.hadoop.ipc.Client$Connection.setupIOstreams(Client.java:773)
?? ?at org.apache.hadoop.ipc.Client$Connection.access$3800(Client.java:347)
?? ?at org.apache.hadoop.ipc.Client.getConnection(Client.java:1632)
?? ?at org.apache.hadoop.ipc.Client.call(Client.java:1457)
namenode格式化正常,集群?jiǎn)?dòng)一切正常的情況下,在使用IDEA執(zhí)行HDFS時(shí)間卻出現(xiàn)上面的錯(cuò)誤。
集群?jiǎn)?dòng)的方法可以參考?Hadoop(02) Hadoop-3.3.6 集群的配置教程 中第五小節(jié)中的集群?jiǎn)?dòng)部分。
最后可以使用jps查看服務(wù)是否都啟動(dòng)成功了。
解決思路
方法一
hadoop jar /usr/local/hadoop-3.3.6/share/hadoop/mapreduce/hadoop-mapreduce-examples-3.3.6.jar pi 5 10
說(shuō)明:命令運(yùn)行了一個(gè)名為"pi"的示例作業(yè),用于計(jì)算Pi的近似值。作業(yè)參數(shù)為5和10,表示將使用5個(gè)Mapper和每個(gè)Mapper處理10個(gè)樣本。
如果這一步有問(wèn)題,可以參考資料:?hadoop運(yùn)行程序時(shí)報(bào)錯(cuò)java.net.ConnectException: java.net.ConnectException: 拒絕連接;_hadoop connectexception: call from n01/192.168.3.1-CSDN博客
?來(lái)解決。
方法二
執(zhí)行代碼:
hadoop fs -ls hdfs://localhost:9000
發(fā)現(xiàn)和IDEA控制臺(tái)中同樣地報(bào)錯(cuò)信息。
查看9000端口的監(jiān)聽(tīng)地址:
netstat -anp | grep 9000
?發(fā)現(xiàn)端口監(jiān)聽(tīng)I(yíng)P為192.168.30.134,是服務(wù)器(虛擬主機(jī)hadoop01)的IP,再查看下core-site.xml
cd /usr/local/hadoop-3.3.6/etc/hadoop/
cat core-site.xml
配置文件里面HDFS主機(jī)IP是hadoop01而不是127.0.0.1(localhost),所以當(dāng)我們?cè)L問(wèn)127.0.0.1:9000的時(shí)候會(huì)被拒絕,因?yàn)槲覀冊(cè)谧鲇成湮募臅r(shí)候hadoop01 對(duì)應(yīng)的是192.168.30.134,而 localhost 對(duì)應(yīng)的是 127.0.0.1,所以當(dāng)我們?cè)L問(wèn)localhost:9000時(shí),會(huì)被拒絕。
解決方法
將代碼中的 localhost 改為 hadoop01?
或者 將配置文件core-site.xml 中的fs.defaultFS參數(shù)改成hdfs://127.0.0.1:9000,重啟hdfs即可。
注:修改成127.0.0.1以后,只允許本機(jī)訪問(wèn),如果需要全網(wǎng)訪問(wèn),需要改成hdfs://0.0.0.0:9000
參考資料?
hadoop運(yùn)行程序時(shí)報(bào)錯(cuò)java.net.ConnectException: java.net.ConnectException: 拒絕連接;_hadoop connectexception: call from n01/192.168.3.1-CSDN博客文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-758124.html
HDFS9000端口拒絕連接 - 簡(jiǎn)書(shū) (jianshu.com)文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-758124.html
到了這里,關(guān)于Hadoop(4-2) Exception inthread “main“ java.net.ConnectException.....net.ConnectException: Connection的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!