2015-07-22 18 views
6

Sto scrivendo un'utilità Java che deve accedere al DFS, quindi ho bisogno di un oggetto Configuration. Quando creo uno semplicemente utilizzandoOttieni configurazione hadoop in Java util

Configuration conf = new Configuration()

non sembra trovare il DFS, e utilizza solo il file system locale; stampa

fs.getHomeDirectory()

dà mia home directory locale. Ho provato ad aggiungere core-site.xml, mapred-site.xml, yarn-site.xml e hdfs-site.xml alla configurazione come risorse, ma non cambia nulla. Cosa devo fare per fargli prendere le impostazioni HDFS?

Grazie per la lettura

risposta

12

Il motivo per cui sta puntando al file system locale è core-site.xml e hdfs-site.xml non viene aggiunto correttamente. Lo snippet di codice sottostante ti aiuterà.

Configuration conf = new Configuration(); 
conf.addResource(new Path("file:///etc/hadoop/conf/core-site.xml")); // Replace with actual path 
conf.addResource(new Path("file:///etc/hadoop/conf/hdfs-site.xml")); // Replace with actual path 

Path pt = new Path("."); // HDFS Path 
FileSystem fs = pt.getFileSystem(conf); 

System.out.println("Home directory :"+fs.getHomeDirectory()); 

Aggiornamento:

Sopra opzione dovrebbe aver lavorato, a quanto pare alcuni problemi nel file di configurazione o il percorso. Hai un'altra opzione invece di aggiungere file di configurazione usando il metodo addResource, usa il metodo set. Apri il tuo file core-site.xml e trova il valore di fs.defaultFS. Utilizzare il metodo set invece del metodo addResource.

conf.set("fs.defaultFS","hdfs://<Namenode-Host>:<Port>"); // Refer you core-site.xml file and replace <Namenode-Host> and <Port> with your cluster namenode and Port (default port number should be `8020`). 
+0

Lo stavo facendo, ma non ho inserito "file: ///" all'inizio. Ora l'ho aggiunto ma non è ancora possibile accedere a HDFS. I percorsi dei file di configurazione sono sicuramente corretti. – user1111284

+0

Pls vede la risposta aggiornata. La prima opzione avrebbe dovuto funzionare. Prova la seconda opzione. – sachin

2

Per ottenere l'accesso al sistema di file è necessario utilizzare la configurazione e un file di sistema come indicato di seguito

  1. Prendi l'istanza di configurazione
  2. Prendi l'istanza HDFS

    Configuration configuration = new Configuration(); 
    
    FileSystem hdfs = FileSystem.get(new URI("hdfs://"+HadoopLocation+":8020"), configuration); 
    

In questo caso HadoopLocation è la posizione in cui avete il vostro server di Hadoop (Possibilmente localhost)

Problemi correlati