2015-11-09 2 views
0

Я пытаюсь подключиться к экземпляру HDFS, работающему на удаленной машине.Как подключиться к удаленной HDFS

Я запускаю затмение на компьютере с Windows, а 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) 

, кстати, я получил Portnumber от HDFS-site.xml на удаленной машине

Правильно ли этот подход?

Кроме того, было бы проще сделать это в Python?

EDIT

Обратите внимание, что у меня есть двоичные файлы Hadoop расстегнул на моих окнах и я установить переменную окружения HADOOP_HOME соответственно. Может ли это быть проблемой?

ответ

0

См.: Hadoop 2.6.0 Browsing filesystem Java для вашей конкретной проблемы.

Помимо этого, вы можете рассмотреть возможность использования REST для удаленных взаимодействий. Apache Knox может предоставить вам доступ к удаленному кластеру и защитить ваш код от необходимости знать внутренние элементы кластера, такие как host: port, kerberos или нет, и т. Д. Эти вещи могут измениться из-под ваших удаленных клиентов.

Смежные вопросы