I have 3 data nodes running, while running a job i am getting the following given below error ,
java.io.IOException: File /user/ashsshar/olhcache/loaderMap9b663bd9 could only be replicated to 0 nodes instead of minReplication (=1). There are 3 datanode(s) running and 3 node(s) are excluded in this operation.
at org.apache.hadoop.hdfs.server.blockmanagement.BlockManager.chooseTarget(BlockManager.java:1325)
This error mainly comes when our DataNode instances have ran out of space or if DataNodes are not running.
I tried restarting the DataNodes but still getting the same error.
dfsadmin -reports at my cluster nodes clearly shows a lots of space is available.
I am not sure why this is happending.
1.Stop all Hadoop daemons
for x in `cd /etc/init.d ; ls hadoop*` ; do sudo service $x stop ; done
2.Remove all files from /var/lib/hadoop-hdfs/cache/hdfs/dfs/name
Eg: devan@Devan-PC:~$ sudo rm -r /var/lib/hadoop-hdfs/cache/
3.Format Namenode
sudo -u hdfs hdfs namenode -format
4.Start all Hadoop daemons
for x in `cd /etc/init.d ; ls hadoop*` ; do sudo service $x start ; done
Stop All Hadoop Service
I had the same issue, I was running very low on disk space. Freeing up disk solved it.
What I usually do when this happens is that I go to tmp/hadoop-username/dfs/ directory and manually delete the data and name folders (assuming you are running in a Linux environment).
Then format the dfs by calling bin/hadoop namenode -format (make sure that you answer with a capital Y when you are asked whether you want to format; if you are not asked, then re-run the command again).
You can then start hadoop again by calling bin/start-all.sh
I had this problem and I solved it as bellow:
Find where are your datanode and namenode metadata/data saved; if you cannot find it, simply do this command on mac to find it (there are located in a folder called "tmp")
find /usr/local/Cellar/ -name "tmp";
find command is like this: find <"directory"> -name <"any string clue for that directory or file">
After finding that file, cd into it.
/usr/local/Cellar//hadoop/hdfs/tmp
then cd to dfs
then using -ls command see that data and name directories are located there.
Using remove command, remove them both:
rm -R data . and rm -R name
Go to bin folder and end everything if you already have not done it:
sbin/end-dfs.sh
Exit from the server or localhost.
Log into the server again: ssh <"server name">
start the dfs:
sbin/start-dfs.sh
Format the namenode for being sure:
bin/hdfs namenode -format
you can now use hdfs commands to upload your data into dfs and run MapReduce jobs.