logo_spark_hadoop

Apache Spark – Kako početi?

Kako Spark sve više dobija na popularnosti, rešio sam da pored Hadoop-a počnem da pišem više i o ovom alatu. Prvo da još jednom napomenem da Spark nije zamena za Hadooop, već jedan odličan dodatak. Mi u firmi se često igramo sa njim i dobijamo odlične rezultate. Ovaj tekst će biti o tome kako da podesite okruženje za testiranje Sparka.

Za razliku od Hadoop-a koji je malo teže testirati na laptopu ili desktop računaru, Spark možete sa lakoćom. Postoji nekoliko načina da to uradite. Pored svega toga, aplikaciju koju ste napisali na svom računaru možete da pokrenete i na klasteru uz male ili nikakve izmene.

Zahtevi i instalacija

Spark može da radi kako na Windows-u, tako i na UNIX-like sistemima. Pre svega morate da imate instaliranu Javu i da joj bude podešena putanja, Python 2.6+, R 3.1+ i naravno kako je i sam pisan u Scala-i potrebno je da imate i instaliranu Scala-u verziju 2.10.x. Pored toga poželjno je da imate instaliran i SBT i/ili Maven.

Sledeće, na download stranici potrebno je da skinete, preporučujem, poslednju verziju Sparka koja je već spremna za neku verziju Hadoop-a, kako vi to ne biste morali da radite. Možete da iskoristite OVAJ link. Uradite unzip fajla i smestite Spark u željeni folder (Program Files ili Home). Ono što ja radim jeste da pravim “symbolic” link kako biste lako mogli da menjate verzije.

~$ ln -s /putanja do sparka/spark-1.4.1 putanja/gde/želite/symlink

I naravno na kraju podesite Bash profil.

export SPARK_HOME= putanja do symbolic linka
export PATH=$SPARK_HOME/bin:$PATH

Nakon toga možete da probate da li ste sve uspešno podesili, pokrenite spark-shell ili pyspark.

sparkconsole

Postoji nekoliko načina na koje možete da pišete i testirate aplikacije. U konzoli, što i nije baš lepo, posebno ako su u pitanju kompleksniji programi ili ako želite da ih ponovo pokrećete, drugi način jeste da iskoristite svoj omiljeni IDE i da u njemu pišete Scala, Python ili Java kod. Mana kod ovakvog načina jeste to što je naporno stalno testirati odrađeno. Ali to nije sve, uz Spark su se razvijali i dodatni alati koji olakšavaju pisanje Spark aplikacija.

Apache Zeppelin

Ovaj alat se koristi u HDP-u, standardan je i u klasteru koji možete da podignete na Azure-u. Dosta je sličan IPython-u, čak i Databricks koristi sličan alat za svoju platformu. U principu koristeći ovaj alat ne morate da imate instaliran Spark, plus možete da ga koristite za još neke alate. Možete sa github-a da skinete poslednju verziju i ispratite uputstvo i tako lako dobijete okruženje za razvoj Spark aplikacija. Jedino nisam siguran kako radi na Windows-u, takođe Java nije podržana.

Pored toga izvršavanjem SparkSQL upita dobijate i automatski vizualizacije koje možete da ubacite na vaš sajt. Još jedan fin dodatak jeste što možete da odredite i vreme kad će vaša aplikacija da se pokrene.

Mislim da ovaj alat može da bude odličan i za produkciju, jer je moguće podesiti Zeppelin da koristi Spark na klasteru i ako korisitite pored toga Hive ili Cassandra-u, onda imate IDE za više alata.

IPython Notebook

Ako i vi volite Python i ako ste upoznati sa IPython-om onda to možete da iskoristite. Za razliku od Zeppelina koji može se reći da je baš orijentisan ka Spark-u, IPython možete da koristite samo za PySpark i ne pruža vam mogućnost automatske vizualizacije podataka. Pre se može reći da na ovaj način testirate Python i PySpark odnosno njihovu kombinaciju.

Prvo je potrebno instalirati IPython. Pretpostavljam da ako se neko opredeli za ovaj način, onda već ima i koristi ovaj alat. Takođe potrebno je podesiti Spark putanje kao na početku teksta.

Sledeće, potrebno je profil za Spark kako ne bi mešali sa drugim Python projektima.

~$ ipython profile create spark

Kreirajte fajl ako ne postoji

$HOME/.ipython/profile_spark/startup/00-pyspark-setup.py

Dodajte sledeći kod:

import os
import sys

if 'SPARK_HOME' not in os.environ:
    os.environ['SPARK_HOME'] = 'putanja do symbolic linka'

SPARK_HOME = os.environ['SPARK_HOME']

sys.path.insert(0, os.path.join(SPARK_HOME, "python", "build"))
sys.path.insert(0, os.path.join(SPARK_HOME, "python"))

Pokreniti novi profil:

~$ ipython notebook --profile spark

Testirajte da li je sve ok:

print SPARK_HOME
from pyspark import  SparkContext
sc = SparkContext( 'local', 'pyspark')

ipy

Pored ova dva alata možete isprobati i Spark-Notebook koji nisam još stigao da testiram. Probajte, pa javite utiske.

Lako testiranje je jedna od velikih prednosti Spark-a. Naravno, nikako nije preporučljivo na ovaj način koristiti Spark u produkciji. Nadam se da sam vam malo približio Spark. Namerno nisam hteo da ovaj tekst bude Spark demo, jer na ovaj način sada može bilo ko da se igra sa Spark-om. Demo možemo da ostavimo za novoosnovanu meetup grupu, pa ako ste zainteresovani, javite da se organizujemo. Nastavljamo da hadupujemo sa novim tekstovima o Hadoop-u i Sparku.

3 replies
  1. Milos Obradovic
    Milos Obradovic says:

    Ja koliko sam upoznat i prema informaciji koju sam dobio od ljudi iz Hortonworks – a trenutno nijedna Fortune 500 kompanija ne koristi Spark u produkciji. I ako ga neki testiraju na respektabilnim klasterima, recimo Alibaba testira na klasteru od 80 000 nodova, jos uvek se ne odlucuju za Spark.

Comments are closed.