On Apr 14, 2009, at 2:41 PM, Stephen Green wrote:


On Apr 14, 2009, at 12:51 PM, Jeff Eastman wrote:

Hi Stephen,

You are out on the bleeding edge with EMR.

Yeah, but the view is lovely from here!

I've been able to run the kmeans example directly on a small EC2 cluster that I started up myself (using the Hadoop src/contrib/ec2 scripts). I have not yet tried EMR (just got an account yesterday), but I see that it requires you to have your data in S3 as opposed to HDFS.

The job first runs the InputDriver to copy the raw test data into Mahout Vector external representation after deleting any pre- existing output files. It looks to me like the two delete() snippets you show are pretty equivalent. If you have no pre- existing output directory, the Mahout snippet won't attempt to delete it.

I managed to figure that out :-) I'm pretty comfortable with the ideas behind MapReduce, but being confronted with my first Job is a bit more daunting than I expected.

I too am at a loss to explain what you are seeing. If you can post more results I can try to help you read the tea leaves...

I noticed that the CloudBurst job just deleted the directory without checking for existence and so I tried the same thing with Mahout:

java.lang.IllegalArgumentException: Wrong FS: s3n://mahout-output, expected: hdfs://domU-12-31-38-00-6C-86.compute-1
.internal:9000
at org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java: 320) at org .apache .hadoop .dfs.DistributedFileSystem.checkPath(DistributedFileSystem.java:84) at org .apache .hadoop .dfs.DistributedFileSystem.getPathName(DistributedFileSystem.java:140) at org .apache .hadoop.dfs.DistributedFileSystem.delete(DistributedFileSystem.java: 210) at org .apache .mahout.clustering.syntheticcontrol.kmeans.Job.runJob(Job.java:83) at org .apache.mahout.clustering.syntheticcontrol.kmeans.Job.main(Job.java: 46)

So no joy there.

Should I see if I can isolate this as an s3n problem? I suppose I could try running the Hadoop job locally with it reading and writing the data from S3 and see if it suffers from the same problem. At least then I could debug inside Hadoop.

Of course, I'm doing all this in Hadoop 0.18.3, and if it is an s3n problem it might have been fixed already. That doesn't help much running on EMR, I guess.

I'm also going to start a run on EMR that does away with the whole exists/delete check and see if that works.

Following up to myself (my wife will tell you that I talk to myself!) I removed a number of the exists/delete checks: in CanopyClusteringJob, CanopyDriver, KMeansDriver, and ClusterDriver. This allowed the jobs to progress, but they died the death a little later with the following exception (and a few more, I can send the whole log if you like):

java.lang.IllegalArgumentException: Wrong FS: s3n://mahoutput/canopies/ part-00000, expected: hdfs://domU-12-31-39-00-A5-44.compute-1.internal: 9000 at org.apache.hadoop.fs.FileSystem.checkPath(FileSystem.java: 320) at org .apache .hadoop.dfs.DistributedFileSystem.checkPath(DistributedFileSystem.java: 84) at org .apache .hadoop .dfs.DistributedFileSystem.getPathName(DistributedFileSystem.java:140) at org .apache .hadoop .dfs.DistributedFileSystem.getFileStatus(DistributedFileSystem.java:408) at org.apache.hadoop.fs.FileSystem.getLength(FileSystem.java: 695) at org.apache.hadoop.io.SequenceFile $Reader.<init>(SequenceFile.java:1420) at org.apache.hadoop.io.SequenceFile $Reader.<init>(SequenceFile.java:1415) at org .apache .mahout.clustering.canopy.ClusterMapper.configure(ClusterMapper.java:69) at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:58) at org .apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:82) at org.apache.hadoop.mapred.MapRunner.configure(MapRunner.java:33) at org.apache.hadoop.util.ReflectionUtils.setConf(ReflectionUtils.java:58) at org .apache.hadoop.util.ReflectionUtils.newInstance(ReflectionUtils.java:82)
        at org.apache.hadoop.mapred.MapTask.run(MapTask.java:223)
at org.apache.hadoop.mapred.TaskTracker $Child.main(TaskTracker.java:2198)

Looking at the exception message there, I would almost swear that it things the whole s3n path is the name of a FS that it doesn't know about, but that might just be a bad message. This message repeats a few times (retrying failed mappers, I guess?) and then the job fails.

One thing that occurred to me: the mahout examples job has the hadoop 0.19.1 core jar in it. Could I be seeing some kind of version skew between the hadoop in the job file and the one on EMR? Although it worked fine with a local 0.18.3, so maybe not.

I'm going to see if I can get the stock Mahout to run with s3n inputs and outputs tomorrow and I'll let you all know how that goes.

Steve
--
Stephen Green                      //   [email protected]
Principal Investigator             \\   http://blogs.sun.com/searchguy
Aura Project                       //   Voice: +1 781-442-0926
Sun Microsystems Labs              \\   Fax:   +1 781-442-1692



Reply via email to