Obtenir la configuration hadoop dans Java util


J'écris un utilitaire Java qui doit accéder au DFS, j'ai donc besoin d'un objet Configuration. Quand j'en crée un simplement en utilisant

Configuration conf = new Configuration()

Il ne semble pas trouver le DFS et utilise simplement le système de fichiers local; printing

fs.getHomeDirectory()

Donne mon répertoire personnel local. J'ai essayé d'ajouter core-site.xml,mapred-site.xml,fil-site.xml, et hdfs-site.xml à la configuration en tant que ressources, mais cela ne change rien. Que dois-je faire pour l'obtenir pour ramasser le HDFS les paramètres?

Merci d'avoir lu

Author: user1111284, 2015-07-22

2 answers

La raison pour laquelle il pointe vers votre système de fichiers local est core-site.xml et hdfs-site.xml n'est pas ajouté correctement. Ci-dessous l'extrait de code vous aidera.

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());

Mise à jour:

L'option ci-dessus aurait dû fonctionner, Il semble que certains problèmes dans le fichier de configuration ou le chemin. Vous avez une autre option au lieu d'ajouter des fichiers de configuration à l'aide de la méthode addResource, utilisez la méthode set. Ouvrez votre site principal.fichier XML et trouver la valeur de fs.defaultFS. Utilisez la méthode set au lieu de la méthode 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`). 
 13
Author: SachinJ, 2017-07-17 15:11:15

Pour obtenir l'accès au système de Fichiers, vous devez utiliser la configuration et un système de fichiers comme indiqué ci-dessous

  1. Obtenir l'instance de configuration
  2. Obtenir l'instance HDFS

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

Dans ce cas, HadoopLocation est l'emplacement dans lequel vous avez votre serveur hadoop (éventuellement Localhost)

 2
Author: Matthew, 2017-07-17 15:10:41