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

时间:2017-06-23 13:43:50

标签: hadoop hdfs java-api

我正在尝试找到解决问题的一些技巧。但我真的不知道该怎么做。

我有一个HADOOP HDFS,我需要使用Java将数据从本地机器写入HDFS。目前,我已经用这种方式解决了它:

  1. 在我的本地计算机上创建文件
  2. 创建与安装了Hadoop的群集的SSH连接
  3. 将文件复制到群集(本地操作系统)
  4. 将文件从本地群集操作系统复制到HDFS(hadoop fs -put)。
  5. 它工作正常,但现在我需要复制没有SSH的文件。我的意思是,我需要这样做:

    1. 在我的本地计算机上创建文件(不在群集中)
    2. 直接将文件复制到HDFS
    3. 我能找到的所有示例都显示了如何将文件从本地操作系统(群集)复制到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获取它。有人有什么想法吗?

0 个答案:

没有答案