예제 #1
0
        public void receiveJobRequest(JobMetadata jobMetadata)
        {
            Common.Logger().LogInfo("Job Request received", string.Empty, string.Empty);
            //now he is a Job Tracker. Implement all job tracker functions upon this
            //Start channel with other workers as Job tracker

            JOBTRACKER_URL = serviceUrl;//I set my own as job tracker url
            isJobTracker   = true;

            CLIENT_URL = jobMetadata.ClientUrl;

            Console.WriteLine("Job request received for " + JOBTRACKER_URL, string.Empty, string.Empty);

            //start jobtracker threads
            //TrackerDetails trackerDetails = new TrackerDetails(CLIENT_URL, existingWorkerMap);
            trackerTask = new TrackerTask(CLIENT_URL, existingWorkerMap, workerId);
            client      = (IClient)Activator.GetObject(typeof(IClient), CLIENT_URL);

            trackerTask.notifyWorkersForJobStart();
            if (existingWorkerMap.Count > 1)
            {
                trackerTask.startHeartBeat();//should work even with 1
            }

            trackerTask.splitJob(jobMetadata);
        }
예제 #2
0
        public void submitTask(String entryUrl, string inputFile, string outputDir, int splits, string mapperFunctionName, string dllPath)
        {
            hasJobCompleted    = false;
            startTime          = DateTime.Now;
            this.inputFilePath = inputFile;
            this.outputDir     = outputDir;
            this.mapperName    = mapperFunctionName;
            this.dllPath       = dllPath;


            // FileInfo f = new FileInfo(inputFilePath);
            // long s1 = f.Length;
            //JobMetadata jobDetails = new JobMetadata(s1, splits, url);

            byte[]      input      = File.ReadAllBytes(inputFilePath);
            JobMetadata jobDetails = new JobMetadata(input.Length, splits, url);


            contactingWorker = (IWorkerTracker)Activator.GetObject(typeof(IWorkerTracker), entryUrl);
            contactingWorker.receiveJobRequest(jobDetails);//calling the job tracker
        }