1. 程式人生 > >從ftp上傳文件到hadoop的一個坑

從ftp上傳文件到hadoop的一個坑

hadoop

執行如下命令,發現報錯

[[email protected] ~]$ hadoop distcp ftp://ftp01:[email protected]/test hdfs:///user/data
Error: java.net.SocketException: 網絡不可達
	at java.net.PlainSocketImpl.socketConnect(Native Method)
	at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
	at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
	at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
	at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
	at java.net.Socket.connect(Socket.java:589)
	at org.apache.commons.net.SocketClient.connect(SocketClient.java:171)
	at org.apache.commons.net.SocketClient.connect(SocketClient.java:192)
	at org.apache.hadoop.fs.ftp.FTPFileSystem.connect(FTPFileSystem.java:133)
	at org.apache.hadoop.fs.ftp.FTPFileSystem.getFileStatus(FTPFileSystem.java:405)
	at org.apache.hadoop.tools.mapred.CopyMapper.map(CopyMapper.java:218)
	at org.apache.hadoop.tools.mapred.CopyMapper.map(CopyMapper.java:50)
	at org.apache.hadoop.mapreduce.Mapper.run(Mapper.java:145)
	at org.apache.hadoop.mapred.MapTask.runNewMapper(MapTask.java:787)
	at org.apache.hadoop.mapred.MapTask.run(MapTask.java:341)
	at org.apache.hadoop.mapred.YarnChild$2.run(YarnChild.java:163)
	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:1671)
	at org.apache.hadoop.mapred.YarnChild.main(YarnChild.java:158)

這是為什麽呢?命令應該的正確的。

查網絡,正常,ftp也能正常傳輸。

防火墻,selinux都已經關閉,但就是執行報錯。

百思不得其解。

查了好多資料,才發現:

原來,hadoop官方不提供ftp接口!

只有個人開發的工具,感覺安裝挺麻煩,也許還會有bug,參考資料鏈接:

http://www.linuxidc.com/Linux/2013-01/78302.htm

我就沒安裝了,現在是先把文件從ftp下載到本地,在通過

[[email protected] ~]$ hadoop fs -put test /user/data

上傳到hadoop中,雖然麻煩點,但勝在穩定,後期也可通過腳本來簡化步驟。

本文出自 “運維筆記” 博客,請務必保留此出處http://quliren.blog.51cto.com/9849266/1946120

從ftp上傳文件到hadoop的一個坑