On Apr 9, 2012, at 3:50 PM, Ralph Castain wrote: > > On Apr 9, 2012, at 2:45 PM, Kihwal Lee wrote: > >> The path, "file:/Users/rhc/yarnrun/13", indicates that your copy operation's >> destination was the local file system, instead of hdfs. > > Yeah, I realized that too after I sent the note. Sure enough - the files are > there.
Quick correction: the path exists, but as a file instead of a directory, and therefore the files to be moved there don't exist. > >> What is the value of "fs.default.name" set to in core-site.xml? > > <configuration> > <property> > <name>fs.default.name</name> > <value>hdfs://localhost:9000</value> > </property> > </configuration> > > >> >> Kihwal >> >> >> On 4/9/12 3:26 PM, "Ralph Castain" <r...@open-mpi.org> wrote: >> >> Finally managed to chase down the 0.23 API docs and get the FileStatus >> definition. No real joy here - I output the path and got: >> >> code: LOG.info("destination path " + destStatus.getPath()); >> >> 2012-04-09 14:22:48,359 INFO Hamster (Hamster.java:getApplication(265)) - >> destination path file:/Users/rhc/yarnrun/13 >> >> However, when I attempt to list it: >> >> Ralphs-iMac:bin rhc$ ./hdfs dfs -ls /Users/rhc/yarnrun >> 2012-04-09 14:22:57.640 java[14292:1903] Unable to load realm info from >> SCDynamicStore >> 2012-04-09 14:22:57.686 java[14292:1903] Unable to load realm info from >> SCDynamicStore >> ls: `/Users/rhc/yarnrun': No such file or directory >> >> I've been unable to track down the "realm" warnings, so I don't know if that >> is pertinent or not. It appears the files are not getting copied across, >> though the location looks okay to my eyes. >> >> >> On Apr 9, 2012, at 1:27 PM, Kihwal Lee wrote: >> >>> It looks like the home directory does not exist but the copy went through. >>> Can you try to LOG the key fields in destStatus including path? It might be >>> ending up in an unexpected place. >>> >>> Kihwal >>> >>> >>> >>> On 4/9/12 12:45 PM, "Ralph Castain" <r...@open-mpi.org> wrote: >>> >>> Hi Bobby >>> >>> On Apr 9, 2012, at 11:40 AM, Robert Evans wrote: >>> >>>> What do you mean by relocated some supporting files to HDFS? How do you >>>> relocate them? What API do you use? >>> >>> I use the LocalResource and FileSystem classes to do the relocation, per >>> the Hadoop example: >>> >>> // set local resources for the application master >>> // local files or archives as needed >>> // In this scenario, the jar file for the application master is part >>> of the local resources >>> Map<String, LocalResource> localResources = new HashMap<String, >>> LocalResource>(); >>> >>> LOG.info("Copy openmpi tarball from local filesystem and add to local >>> environment"); >>> // Copy the application master jar to the filesystem >>> // Create a local resource to point to the destination jar path >>> FileSystem fs; >>> FileStatus destStatus; >>> try { >>> fs = FileSystem.get(conf); >>> Path src = new Path(pathOMPItarball); >>> String pathSuffix = appName + "/" + appId.getId(); >>> Path dst = new Path(fs.getHomeDirectory(), pathSuffix); >>> try { >>> fs.copyFromLocalFile(false, true, src, dst); >>> try { >>> destStatus = fs.getFileStatus(dst); >>> LocalResource amJarRsrc = >>> Records.newRecord(LocalResource.class); >>> >>> // Set the type of resource - file or archive >>> // archives are untarred at destination >>> amJarRsrc.setType(LocalResourceType.ARCHIVE); >>> // Set visibility of the resource >>> // Setting to most private option >>> >>> amJarRsrc.setVisibility(LocalResourceVisibility.APPLICATION); >>> // Set the resource to be copied over >>> >>> amJarRsrc.setResource(ConverterUtils.getYarnUrlFromPath(dst)); >>> // Set timestamp and length of file so that the framework >>> // can do basic sanity checks for the local resource >>> // after it has been copied over to ensure it is the same >>> // resource the client intended to use with the application >>> amJarRsrc.setTimestamp(destStatus.getModificationTime()); >>> amJarRsrc.setSize(destStatus.getLen()); >>> localResources.put("openmpi", amJarRsrc); >>> } catch (Throwable t) { >>> LOG.fatal("Error on file status", t); >>> System.exit(1); >>> } >>> } catch (Throwable t) { >>> LOG.fatal("Error on copy from local file", t); >>> System.exit(1); >>> } >>> } catch (Throwable t) { >>> LOG.fatal("Error getting filesystem configuration", t); >>> System.exit(1); >>> } >>> >>> Note that this appears to work fine when the local resource type was "file" >>> - at least, I was able to make a simple program work that way. Problem I'm >>> having is when I move an archive, which is why I was hoping to look at the >>> HDFS end to see what files are present, and in what locations so I can set >>> the paths accordingly. >>> >>> Thanks >>> Ralph >>> >>> >>>> >>>> --Bobby Evans >>>> >>>> >>>> On 4/9/12 11:10 AM, "Ralph Castain" <r...@open-mpi.org> wrote: >>>> >>>> Hi folks >>>> >>>> I'm trying to develop an AM for the 0.23 branch and running into a problem >>>> that I'm having difficulty debugging. My client relocates some supporting >>>> files to HDFS, creates the application object for the AM, and submits it >>>> to the RM. >>>> >>>> The file relocation request doesn't generate an error, so I must assume it >>>> succeeded. It would be nice if there was some obvious way to verify that, >>>> but I haven't discovered it. Can anyone give me a hint? I tried asking >>>> hdfs to -ls, but all I get is that "." doesn't exist. I have no idea where >>>> the file would be placed, if it would persist once the job fails, etc. >>>> >>>> When the job is submitted, all I get is an "Error 500", which tells me >>>> nothing. Reminds me of the old days of 40 years ago when you'd get the >>>> dreaded "error 11", which meant anything from a divide by zero to a memory >>>> violation. Are there any debug flags I could set that might provide more >>>> info? >>>> >>>> Thanks >>>> Ralph >>>> >>>> >>> >>> >> >> >