Hadoop Ha namenode client java


Je suis nouveau sur hdfs. J'écris un client Java qui peut se connecter et écrire des données dans un cluster hadoop distant.

String hdfsUrl = "hdfs://xxx.xxx.xxx.xxx:8020";
FileSystem fs = FileSystem.get(hdfsUrl , conf);

Cela fonctionne bien. Mon problème est de savoir comment gérer le cluster hadoop activé par HA. Le cluster hadoop activé par HA aura deux namenodes - un namenode actif et un namenode en veille. Comment puis-je identifier le namenode actif à partir de mon code client lors de l'exécution.

Http://docs.hortonworks.com/HDPDocuments/HDP2/HDP-2.1.1/bk_system-admin-guide/content/ch_hadoop-ha-3-1.html a les détails suivants sur une classe java qui peut être utilisée pour contacter active namenodes dfs.client.basculement.proxy.Fournisseur.[ID nameservice ID]:

This property specifies the Java class that HDFS clients use to contact the Active NameNode. DFS     Client uses this Java class to determine which NameNode is the current Active and therefore which NameNode is currently serving client requests.

Use the ConfiguredFailoverProxyProvider implementation if you are not using a custom implementation.

Par exemple:

<property>
  <name>dfs.client.failover.proxy.provider.mycluster</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

Comment puis-je utiliser cette classe dans mon client java ou existe-t-il un autre moyen d'identifier le namenode actif...

Author: d123, 2014-11-11

1 answers

Je ne sais pas si c'est le même contexte, mais étant donné un cluster hadoop, il faut mettre le core-site.xml (extrait du cluster) dans application classpath ou dans un objet de configuration hadoop(org.apache.hadoop.conf.Configuration), puis accédez à ce fichier avec l'URL "hdfs://mycluster/path/to/file"mycluster est le nom du cluster hadoop. Comme ça, j'ai lu avec succès un fichier du cluster hadoop dans une application spark.

 0
Author: dumitru, 2016-02-18 12:25:13