iza03/Map-Reducer
Folders and files
| Name | Name | Last commit date | ||
|---|---|---|---|---|
Repository files navigation
Tema 1a: Calcul paralel al unui index inversat utilizand paradigma Map-Reduce
Implementarea este realizata in doua etape principale:
- Mapper: Fiecare Mapper proceseaza fisierele alocate, identifica cuvintele si le
distribuie catre reduceri responsabili, in functie de prima litera.
- Reducer: Fiecare Reducer preia cuvintele asociate literelor pentru care este
responsabil, le organizeaza alfabetic si dupa numarul de fisiere in care apar,
si le scrie in fisiere de iesire separate.
Functii implementate
- main
- Se citesc datele de intrare si se salveaza informatiile despre fisierele care
trebuie procesate.
- Se initializeaza structurile pentru thread-uri.
- Se creeaza thread-urile de Mapper si Reducer.
- Se asteapta terminarea thread-urilor utilizand `pthread_join`.
- La final, se elibereaza resursele utilizate (mutex-uri, bariere).
- initializeThreadStruct
- Configureaza datele necesare fiecarui thread.
- reducerFileIndex
- Determina care reducer este responsabil pentru fiecare litera din alfabet.
- assignFileToMapper
- Atribuie un fisier unui Mapper.
- Utilizeaza un mutex pentru acces sincronizat la lista de fisiere, astfel incat
fiecare fisier sa fie procesat o singura data.
- processFilesForReducers
- Mapper-ii citesc fisierele alocate si identifica cuvintele din continut.
- Formateaza cuvintele (litere mici, elimina caracterele non-alfabetice) si le
atribuie reducer-ilor corespunzatori.
- mapper
- Proceseaza fisierele alocate unui Mapper utilizand `processFilesForReducers`.
- Actualizeaza listele partajate ale Reducer-ilor utilizand mutex-uri pentru
sincronizare.
- calculateLetterRange
- Determina intervalul de litere pentru fiecare Reducer in functie de ID-ul sau.
- groupWords
- Grupeaza cuvintele procesate de Reducer pe baza primei lor litere.
- writeGroupedWords
- Scrie rezultatele procesate de fiecare Reducer in fisiere text, fiecare fisier
corespunzand unei litere.
- Cuvintele sunt sortate descrescator dupa numarul de fisiere in care apar si
alfabetic in caz de egalitate.
- reducer
- Proceseaza listele partajate primite de Reducer, le grupeaza si le scrie in
fisiere.
- func
- Functia principala a thread-urilor.
- Mapperii proceseaza fisierele, iar Reducerii prelucreaza datele partajate.
- Asigura sincronizarea intre Mapperi si Reduceri utilizand o bariera.