我正在尝试找到解决问题的一些技巧。但我真的不知道该怎么做。
我有一个HADOOP HDFS,我需要使用Java将数据从本地机器写入HDFS。目前,我已经用这种方式解决了它:
hadoop fs -put
)。它工作正常,但现在我需要复制没有SSH的文件。我的意思是,我需要这样做:
我能找到的所有示例都显示了如何将文件从本地操作系统(群集)复制到HDFS。有没有人解决过这样的问题?
我写这样的代码:
System.setProperty("java.security.auth.login.config", "jaas.conf");
System.setProperty("java.security.krb5.conf", "krb5.conf");
UsernamePasswordHandler passHandler = new UsernamePasswordHandler("user", "pass");
LoginContext loginContextHadoop = new LoginContext("Client", passHandler);
loginContextHadoop.login();
Configuration configuration = new Configuration();
configuration.set("hadoop.security.authentication", "Kerberos");
org.apache.hadoop.security.UserGroupInformation.setConfiguration(configuration);
org.apache.hadoop.security.UserGroupInformation.loginUserFromSubject(loginContextHadoop.getSubject());
FileSystem hdfs = FileSystem.get(new URI("hdfs://URI:50020"), configuration);
System.out.println(hdfs.getUsed());
得到这样的错误: org.apache.hadoop.ipc.RemoteException(org.apache.hadoop.ipc.RpcNoSuchProtocolException):未知协议:org.apache.hadoop.hdfs.protocol.ClientProtocol
我认为我使用了错误的端口,我从dfs.datanode.ipc.address获取它。有人有什么想法吗?