Przetwarzanie rozproszone i zarządzanie klastrem

Prowadzący: Adam Michalik


Kategorie: informatyka

Opis

Od kiedy wymyślono komputery, przez bardzo długi czas ich moc obliczeniowa rosła wykładniczo. Nosimy dziś w kieszeniach komputery o kilka rzędów wielkości szybsze niż te, które zaprowadziły człowieka na księżyc. Jednakże ze wzrostem podaży mocy obliczeniowej rośnie na nią popyt. Ludzie chcą przetwarzać tak wielkie zbiory danych, że nie mieszczą się już w pamięci jednej maszyny. Potrzebne jest więcej komputerów.

Coraz więcej elementów naszego codziennego życia zależy od działania komputerów. Poczta elektroniczna, karty płatnicze, bramki na autostradach, automaty biletowe, Wikipedia, Facebook -- te wszystkie nieodzowne elementy naszego życia opierają się na tym, że gdzieś tam stoi jakiś komputer i nas obsługuje. Głupio byłoby, jakby się akurat zepsuł. Potrzebne jest więcej komputerów.

Gdy już mamy więcej komputerów, trzeba umieć je dobrze wykorzystać. Trzeba pisać na nie programy, a więc warto, żeby jak najbardziej wykorzystywały fakt, że komputerów jest dużo, a z drugiej strony, warto zadbać, żeby tworzenie takich rozproszonych programów było jak najwygodniejsze. Trzeba się też komputerami dobrze zaopiekować. Trzeba przydzielać każdemu zadania, trzeba pilnować, czy któryś nie wymaga restartu lub naprawy. Najlepiej jakby wymagało to jak najmniej naszego aktywnego wysiłku -- w niektórych firmach na jednego administratora przypadają tysiące, a nawet dziesiątki tysięcy maszyn. Siadanie przy każdym i wrzucanie mu jakiegoś zestawu zadań to zdecydowanie za dużo roboty.

Na tych warsztatach zbudujemy sobie mały klaster z naszych laptopów. Zaprojektujemy i zaimplementujemy rozproszony system, składający się z kilku fragmentów typowych dla tego typu zastosowań -- stworzymy rozwiązanie do przechowywania dużych zasobów danych, rozproszony system wykonujący dużo ciekawych obliczeń na tych danych, oraz frontend prezentujący wyniki tych obliczeń. 

Wymagania

Co należy umieć przed warsztatami:

  1. Nieco doświadczenia z programowaniem -- to znaczy, umieć coś więcej, niż tylko zaklepywanie zadanek na OIa
  2. Warto wiedzieć cokolwiek o programowaniu współbieżnym, niekoniecznie poparte doświadczeniem -- wystarczy wiedzieć, co to jest race condition i do czego służą mutexy i condition variable (można doczytać przed warsztatami)
  3. Podstawowa wiedza o sieciach komputerowych (co to jest sieć, pakiet, adres IP, protokoły TCP i UDP), niekoniecznie poparta doświadczeniem.
  4. Umiejętność obsługi Linuksa (na warsztatach trzeba mieć komputer z Linuksem, nie w maszynie wirtualnej)
  5. Podstawy gita (tyle, ile można się nauczyć w jedno popołudnie)

Zadania kwalifikacyjne

Zadania kwalifikacyjne są już dostępne (jeżeli nie odpowiem w ciągu 2 dni, wyślij maila na adamm@mimuw.edu.pl).

Przydatne rzeczy

Technologie, które (być może [ale niekoniecznie]) będziemy używali:

Warto poczytać przed warsztatami: