hadoop中的SFTP文件系统

时间:2012-12-11 08:38:40

标签: hadoop

hadoop版本2.0.0和CDH4是否有SFTP文件系统?我知道hadoop支持FTP文件系统。 sftp有类似的东西吗?我已经看到一些补丁提交了虽然无法理解它们。

3 个答案:

答案 0 :(得分:3)

考虑使用hadoop distcp。

Check here.这就像是:

hadoop distcp
  -D fs.sftp.credfile=/user/john/credstore/private/mycreds.prop
  sftp://myHost.ibm.com/home/biadmin/myFile/part1
  hdfs:///user/john/myfiles

答案 1 :(得分:0)

经过一些研究,我发现hadoop目前没有为FileSystem编写SFTP。因此,如果您希望使用SFTP通道读取数据,则必须编写SFTP FileSystem(这是一个非常重要的事项,扩展和覆盖许多类和方法),其中的补丁已经开发,但尚未开发集成到hadoop中,否则会获得从InputFormat读取的自定义streams,这在hadoop.

中未实现

答案 2 :(得分:0)

您需要确保core-site.xml的fs.sftp.impl属性设置为org.apache.hadoop.fs.sftp.SFTPFileSystem值

发布此hadoop命令将起作用。下面给出了几个样本

  1. ls命令

hadoop上的命令

hadoop fs -ls /

与SFTP等效

hadoop fs -D fs.sftp.user.{hostname}={username} -D fs.sftp.password.{hostname}.{username}={password} -ls sftp://{hostname}:22/
  1. Distcp命令

hadoop上的命令

hadoop distcp {sourceLocation} {destinationLocation}

与SFTP等效

hadoop distcp -D fs.sftp.user.{hostname}={username} -D fs.sftp.password.{hostname}.{username}={password} sftp://{hostname}:22/{sourceLocation} {destinationLocation}

确保在尝试这些命令时替换所有占位符。我在安装了Hadoop 2.8.5的AWS EMR 5.28.1上对其进行了尝试