hadoop-mapreduce-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Harsh J <ha...@cloudera.com>
Subject Re: " No FileSystem for scheme: hdfs " in namenode HA
Date Fri, 16 Aug 2013 09:37:36 GMT
You require hadoop-hdfs dependency for HDFS FS to get initialized.
Your issue lies in how you're running the application, not your code.
If you use Maven, include "hadoop-client" dependency to get all the
required dependency for a hadoop client program. Otherwise, run your
program with "hadoop jar", after ensuring "hadoop classpath" is indeed
including your HDFS directories too.

On Fri, Aug 16, 2013 at 12:03 PM, ch huang <justlooks@gmail.com> wrote:
> hi,all i setup namenode HA hadoop cluster
>
> and write some demo code
>
> import java.io.FileNotFoundException;
> import java.io.IOException;
> import java.net.URI;
> import org.apache.hadoop.conf.Configuration;
> import org.apache.hadoop.fs.FSDataOutputStream;
> import org.apache.hadoop.fs.FileStatus;
> import org.apache.hadoop.fs.FileSystem;
> import org.apache.hadoop.fs.Path;
>
> public class TestConnect {
>  private static void appendToHdfs(String content,String dst) throws
> FileNotFoundException,IOException {
>
>     Configuration conf = new Configuration();
>     conf.set("dfs.replication", "2");
>   //  System.out.println("append is : "+conf.get("dfs.support.append"));
>   //  System.out.println("append is : "+conf.get("dfs.name.dir"));
>     FileSystem fs = FileSystem.get(URI.create(dst), conf);
>     FSDataOutputStream out = fs.append(new Path(dst));
>     int readLen = content.getBytes().length;
>
>     out.write(content.getBytes(), 0, readLen);
>
>     out.close();
>     fs.close();
>    }
>
>     public static void createNewHDFSFile(String toCreateFilePath, String
> content) throws IOException
>      {
>          Configuration config = new Configuration();
>          FileSystem hdfs =
> FileSystem.get(URI.create(toCreateFilePath),config);
>
>          FSDataOutputStream os = hdfs.create(new Path(toCreateFilePath));
>          os.write(content.getBytes("UTF-8"));
>
>          os.close();
>
>          hdfs.close();
>      }
>
>     public static void listAll(String dir) throws IOException
>      {
>          Configuration conf = new Configuration();
>          FileSystem fs = FileSystem.get(URI.create(dir),conf);
>
>          FileStatus[] stats = fs.listStatus(new Path(dir));
>
>          for(int i = 0; i < stats.length; ++i)
>          {
>              if (stats[i].isFile())
>              {
>                  // regular file
>                  System.out.println(stats[i].getPath().toString());
>              }
>              else if (stats[i].isDirectory())
>              {
>                  // dir
>                  System.out.println(stats[i].getPath().toString());
>              }
>              else if(stats[i].isSymlink())
>              {
>                  // is s symlink in linux
>                  System.out.println(stats[i].getPath().toString());
>              }
>
>          }
>          fs.close();
>      }
>  public static void main(String[] args) {
>
>   // TODO Auto-generated method stub
>   try {
>
>    createNewHDFSFile("hdfs://mycluster/alex","mycluster");
>    listAll("hdfs://mycluster/alex");
>    Configuration config = new Configuration();
>    System.out.println("append is : "+config.get("dfs.hosts"));
>   } catch (FileNotFoundException e) {
>    // TODO Auto-generated catch block
>    e.printStackTrace();
>   } catch (IOException e) {
>    // TODO Auto-generated catch block
>    e.printStackTrace();
>   }
>  }
>
> }
> and client configuration file :hdfs-site.xml
>
> <property>
>  <name>fs.defaultFS</name>
>  <value>hdfs://mycluster</value>
> </property>
> <property>
>       <name>ha.zookeeper.quorum</name>
>       <value>node1:2181,node2:2181,node3:2181</value>
> </property>
>
> <property>
>         <name>dfs.nameservices</name>
>         <value>mycluster</value>
> </property>
> <property>
>         <name>dfs.ha.namenodes.mycluster</name>
>         <value>nn1,nn2</value>
> </property>
> <property>
>         <name>dfs.namenode.rpc-address.mycluster.nn1</name>
>         <value>node1:8020</value>
> </property>
> <property>
>         <name>dfs.namenode.rpc-address.mycluster.nn2</name>
>         <value>node2:8020</value>
> </property>
> <property>
>         <name>dfs.namenode.shared.edits.dir</name>
>         <value>qjournal://node1:8485;node2:8485;node3:8485/mycluster</value>
> </property>
>
> <property>
>         <name>dfs.client.failover.proxy.provider.mycluster</name>
>
> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
> </property>
>
> when i run the test ,i get some error information,any one can help?
>
> log4j:WARN No appenders could be found for logger
> (org.apache.hadoop.metrics2.lib.MutableMetricsFactory).
> log4j:WARN Please initialize the log4j system properly.
> log4j:WARN See http://logging.apache.org/log4j/1.2/faq.html#noconfig for
> more info.
> java.io.IOException: No FileSystem for scheme: hdfs
>  at org.apache.hadoop.fs.FileSystem.getFileSystemClass(FileSystem.java:2296)
>  at org.apache.hadoop.fs.FileSystem.createFileSystem(FileSystem.java:2303)
>  at org.apache.hadoop.fs.FileSystem.access$200(FileSystem.java:87)
>  at org.apache.hadoop.fs.FileSystem$Cache.getInternal(FileSystem.java:2342)
>  at org.apache.hadoop.fs.FileSystem$Cache.get(FileSystem.java:2324)
>  at org.apache.hadoop.fs.FileSystem.get(FileSystem.java:351)
>  at TestConnect.createNewHDFSFile(TestConnect.java:35)
>  at TestConnect.main(TestConnect.java:80)



-- 
Harsh J

Mime
View raw message