Oddzielić mak od piasku

Wraz z rosnącym zainteresowaniem big data głośno zrobiło się wokół projektu Apache Hadoop. Mimo wielu zalet, specyfika tej platformy oraz jej ograniczenia sprawiają, że nie zawsze będzie to najlepsze rozwiązanie do analizy dużych zbiorów danych.

Większość z nas zna legendę o Szewczyku Dratewce, przed którym zła czarownica postawiła, wydawałoby się, nierealne do wykonania zadanie – oddzielenie w ciągu jednej nocy maku od piasku. Z pomocą przyszły mu jednak mrówki i historia zakończyła się szczęśliwie. Jest to świetna analogia wyzwania, przed jakim coraz częściej stają przedsiębiorcy – big data. Jak w rozsądnym czasie z oceanu danych wydobyć cenne informacje?

Gdyby Szewczyk sam podjął się zadania, pewnie do końca życia oddzielałby ziarenka piasku od maku. Na szczęście każda z tysięcy mrówek zajęła się wykonaniem niewielkiego wycinka pracy i razem szybko uporały się z problemem. W analogiczny sposób działa Hadoop. Umożliwia wykorzystanie bardzo dużej mocy obliczeniowej, dzięki zdolności do równoległego realizowania wielu niewielkich zadań składających na jedno większe zadanie.

Platforma jest udostępniana na zasadach open source i służy do uruchamiania aplikacji w klastrach zbudowanych ze standardowego sprzętu. Dlatego jest to atrakcyjna kosztowo alternatywa dla tradycyjnych, korporacyjnych struktur przetwarzania danych. Trzeba podkreślić, że platforma może służyć zarówno jako mechanizm do przechowywania danych (funkcję tę realizuje Hadoop Distributed File System, HDFS), jak i do równoległego, rozproszonego przetwarzania danych na bazie koncepcji MapReduce. Cała platforma jest rozwijana właśnie w ramach dwóch podprojektów. Pierwszy, MapReduce, to mechanizm do analizowania zadań i przydzielania ich realizacji poszczególnym węzłom obliczeniowym. Drugi podprojekt to HDFS, system plików rozciągający się pomiędzy wszystkimi węzłami w klastrze. Łączy on systemy plików w poszczególnych węzłach w jeden, duży system plików (w tym przypadku niezawodność jest osiągana poprzez replikację danych).

Szybko i tanio

Organizacje wykorzystują Hadoopa z uwagi na kilka jego zalet. Platforma działa w modelu rozproszonym, w którym dane przechowywane są na lokalnych dyskach serwerów tworzących klaster. Oprogramowanie może działać na typowym sprzęcie, nie są wymagane specjalistyczne rozwiązania (najlepiej sprawdzają się serwery z Linuksem). W porównaniu z drogimi, dedykowanymi systemami Hadoop jest mniej więcej 10-krotnie tańszy, porównując koszty przetworzenia jednego terabajta danych.

Hadoop jest szybki. W testach wydajności 1 TB danych posortował w 62 sekundy, pracując w klasterze składającym się z 1400 węzłów. Posortowanie 100 terabajtów danych trwało 173 minuty podczas korzystania z klastra liczącego 3400 węzłów. Aby lepiej zrozumieć, jak duże są to ilości danych – 1 TB danych zawiera 2000 godzin muzyki w jakości CD, a 10 TB może pomieścić całą drukowaną zawartość biblioteki kongresu Stanów Zjednoczonych.

Rozwiązanie skaluje się od jednego serwera do rozmiarów wystarczających do analizowania bardzo dużych zbiorów danych. Klastry mogą składać się nawet z 10 000 węzłów obliczeniowych i obsługiwać więcej niż 100 000 zadań (task) oraz 10 000 równoległych prac (job). Portal Yahoo! korzysta z wielu klastrów Hadoopa, mających łącznie ponad 42 000 węzłów obliczeniowych, na których przechowuje ponad 200 PB danych. Platforma skaluje się na zewnątrz, czyli poprzez dokładanie kolejnych węzłów do klastra. Jest to znacznie tańsza metoda niż skalowanie w górę, z jakim mamy do czynienia w kontekście relacyjnych baz danych. Aby zwiększyć wydajność takiej bazy, konieczna jest rozbudowa pojedynczej jednostki obliczeniowej, np. montaż większej ilości pamięci RAM, szybszych procesorów, czy wręcz zakup całkiem nowej maszyny.