All Projects → dash1291 → infantry

dash1291 / infantry

Licence: other
Run MapReduce in user's browser.

Programming Languages

javascript
184084 projects - #8 most used programming language
HTML
75241 projects
python
139335 projects - #7 most used programming language

Projects that are alternatives of or similar to infantry

Powerjob
Enterprise job scheduling middleware with distributed computing ability.
Stars: ✭ 3,231 (+22978.57%)
Mutual labels:  distributed, mapreduce
Redisson
Redisson - Redis Java client with features of In-Memory Data Grid. Over 50 Redis based Java objects and services: Set, Multimap, SortedSet, Map, List, Queue, Deque, Semaphore, Lock, AtomicLong, Map Reduce, Publish / Subscribe, Bloom filter, Spring Cache, Tomcat, Scheduler, JCache API, Hibernate, MyBatis, RPC, local cache ...
Stars: ✭ 17,972 (+128271.43%)
Mutual labels:  distributed, mapreduce
dtail
DTail is a distributed DevOps tool for tailing, grepping, catting logs and other text files on many remote machines at once.
Stars: ✭ 112 (+700%)
Mutual labels:  distributed, mapreduce
ParallelUtilities.jl
Fast and easy parallel mapreduce on HPC clusters
Stars: ✭ 28 (+100%)
Mutual labels:  distributed, mapreduce
tensorpeers
p2p peer-to-peer training of tensorflow models
Stars: ✭ 57 (+307.14%)
Mutual labels:  distributed
web-click-flow
网站点击流离线日志分析
Stars: ✭ 14 (+0%)
Mutual labels:  mapreduce
PeARS-orchard
This is the decentralised version of PeARS, the people's search engine, to be taken as Phase 1 of the fully distributed system.
Stars: ✭ 34 (+142.86%)
Mutual labels:  distributed
Gringofts
Gringofts makes it easy to build a replicated, fault-tolerant, high throughput and distributed event-sourced system.
Stars: ✭ 84 (+500%)
Mutual labels:  distributed
HurdleDMR.jl
Hurdle Distributed Multinomial Regression (HDMR) implemented in Julia
Stars: ✭ 19 (+35.71%)
Mutual labels:  distributed
ddrt
An elixir implementation of Rtree, optimized for fast updates.
Stars: ✭ 38 (+171.43%)
Mutual labels:  distributed
future.callr
🚀 R package future.callr: A Future API for Parallel Processing using 'callr'
Stars: ✭ 52 (+271.43%)
Mutual labels:  parallel-processing
durablefunctions-mapreduce-dotnet
An implementation of MapReduce on top of C# Durable Functions over the NYC 2017 Taxi dataset to compute average ride time per-day
Stars: ✭ 20 (+42.86%)
Mutual labels:  mapreduce
distlock
The universal component of distributed locks in golang , support redis and postgresql
Stars: ✭ 60 (+328.57%)
Mutual labels:  distributed
configuration-service
Configuration Service is a distributed configuration provider for .NET Core.
Stars: ✭ 62 (+342.86%)
Mutual labels:  distributed
blobit
BlobIt - a Distributed Large Object Storage
Stars: ✭ 29 (+107.14%)
Mutual labels:  distributed
systemds
An open source ML system for the end-to-end data science lifecycle
Stars: ✭ 38 (+171.43%)
Mutual labels:  distributed
money
Dapper Style Distributed Tracing Instrumentation Libraries
Stars: ✭ 65 (+364.29%)
Mutual labels:  distributed
ImplicitGlobalGrid.jl
Almost trivial distributed parallelization of stencil-based GPU and CPU applications on a regular staggered grid
Stars: ✭ 88 (+528.57%)
Mutual labels:  distributed
cruzdb
Append-only key-value database on a distributed shared-log
Stars: ✭ 47 (+235.71%)
Mutual labels:  distributed
agent
hashtopolis.org
Stars: ✭ 19 (+35.71%)
Mutual labels:  distributed

Infantry

Run MapReduce in client's browser.

Installation

Install using npm using the following command:

npm install https://github.com/dash1291/infantry.git

Usage

An example application can be found inside example/ directory of the source code. The example generates chunks of data constituting person names from an NLTK corpus. The map/reduce prepares a dictionary of alphabets as keys and the number of names starting with the particular alphabet as the value.

Configuring the server

var infantry = require('infantry');

// Specify where your data lies. See "Data Splitting" section for more details
// The actual input data files will go into `input/` directory inside the path mentioned in the example below.
var store = infantry.store.fs(__dirname + '/data', '.txt');

// Set your configuration object
var env = {
        store: store,

        // This points to the file containing your map-reduce code. See "Program code" section for more details.
        programSource: __dirname + '/map.js',
};

// Initialize the app using `env` as configuration object.
var inf = inf.app(env);

// Start the server on port 8080
infantry.start(8080);

Data Splitting

As of now, Infantry uses a very simple storage interface. Because of that, splitting of data has to be taken care of manually by the user. Simply create a directory, and split your dataset into files with same extension. Name of the file will be used as the key to be used for executing map job for that set.

Program code

The user has to write their map-reduce application inside a file and point the programSource in the configuration object. Its upto the user what goes inside this file but there are two requirements which should be met for the entire thing to work, that is, the user defined map/reduce functions. A typical file would look something like this:

(function() {
    return {
        map: function(data) {
            // `data` can be be of any format (depending on the dataset) and its upto the user how to handle it.

            // `results` should be the result of your map computation and an array of key-value pairs (objects).
            // The notation of the object should be: {key: key, val: value}
            return results;
        },
        reduce: function(key, results) {
            // `key` is a string and `results` is an array here.

            // In the returned object `key` should refer to the same key passed to the function.
            // `result` is the result of your reduce computation.
            return {key: key, val: result};
        }
    };
})();

Above is just a template of the map/reduce functions that can be written. What exactly can be written and made to work is really upto the user's understanding of MapReduce and capabilities of Infantry.

Customizing storage

Only filesystem based storage is possible for now. Customizable backends to come.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].