Пример #1
0
            /// <exception cref="System.IO.IOException"/>
            public Job(LocalJobRunner _enclosing, JobID jobid, string jobSubmitDir)
            {
                this._enclosing    = _enclosing;
                this.systemJobDir  = new Path(jobSubmitDir);
                this.systemJobFile = new Path(this.systemJobDir, "job.xml");
                this.id            = jobid;
                JobConf conf = new JobConf(this.systemJobFile);

                this.localFs = FileSystem.GetLocal(conf);
                string user = UserGroupInformation.GetCurrentUser().GetShortUserName();

                this.localJobDir = this.localFs.MakeQualified(new Path(new Path(conf.GetLocalPath
                                                                                    (LocalJobRunner.jobDir), user), jobid.ToString()));
                this.localJobFile = new Path(this.localJobDir, this.id + ".xml");
                // Manage the distributed cache.  If there are files to be copied,
                // this will trigger localFile to be re-written again.
                this.localDistributedCacheManager = new LocalDistributedCacheManager();
                this.localDistributedCacheManager.Setup(conf);
                // Write out configuration file.  Instead of copying it from
                // systemJobFile, we re-write it, since setup(), above, may have
                // updated it.
                OutputStream @out = this.localFs.Create(this.localJobFile);

                try
                {
                    conf.WriteXml(@out);
                }
                finally
                {
                    @out.Close();
                }
                this.job = new JobConf(this.localJobFile);
                // Job (the current object) is a Thread, so we wrap its class loader.
                if (this.localDistributedCacheManager.HasLocalClasspaths())
                {
                    this.SetContextClassLoader(this.localDistributedCacheManager.MakeClassLoader(this
                                                                                                 .GetContextClassLoader()));
                }
                this.profile = new JobProfile(this.job.GetUser(), this.id, this.systemJobFile.ToString
                                                  (), "http://localhost:8080/", this.job.GetJobName());
                this.status = new JobStatus(this.id, 0.0f, 0.0f, JobStatus.Running, this.profile.
                                            GetUser(), this.profile.GetJobName(), this.profile.GetJobFile(), this.profile.GetURL
                                                ().ToString());
                this._enclosing.jobs[this.id] = this;
                this.Start();
            }