Hi Evert,<br><br>We are not Hadoop experts, so we will appreciate if you could redirect the Hadoop file copying problem to the relevant mailing list. <br><br>About the execution of Hadoop in a cloud, OpenNebula can provide your Hadoop VMs with contextualization information. This means that the VM can have its hostname and IP set, and this can be accessed by other VMs. So, for instance, your master node can be given an IP address (or you can have this IP to be fixed) and then the worker nodes will be able to access this information (IP and/or hostname of the master), inside an attached ISO. More information on contextualization in OpenNebula can be found in [1]. I think you have a very interesting use case, we are happy to provide support for any contextualization related issue.<br>

<br>Hope it helps, <br><br>-Tino<br><br>[1] <a href="http://opennebula.org/doku.php?id=documentation:rel1.4:cong">http://opennebula.org/doku.php?id=documentation:rel1.4:cong</a><br><br><br>--<br>Constantino Vázquez, Grid Technology Engineer/Researcher: <a href="http://www.dsa-research.org/tinova">http://www.dsa-research.org/tinova</a><br>

DSA Research Group: <a href="http://dsa-research.org">http://dsa-research.org</a><br>Globus GridWay Metascheduler: <a href="http://www.GridWay.org">http://www.GridWay.org</a>  <br>OpenNebula Virtual Infrastructure Engine: <a href="http://www.OpenNebula.org">http://www.OpenNebula.org</a><br>


<br><br><div class="gmail_quote">On Wed, Nov 11, 2009 at 11:42 AM, Evert Lammerts <span dir="ltr"><<a href="mailto:Evert.Lammerts@sara.nl">Evert.Lammerts@sara.nl</a>></span> wrote:<br><blockquote class="gmail_quote" style="border-left: 1px solid rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">










<div link="blue" vlink="purple" lang="EN-US">

<div>

<p class="MsoNormal">Hi list,</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">We have a cluster with 44 cores on which we are evaluating OpenNebula.
All nodes run Ubuntu server 64bit. I’m trying to get Hadoop 0.20.1 to
work, so I’m following the cluster setup steps on <a href="http://hadoop.apache.org" target="_blank">hadoop.apache.org</a>.</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">As a start I created three VM’s running Ubuntu 9.10 32bit
desktop edition. After installing Sun’s 1.6 JRE I put Hadoop into my
homedir. I configured the three installations of Hadoop as follows:</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">== conf/hadoop-env.sh ==</p>

<p class="MsoNormal">Set JAVA_HOME to the appropriate directory</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">== conf/core-site.xml ==</p>

<p class="MsoNormal">Set <a href="http://fs.default.name" target="_blank">fs.default.name</a> to the ip address of the designated
namenode, on port 9000:</p>

<p class="MsoNormal"><property></p>

<p class="MsoNormal">   <name><a href="http://fs.default.name" target="_blank">fs.default.name</a></name></p>

<p class="MsoNormal">   <value>hdfs://XXX.XXX.X.XXX:9000/</value></p>

<p class="MsoNormal"> </property></p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">== conf/hdfs-site.xml ==</p>

<p class="MsoNormal">Set dfs.name.dir to a directory in my homedir:</p>

<p class="MsoNormal"><property></p>

<p class="MsoNormal">  <name>dfs.name.dir</name></p>

<p class="MsoNormal">  <value>/home/cloud/var/log/hadoop/</value></p>

<p class="MsoNormal"></property></p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">== conf/mapred-site.xml ==</p>

<p class="MsoNormal">Set mapred.job.tracker to the ip address of the designated
jobtracker, on port 9001:</p>

<p class="MsoNormal"><property></p>

<p class="MsoNormal">  <name>mapred.job.tracker</name></p>

<p class="MsoNormal">  <value>XXX.XXX.X.XXX:9001</value></p>

<p class="MsoNormal"><property></p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">Apart from Hadoop configuration I manually set the hostname for
the namenode, jobtracker and slave (datanode & tasktracker) to respectively
hadoop-namenode, hadoop-jobtracker and hadoop-slave01.</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">I’m able to start the hdfs with bin/start-dfs.sh, and
mapreduce with bin/start-mapred.sh without any exceptions. However, when I now
try to copy files onto hdfs, I’m getting the following exception:</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">$ bin/hadoop fs -put conf input</p>

<p class="MsoNormal">09/11/11 05:24:47 WARN hdfs.DFSClient: DataStreamer
Exception: org.apache.hadoop.ipc.RemoteException: java.io.IOException: File
/user/cloud/input/capacity-scheduler.xml could only be replicated to 0 nodes,
instead of 1</p>

<p class="MsoNormal">                at
org.apache.hadoop.hdfs.server.namenode.FSNamesystem.getAdditionalBlock(FSNamesystem.java:1267)</p>

<p class="MsoNormal">                at
org.apache.hadoop.hdfs.server.namenode.NameNode.addBlock(NameNode.java:422)</p>

