czwartek, 15 stycznia 2015

Apache Spark pierwsze kroki

Apache Spark jest nowym systemem do równoległego przetwarzania danych. Dzięki swojej szybkości działania zastąpił dotychczasowy standard w analizie dużej ilości danych jakim był Hadoop Map-Reduce.
Warto tu jednak zaznaczyć, że Hadoop to cały ekosystem różnych systemów, z czego najważniejsze to:

  • HDFS - Rozproszony system plików
  • YARN - Framework do zarządzania klastrami
  • Map-Reduce - Framework przetwarzania danych
Spark zastępuje tylko ostatni komponent Map-Reduce. Może jednak wykorzystywać pozostałe 2 komponenty. 
Ponieważ ten artykuł jest wprowadzeniem do Spark-a, to opiszę użycie tego systemu bez podłączania go do Hadoop-a.


Instalacja

Jedyne wymaganie jakie nasz komputer musi spełnić by móc zainstalować Spark, to zainstalowana Java. Spark może zostać pobrany ze strony: https://spark.apache.org/downloads.html. Ponieważ nie będziemy używać Hadoop-a to pobieramy dowolną wersję binarną (Pre-built). Wersja Hadoop nie ma znaczenia.
Po pobraniu i rozpakowaniu system jest gotowy do użycia w wersji lokalnej. 

Liczymy słowa w tekście

Skoro Spark jest już zainstalowany to pora wykonać na nim jakąś pracę. Na początek spróbujemy policzyć ilość słów w tekście. W tym celu tworzymy plik lorem.txt i za pomocą ulubionego edytora wklejamy do niego tekst:
Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Spark posiada powłokę za pomocą której można dokonywać obliczeń. Aby uruchomić powłokę należy wydać komendę:

./bin/spark-shell

Będąc w powłoce załadujemy nasz plik z tekstem:

val textFile = sc.textFile("lorem.txt")

i następnie policzymy ilość słów, we wszystkich liniach tekstu:

textFile.map(line => line.split(" ").size).sum

Gotowe!
W odpowiedzi powinniśmy zobaczyć, że plik zawiera 19 słów.

Podsumowanie

Jak widać praca ze Spark może być bardzo prosta. Oczywiście nie wykorzystujemy tu pełnego potencjału tego systemu. Ale o tym jak uruchomić Spark w klastrze, oraz jak pisać aplikacje zamiast używania shella, w przyszłych artykułach.