Hadoop 方案:sftp没有文件系统
我正在尝试在hadoop中使用sftp和distcp,如下所示Hadoop 方案:sftp没有文件系统,hadoop,sftp,distcp,Hadoop,Sftp,Distcp,我正在尝试在hadoop中使用sftp和distcp,如下所示 hadoop distcp-D fs.sftp.credfile=/home/bigsql/cred.prop sftp://:22/export/home/nz/samplefilehdfs:///user/bigsql/distcp例外情况即将出现,因为Hadoop无法找到方案的文件系统实现:sftp 异常发生在FileSystem.java中。框架试图找到配置参数fs.sftp.impl的值,如果找不到,则抛出此异常 据我所
hadoop distcp-D fs.sftp.credfile=/home/bigsql/cred.prop sftp://:22/export/home/nz/samplefilehdfs:///user/bigsql/distcp
例外情况即将出现,因为Hadoop无法找到方案的文件系统实现:sftp
异常发生在FileSystem.java
中。框架试图找到配置参数fs.sftp.impl
的值,如果找不到,则抛出此异常
据我所知,Hadoop默认情况下不支持sftp
文件系统。这个JIRA票证[添加SFTP文件系统][,表示可以从Hadoop版本2.8.0获得SFTP
要解决此问题,您需要做两件事:
将包含sftp
文件系统实现的jar添加到HADOOP部署中
将配置参数:fs.sftp.impl
设置为sftp
实现的完全限定类名
我遇到了这个git存储库,它包含Hadoop的sftp
实现:。要使用它,您需要将属性fs.sftp.impl
设置为org.apache.Hadoop.fs.sftp.SFTPFileSystem
,您有实现“sftp”文件系统的jar文件吗?它抱怨说,它找不到任何名为的文件系统“sftp”。默认情况下,“hdfs”是文件系统。我应该查找的默认jar是什么,在哪个位置?我已经识别了jar,它是一个IBM jar文件(正如我使用IBM BigInsights一样),我在core-site.xml文件fs.sftp.impl.com.ibm.bigdights.hadoop.fs.sftp.SFTPFileSystem
中添加了以下内容,但我得到的错误是:java.lang.RuntimeException:java.lang.ClassNotFoundException:Class org.apache.hadoop.fs.sftp.SFTPFileSystem未找到
,我还将jar提取到类文件a中nd发现路径为com\ibm\bigdights\hadoop\fs\sftp\SFTPFileSystem
您是否确保此jar存在于hadoop路径中?它应该存在于其中一个hadoop路径中:%hadoop\u HOME%/share/hadoop/common/,%hadoop\u HOME%/share/hadoop/common/lib/。我也在使用自定义文件系统,它对我来说运行正常。现在我我收到的错误类似于15/11/30 12:32:40 error tools.DistCp:遇到异常java.lang.IllegalStateException:没有为sftp连接指定用户。展开URI或凭据文件。位于com.ibm.biginsights.hadoop.fs.sftp.SFTPFileSystem$ConfWrapper.readConnectionValues(未知源)
这意味着Hadoop现在正在识别SFTP文件系统。现在,您的凭据有问题。您是否检查了位于“/home/bigsql/cred.prop”的凭据文件是否正确?