Hi
  This Could be due to the Following reason

1) The *NameNode <http://wiki.apache.org/hadoop/NameNode>* does not have
any available DataNodes
 2) Namenode not able to start properly
 3) other wise some IP Issue .
    Note:- Pleaes  mention localhost instead of 127.0.0.1 (If it is in
local)

   Follow URL:
http://wiki.apache.org/hadoop/FAQ#What_does_.22file_could_only_be_replicated_to_0_nodes.2C_instead_of_1.22_mean.3F


Thanks
 samir


On Sat, May 19, 2012 at 8:59 PM, Todd McFarland <toddmcf2...@gmail.com>wrote:

> Hi folks,
>
> (Resending to this group, sent to common-dev before, pretty sure that's for
> Hadoop internal development - sorry for that..)
>
> I'm pretty stuck here.  I've been researching for hours and I haven't made
> any forward progress on this one.
>
> I have a vmWare installation of Cloudera Hadoop 0.20.  The following
> commands to create a directory and copy a file from the shared folder *work
> fine*, so I'm confident everything is setup correctly:
>
> [cloudera@localhost bin]$ hadoop fs -mkdir /user/cloudera/testdir
> [cloudera@localhost bin]$ hadoop fs -put /mnt/hgfs/shared_folder/file1.txt
> /user/cloudera/testdir/file1.txt
>
> The file shows up fine in the HDFS doing it this way on the Linux VM.
>
> *However*, when I try doing the equivalent operation in Java everything
> works great until I try to close() FSDataOutputStream.
> I'm left with the new directory and a zero byte size file.  One suspicious
> thing is that the user is "admin" instead of "cloudera" which I haven't
> figured out why.  Here is the error:
>
> 12/05/19 09:45:46 INFO hdfs.DFSClient: Exception in createBlockOutputStream
> 127.0.0.1:50010 java.net.ConnectException: Connection refused: no further
> information
> 12/05/19 09:45:46 INFO hdfs.DFSClient: Abandoning block
> blk_1931357292676354131_1068
> 12/05/19 09:45:46 INFO hdfs.DFSClient: Excluding datanode 127.0.0.1:50010
> 12/05/19 09:45:46 WARN hdfs.DFSClient: DataStreamer Exception:
> org.apache.hadoop.ipc.RemoteException: java.io.IOException: File
> /user/admin/testdir/file1.txt could only be replicated to 0 nodes, instead
> of 1
>    at
>
> org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1533)
>    at
> org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:667)
>    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>    at
>
> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
>    at
>
> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
>
> There are certainly lots of search references to "*could only be replicated
> to 0 nodes, instead of 1*" but chasing down those suggestions hasn't
> helped.
> I have run *jps* and* netstat* and that looks good.  All services are
> running, all port seem to be good.  The *health check* looks good, plenty
> of disk space, no failed nodes...
>
> Here is the java (it fails when it hits "fs.close()":
>
> import java.io.BufferedReader;
> import java.io.FileInputStream;
> import java.io.FileReader;
> import java.io.IOException;
> import org.apache.hadoop.conf.Configuration;
> import org.apache.hadoop.fs.FSDataInputStream;
> import org.apache.hadoop.fs.FSDataOutputStream;
> import org.apache.hadoop.fs.FileSystem;
> import org.apache.hadoop.fs.Path;
>
> public class TestFileTrans {
>
>    public static void main(String[] args) {
>
>        Configuration config = new Configuration();
>
>        config.addResource(new
> Path("c:/_bigdata/client_libs/core-site.xml"));
>        config.addResource(new
> Path("c:/_bigdata/client_libs/hdfs-site.xml"));
>
>        System.out.println("hadoop.tmp.dir: " +
> config.get("hadoop.tmp.dir"));
>        try{
>            FileSystem dfs = FileSystem.get(config);
>
>            // this will default to admin unless the workingDirectory is
> explicitly set..
>
>            System.out.println("HDFS Working Directory: " +
> dfs.getWorkingDirectory().toString());
>
>            String dirName = "testdir";
>            Path src = new Path(dfs.getWorkingDirectory()+"/"+dirName);
>            dfs.mkdirs(src);
>
>            System.out.println("HDFS Directory created: " +
> dfs.getWorkingDirectory().toString());
>
>            loadFile(dfs, src);
>
>        }catch(IOException e){
>            System.out.println("Error" + e.getMessage());
>        }
>
>    }
>
>    private static void loadFile(FileSystem dfs, Path src) throws
> IOException{
>
>        FileInputStream fis = new
> FileInputStream("c:/_bigdata/shared_folder/file1.txt");
>
>        int len = fis.available();
>
>        byte[] btr = new byte[len];
>
>        fis.read(btr);
>
>        FSDataOutputStream fs = dfs.create(new Path(src.toString()
> +"/file1.txt"));
>
>        fs.write(btr);
>
>        fs.flush();
>        fs.close();
>
>    }
> }
>
> Any help would be greatly appreciated!
>

Reply via email to