Hadoop 2.6.0 sistema de archivos de navegación Java

He instalado un clúster hadoop básico en CentOS 6.6 y quiero escribir algunos progtwigs básicos (navegar por el sistema de archivos, eliminar / agregar archivos, etc.) pero estoy luchando para que incluso la aplicación más básica funcione.

Cuando ejecuto algún código básico para listar el contenido de un directorio en la consola, aparece el siguiente error:

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.(DFSClient.java:280) at org.apache.hadoop.hdfs.DFSClient.(DFSClient.java:245) at org.apache.hadoop.hdfs.DistributedFileSystem.initialize(DistributedFileSystem.java:100) at mapreducetest.MapreduceTest.App.main(App.java:36) 

Mis dependencias pom.xml

    org.apache.hadoop hadoop-common 2.6.0   org.apache.hadoop hadoop-core 1.2.1   

El código:

 import java.io.IOException; import java.net.URI; import java.net.URISyntaxException; import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.fs.FileStatus; import org.apache.hadoop.fs.FileSystem; import org.apache.hadoop.fs.Path; import org.apache.hadoop.hdfs.DistributedFileSystem; public class App { public static void main( String[] args ) throws IOException, URISyntaxException { Configuration conf = new Configuration(); FileSystem fs = new DistributedFileSystem(); fs.initialize(new URI("hdfs://localhost:9000/"), conf); for (FileStatus f :fs.listStatus(new Path("/"))) { System.out.println(f.getPath().getName()); } fs.close(); } } 

El error se produce después de llamar a fs.initialize (). Realmente no estoy seguro de cuál es el problema aquí. ¿Me faltan las dependencias? ¿Son la versión incorrecta?

Estaba ejecutando esto llamando a “java -jar app.jar …. etc” Debería haber estado usando “hadoop jar app.jar”.

Funcionó como estaba previsto cuando lo ejecuté correctamente.