<p class="MsoNormal">                at
sun.reflect.GeneratedMethodAccessor20.invoke(Unknown Source)</p>

<p class="MsoNormal">                at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)</p>

<p class="MsoNormal">                at java.lang.reflect.Method.invoke(Method.java:597)</p>

<p class="MsoNormal">                at
org.apache.hadoop.ipc.RPC$Server.call(RPC.java:508)</p>

<p class="MsoNormal">                at
org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:959)</p>

<p class="MsoNormal">                at
org.apache.hadoop.ipc.Server$Handler$1.run(Server.java:955)</p>

<p class="MsoNormal">                at java.security.AccessController.doPrivileged(Native
Method)</p>

<p class="MsoNormal">                at
javax.security.auth.Subject.doAs(Subject.java:396)</p>

<p class="MsoNormal">                at
org.apache.hadoop.ipc.Server$Handler.run(Server.java:953)</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">                at
org.apache.hadoop.ipc.Client.call(Client.java:739)</p>

<p class="MsoNormal">                at
org.apache.hadoop.ipc.RPC$Invoker.invoke(RPC.java:220)</p>

<p class="MsoNormal">                at $Proxy0.addBlock(Unknown Source)</p>

<p class="MsoNormal">                at
sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)</p>

<p class="MsoNormal">                at
sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)</p>

<p class="MsoNormal">                at
sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)</p>

<p class="MsoNormal">                at
java.lang.reflect.Method.invoke(Method.java:597)</p>

<p class="MsoNormal">                at
org.apache.hadoop.io.retry.RetryInvocationHandler.invokeMethod(RetryInvocationHandler.java:82)</p>

<p class="MsoNormal">                at
org.apache.hadoop.io.retry.RetryInvocationHandler.invoke(RetryInvocationHandler.java:59)</p>

<p class="MsoNormal">                at $Proxy0.addBlock(Unknown Source)</p>

<p class="MsoNormal">                at
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.locateFollowingBlock(DFSClient.java:2904)</p>

<p class="MsoNormal">                at
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.nextBlockOutputStream(DFSClient.java:2786)</p>

<p class="MsoNormal">                at org.apache.hadoop.hdfs.DFSClient$DFSOutputStream.access$2000(DFSClient.java:2076)</p>

<p class="MsoNormal">                at
org.apache.hadoop.hdfs.DFSClient$DFSOutputStream$DataStreamer.run(DFSClient.java:2262)</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">09/11/11 05:24:47 WARN hdfs.DFSClient: Error Recovery for
block null bad datanode[0] nodes == null</p>

<p class="MsoNormal">09/11/11 05:24:47 WARN hdfs.DFSClient: Could not get block
locations. Source file "/user/cloud/input/capacity-scheduler.xml" -
Aborting...</p>

<p class="MsoNormal">put: java.io.IOException: File
/user/cloud/input/capacity-scheduler.xml could only be replicated to 0 nodes,
instead of 1</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">Can anybody shed light on this? I’m guessing it’s
a configuration issue, so that’s the direction I’m looking at.</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">Another question I have is more generally about getting Hadoop
to work on a cloud. The issue I foresee is about the ip addresses of the
masters and slaves. How do I dynamically configure the hadoop instances during
start-up of the images to end up with a namenode, a jobtracker and a number of
slaves? I’ll need the ip addresses of all machines and all machines need
a unique hostname… Does anybody have any experience with this?</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal">Thanks in advance!</p>

<p class="MsoNormal"> </p>

<p class="MsoNormal"><span style="font-size: 10pt; font-family: "Courier New";">Evert
Lammerts</span></p>

<p class="MsoNormal"><span style="font-size: 10pt; font-family: "Courier New";">Adviseur</span></p>

<p class="MsoNormal"><span style="font-size: 10pt; font-family: "Courier New";">SARA
Computing & Network Services </span></p>

<p class="MsoNormal"><span style="font-size: 10pt; font-family: "Courier New";">High
Performance Computing & Visualization</span></p>

<p class="MsoNormal"><span style="font-size: 10pt; font-family: "Courier New";">eScience
Support Group</span></p>

<p class="MsoNormal"><span style="font-size: 10pt; font-family: "Courier New";"> </span></p>

<p class="MsoNormal"><span style="font-size: 10pt; font-family: "Courier New";">Phone:
+31 20 888 4101</span></p>

<p class="MsoNormal"><span style="font-size: 10pt; font-family: "Courier New";">Email:
<a href="mailto:evert.lammerts@sara.nl" target="_blank">evert.lammerts@sara.nl</a></span></p>

<p class="MsoNormal"> </p>

</div>

</div>


<br>_______________________________________________<br>
Users mailing list<br>
<a href="mailto:Users@lists.opennebula.org">Users@lists.opennebula.org</a><br>
<a href="http://lists.opennebula.org/listinfo.cgi/users-opennebula.org" target="_blank">http://lists.opennebula.org/listinfo.cgi/users-opennebula.org</a><br>
<br></blockquote></div><br>