如何连接远程HDFS

问题描述 投票:0回答:1

我正在尝试连接到远程计算机上运行的 HDFS 实例。

我在 Windows 机器上运行 Eclipse,而 HDFS 在 Unix 机器上运行。这是我尝试过的

         Configuration conf = new Configuration();
         conf.set("fs.defaultFS", "hdfs://remoteHostName:portNumber");
         DFSClient client = null;
         System.out.println("try");
         try 
         {
             System.out.println("trying");   
             client = new DFSClient(conf);

        System.out.println(client);
         } 
         catch (IOException e) {

             e.printStackTrace();
        }

         finally {
             if(client!=null)
                 try {
                    client.close();
                } catch (IOException e) {

                    e.printStackTrace();
                }


         }

但这给了我以下例外

Exception in thread "main" java.lang.NoSuchMethodError: org.apache.hadoop.ipc.RPC.getProxy(Ljava/lang/Class;JLjava/net/InetSocketAddress;Lorg/apache/hadoop/security/UserGroupInformation;Lorg/apache/hadoop/conf/Configuration;Ljavax/net/SocketFactory;ILorg/apache/hadoop/io/retry/RetryPolicy;Z)Lorg/apache/hadoop/ipc/VersionedProtocol;
    at org.apache.hadoop.hdfs.DFSClient.createRPCNamenode(DFSClient.java:135)
    at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:280)
    at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:245)
    at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:235)
    at org.apache.hadoop.hdfs.DFSClient.<init>(DFSClient.java:226)

顺便说一句,我从远程计算机上的 hdfs-site.xml 获取了 portNumber

这种做法正确吗?

另外,用 Python 做这个会更容易吗?

编辑

请注意,我确实在 Windows 上解压了 Hadoop 二进制文件,并且相应地设置了 HADOOP_HOME 环境变量。这会引起问题吗?

java hadoop hdfs remote-access
1个回答
0
投票

请参阅:Hadoop 2.6.0 浏览文件系统 Java 了解您的具体问题。

除此之外,您可能需要考虑使用 REST 进行远程交互。 Apache Knox 可以为您提供对远程集群的访问,并保护您的代码不必了解集群内部信息,例如主机:端口、kerberos 或不等。这些内容可以在远程客户端下进行更改。

© www.soinside.com 2019 - 2024. All rights reserved.