Članci

Let’s start with Spark

Apache Spark je alat za distribuiranu obradu velikih količina podataka, Big Data. Pruža veliku brzinu u obradi i sastoji se od četiri modula: SQL, MLlib, Streaming i Graph. Znatno olakšava posao ljudima koji se bave podacima.

Data Science zajednica Srbije je uz podršku kompanije Databricks pokrenula zvaničan Apache Spark Meetup. Prvo predavanje će se održati 17. maja u Startit Centru sa početkom u 18.30h. Tema ovog meetup-a je Let’s start with Spark. Predavači, Darko i Miloš će predstaviti osnove Spark-a, pokazaće kako i odakle početi sa ovom tehnologijom. Pričaćemo i  o okruženjima za razvoj Spark aplikacija, uz pomoć kojih je moguće lako početi sa razvojem Spark-a, a pogodna su i za korišćenje na projektima. Pored toga biće reči i o verziji Spark-a 2.0 koja donosi nova poboljšanja.

Belgrade Spark Meetup je na zvaničnoj mapi Spark Hub-a i ubuduće sva dešavanja će biti i na zvaničnoj listi Spark događaja.

Predavači:

Darko Marjanović

Miloš Milovanović

Prijave za meetup su dostupne na zvaničnoj Meetup stranici, kao i na Facebook-u.

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.

Hadoop i Apache Spark u Srbiji

Posle duže pauze vraćam se pisanju. Prošlo je nešto više od godinu dana od pokretanja bloga i jako sam zadovoljan, a nadam se da ste i vi. Analitika kaže da vas ima mnogo i da ste redovni, tako da je mene malo sramota što ja nisam, ali potrudiću se da to ispravim. Odmah da kažem da ovaj tekst neće biti pun tehničkih detalja, malo ću da vam pišem o Sparku, a malo o tome kako napreduje Hadoop u Srbiji i regionu.

Pre svega, moram da primetim da se o Big Data tehnologijama priča i kod nas, i to mnogo više nego pre godinu dana. Čak su i neke kompanije počele da razmišljaju na tu temu kako bi stvorile ili pojačale konkurentsku prednost. To je kolegu Miloša i mene navelo na ideju da pokrenemo firmu koja se bavi Big Data tehnologijama. Prvi klijenti su nam već ukazali poverenje, pa tako mogu da se pohvalim da smo jedina kompanija koja se usko bavi samo ovim tehnologijama. To znači da će novi tekstovi biti dodatno poboljšani novim iskustvima koje stičemo na projektima. Firma se zove Things Solver. Želim da napomenem da ovaj blog neće postati korporatvni i da će i dalje imati svrhu širenja znanja i svesti o Big Data tehnologijama sa akcentom na Hadoop-u. Za kratko vreme postojanja postali smo partneri sa Hortonworks-om i Clouder-om, pa dodatno možemo da doprinesemo ovom blogu i zajednici. Pored toga, prilično mnogo vremena je uloženo i u testiranje nekih novih tehnologija o kojima će biti reči u narednim tekstovima.

Možete očekivati da će Hadoop Srbija aktivnije sarđivati i sa ostalim IT zajednicam u Srbiji. Naime, bio sam predavač na dve značajne domaće konferencije, #Tarabica i ITKonekt. Pozitivno sam oduševljen odzivom ljudi. Nadam se da ćemo biti u mogućnosti da i mi organizujemo jedan Hadoop događaj. Voleo bih da se jave svi oni koji čitaju blog, a imaju relevantna iskustva kako bi ih podelili ovde.

Na početku sam spomenuo Spark koji je relativno nova tehnologija i za godinu dana je osvojio dosta poena na tržištu Big Data alata. IBM je pre nekoliko dana objavio da će 3500 njihovih developera i istraživača pomoći u dodatnom razvoju ovog alata. Proteklih dva meseca smo se aktivno bavili ovom tehologijom i nismo je još primenili u produkciji, ali se nadam da ćemo uskoro. Spark je jak, jednostavan alat i predlažem da ga testirate. Ako znate Javu, Skalu ili Python, doslovno vam treba 5 minuta da probate najjednostavnije primere koje možete da pronađete na Apache Spark zvaničnom sajtu. Neki kažu da je Spark zamena za Hadoop, uskoro ćete imati priliku da pročitate moje mišljenje o tome na Startit.rs. Stoga neću dalje nastaviti o njemu, ali je sigurno da će Spark dobiti značajno mesto i na ovom blogu.

Kao što sam rekao, voleo bih da vidim i nova lica koja pišu za hadoop-srbija.com, tako da javite se i šaljite na mail sugestije. Imam u planu dosta tekstova i događaja. Nastavljamo da hadupujemo punom parom.