Coder Social home page Coder Social logo

amrutha00 / yacs Goto Github PK

View Code? Open in Web Editor NEW
0.0 3.0 1.0 230 KB

A Python-based simulation of a Hadoop 1.0 centralized job scheduler and resource allocator. Implements features like task dependency resolution, fault tolerance, and support for randomization in a distributed system. Utilizes multi-threading, sockets, and synchronization for efficient scheduling of MapReduce jobs.

Shell 0.52% Python 99.48%

yacs's Introduction

YACS: Yet Another Centralized Scheduler

About

This project aims to simulate a classic job scheduler in a distributed system. The architecture consists of one master machine and several worker machines.

The Master machine listens for job requests, parses the various the various tasks that make up the job and schedules these tasks to the workers based on the given algorithm. The master is responsible for resolving dependencies among the tasks in a job and keeping track of jobs running in parallel in the worker machines.

Three sheduling algorithms were implemented namely random, round-robin and least-loaded (worst fit)

The worker machines listen for tasks from the master, run the given tasks and update the master whenever a task completes.

Steps to run the project:

  1. cd into the 'local_files' directory and run start-all.sh to set up the master and the worker files.
  2. Run the following command: python3 requests.py 5
    This code sends five job requests to the master. To change the number of jobs, simply change the number passed as an argument to the requests.py
  3. To stop all the processes, run end-all.sh.

Submission Files:

The files required for submission are present in the src folder.

  1. master.py
  2. worker.py
  3. analysis.py
  4. BD_0210_0416_1879_2057_report.pdf

Note:

  1. To change the number of workers in the cluster, modify the start-all.sh script.
  2. To change the port numbers on which the workers listen to, modify the config.json and start-all.sh scripts.
  3. Each worker has its own log, named worker<worker_id>.log
  4. The scheduling algorithm can be changed by modifying the start-all.sh script
  5. To get more insight from the log files, run python3 analysis.py.To view the plots,navigate to the Visualisation folder.

yacs's People

Contributors

amrutha00 avatar sanketd25 avatar

Watchers

James Cloos avatar  avatar  avatar

Forkers

sanketd25

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.