将文件从(非集群)本地计算机写入hdfs

wztqucjr  于 2021-06-02  发布在  Hadoop
关注(0)|答案(0)|浏览(192)

我在想办法解决我的问题。但我真的不知道怎么做。
我有一个hadoophdfs,我需要使用java将本地机器上的数据写入hdfs。目前,我已经这样解决了:
在本地计算机上创建文件
创建到安装hadoop的集群的ssh连接
将文件复制到群集(本地操作系统)
将文件从本地群集操作系统复制到hdfs( hadoop fs -put ).
它工作正常,但现在我需要复制文件没有ssh。我是说,我需要这样做:
在本地计算机上创建文件(不在群集中)
将文件直接复制到hdfs
我能找到的所有例子都展示了如何将文件从本地操作系统(集群)复制到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获取它。有人有什么想法吗?

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题