{"id":13740530,"url":"https://github.com/ceteri/exelixi","last_synced_at":"2025-03-30T18:31:09.421Z","repository":{"id":11895559,"uuid":"14458596","full_name":"ceteri/exelixi","owner":"ceteri","description":"Exelixi is a distributed framework based on Apache Mesos, mostly implemented in Python using gevent for high-performance concurrency. It is intended to run cluster computing jobs (partitioned batch jobs, which include some messaging) in pure Python. By default, it runs genetic algorithms at scale.","archived":true,"fork":false,"pushed_at":"2014-01-17T20:02:27.000Z","size":12710,"stargazers_count":133,"open_issues_count":2,"forks_count":23,"subscribers_count":11,"default_branch":"master","last_synced_at":"2025-03-12T12:41:38.015Z","etag":null,"topics":[],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ceteri.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2013-11-17T00:53:07.000Z","updated_at":"2025-03-07T17:40:33.000Z","dependencies_parsed_at":"2022-08-29T14:40:06.919Z","dependency_job_id":null,"html_url":"https://github.com/ceteri/exelixi","commit_stats":null,"previous_names":[],"tags_count":2,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceteri%2Fexelixi","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceteri%2Fexelixi/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceteri%2Fexelixi/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ceteri%2Fexelixi/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ceteri","download_url":"https://codeload.github.com/ceteri/exelixi/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":246126720,"owners_count":20727594,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":[],"created_at":"2024-08-03T04:00:49.214Z","updated_at":"2025-03-30T18:31:04.403Z","avatar_url":"https://github.com/ceteri.png","language":"Python","funding_links":[],"categories":["Frameworks"],"sub_categories":["Experimental/Example/Unsorted"],"readme":"# Exelixi\n\n**Exelixi** is a distributed framework based on [Apache Mesos],\nmostly implemented in Python using [gevent] for high-performance concurrency\nIt is intended to run cluster computing jobs (partitioned batch jobs, which include some messaging) in pure Python.\nBy default, it runs [genetic algorithms] at scale.\nHowever, it can handle a broad range of other problem domains by \nusing `--uow` command line option to override the `UnitOfWorkFactory` class definition.\n\nPlease see the [project wiki](https://github.com/ceteri/exelixi/wiki) for more details,\nincluding a [tutorial](https://github.com/ceteri/exelixi/wiki/Tutorial:-Fog-Computing-at-Hella-Scale)\non how to build Mesos-based frameworks.\n\n\n### Quick Start\n\nTo check out the [GA] on a laptop (with Python 2.7 installed), simply run:\n\n    ./src/ga.py\n\nOtherwise, to run at scale, the following steps will help you get **Exelixi** running on [Apache Mesos].\nFor help in general with command line options:\n\n    ./src/exelixi.py -h\n\nThe following instructions are based on using the [Elastic Mesos] service,\nwhich uses Ubuntu Linux servers running on [Amazon AWS].\nEven so, the basic outline of steps shown here apply in general.\n\nFirst, launch an [Apache Mesos] cluster.\nOnce you have confirmation that your cluster is running\n(e.g., [Elastic Mesos] sends you an email messages with a list of masters and slaves)\nthen use `ssh` to login on any of the masters:\n\n    ssh -A -l ubuntu \u003cmaster-public-ip\u003e\n\nYou must install the [Python bindings](https://github.com/apache/mesos/tree/master/src/python) for [Apache Mesos].\nThe default version of Mesos changes in this code as there are updates to [Elastic Mesos](https://elastic.mesosphere.io/),\nsince the tutorials are based on that service.\nYou can check [http://mesosphere.io/downloads/](http://mesosphere.io/downloads/) for the latest.\nIf you run Mesos in different environment, \nsimply make a one-line change to the `EGG` environment variable in the `bin/local_install.sh` script.\nAlso, you need to install the **Exelixi** source.\n\nOn the Mesos master, download the `master` branch of the **Exelixi** code repo on GitHub and install the required libraries:\n\n    wget https://github.com/ceteri/exelixi/archive/master.zip ; \\\n    unzip master.zip ; \\\n    cd exelixi-master ; \\\n    ./bin/local_install.sh\n\nIf you've customized the code by forking your own GitHub code repo, then substitute that download URL instead.\nAlternatively, if you've customized by subclassing the `uow.UnitOfWorkFactory` default [GA],\nthen place that Python source file into the `src/` subdirectory.\n\nNext, run the installation command on the master, to set up each of the slaves:\n\n    ./src/exelixi.py -n localhost:5050 | ./bin/install.sh\n\nNow launch the Framework, which in turn launches the worker services remotely on slave nodes.\nIn the following case, it runs workers on two slave nodes:\n\n    ./src/exelixi.py -m localhost:5050 -w 2\n\nOnce everything has been set up successfully, the log file in `exelixi.log` will show a line:\n\n    all worker services launched and init tasks completed\n\nFrom there, the [GA] runs.\nSee a [GitHub gist](https://gist.github.com/ceteri/7609046) for an example of a successful run.\n\n\n### Blame List\n\n[Paco Nathan](https://github.com/ceteri)\n\n\n[Amazon AWS]: http://aws.amazon.com/\n[Apache Mesos]: http://mesos.apache.org/\n[Elastic Mesos]: https://elastic.mesosphere.io/\n[GA]: http://en.wikipedia.org/wiki/Genetic_algorithm\n[Python egg]: https://wiki.python.org/moin/egg\n[genetic algorithms]: http://en.wikipedia.org/wiki/Genetic_algorithm\n[gevent]: http://www.gevent.org/\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceteri%2Fexelixi","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fceteri%2Fexelixi","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fceteri%2Fexelixi/lists"}