map-reduce's Introduction
Map-Reduce Moscalu Cosmin-Andrei Descriere generala: Fisierul Mapper.cpp contine implementarea clasei Mapper, o clasa template, care primeste la instantiere datele de intrare, functia de mapare data de utilizator dar si o functie de comparare intre chei, aceasta fiind folosita pentru a parcurge cheile intr-o ordine definita de utilizator. Fisierul Reducer.cpp contine implementarea clasei Reducer, care poate fi instantiata cu elemente date de utilizator sau cu o referinta la o alta clasa Mapper, astfel se vor prelua elementele de la Mapper atunci cand acesta termina executia. Operatiile de map si reduce pot fi rulate simultan, clasele sincronizandu-se printr-o bariera. Descrierea implementarii: In clasa Mapper, functia rulata in thread extrage un element din heap, iar apoi ruleaza functia data de utilizator doar cu argumentele de care aceasta are nevoie, mai exact cheia extrasa, si hashmap-ul pe care aceasta trebuie sa-l completeze. Daca nu mai exista elemente in heap atunci se asteapta bariera, daca se face sincronizare cu un Reducer. In cazul in care se pornesc simultan un Mapper si un Reducer, atunci Reducer-ul trebuie sa realizeze initializarea elementelor din interiorul clasei atunci cand Mapper-ul termina de rulat, astfel doar unul din thread-urile pornite de Reducer va realiza initializarea prin preluarea unui semafor si prin setarea unei variabile care arata ca preluarea rezultatelor de la Mapper s-a terminat. Tot odata cu initializarea elementelor din clasa Reducer, se vor determina toate cheile care au fost generate de thread-urile mapper, apoi se va aloca cate o cheie pentru fiecare thread reducer, un thread reducer ocupandu-se de cate o singura cheie. Dupa ce elementele din clasa Reducer au fost initializate, este responsabilitatea fiecarui thread sa grupeze valorile de la hashmap-urile din clasa Mapper, existand cate un astfel de hashmap pentru fiecare thread mapper. In final, se apeleaza functia data de utilizator care realizeaza reducerea.
map-reduce's People
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.