Big data-t tanulnék

Sziasztok,

Amint a tárgy is mutatja, szeretném elsajátítani a big data alapjait, kicsit gyakorolni benne. Adattárház, BI témakörben mondhatni otthon vagyok, MS SQL Serverrel és MySQL-lel foglalkoztam eddig, de sokminden más is érdekel. Ha volna bárki, aki tud nekem ebben segíteni, szívesen venném a tanácsát. Időm nem sok van rá, de mindenképp szeretnék képben lenni ezzel a témával is és bővíteni a tudásomat. Eddig eljutottam odáig, hogy letöltöttem egy Hadoop VMWare image-et, de jobban érdekelne, hogy hogyan tudok 0-ról felhúzni környezetet. Halvány sejtésem van a topickal kapcsolatban, egyelőre Pinal Dave blogját próbálom végigolvasni ezzel kapcsolatban. A leírást update-elem, ha változik valami fontosabb tény.

Előre is köszönöm.

Update:
Pinal Dave blogbejegyzései: http://blog.sqlauthority.com/best_top_sql_server_blog_all_post/

Hozzászólások

hadoop környezet kapcsán, ha nem ismered a java-t, kicsit nehéz helyzetben vagy, de semmi sem lehetetlen.
Vannak olyan eszközök (pig/hive) amik egyszerű nyelvkészletből generálnak kész java mapreduce job-ot amit aztán a hadoop környezeten futtatni tudsz.
A nulláról való felhuzás szívás és teljesen felesleges, anélkül is van elég szívás egy jó hadoop környezet beállításával. Én személy szerint a cloudera cdh4-et javaslom (google segít). Kapsz egy repository-t, ahonnan apt-get -el szépen tudsz telepíteni magadnak (szóval azt tanácsolom hogy csinálj 3 darab szűz debian VM-et, rakd fel ezt a cloudera repository-t és állítsd be 1 master / 2 slave módban).
Ha a telepítés megvan és működik is rendesen, jöhet az adatfeldolgozás része (vagy natív java, vagy a már fent említett hive/pig/stb. megoldással).

Csak hogy a felesleges szívásokat elkerüld, egy két hasznos információk a hadoop részeiről.
Az összes verzióban megtalálhatóak ezek:
hadoop-namenode: Ez a master ami a hdfs filerendszer számára biztosítja az adatok megfelelő elhelyezését és a replikációt
hadoop-datanode: A hdfs filerendszer "lelke", ezt az összes slave node-ra fel kell rakni, lényegében ez kezeli az adatokat
hadoop-mapreduce: Ez ilyen félhibrid daemon, library egybegyúrva. Ő felel a feldolgozási folyamatokért, illetve tartalmazza a szükséges illesztéseket

hadoop 0.2.*, 1.x* esetén:
jobtracker: A master szerver része, ő fogadja a kliensektől érkező feladatokat (Jobs) majd szétbontja és szétosztja a slave tagjai között
tasktracker: A slave-ek része, a jobtracker-el tartja a kapcsolatot, fogadja és futtatja a részfeladatokat.

hadoop 1.x* és 2.x* esetén:
Kibontották a hadoop alol a jobtracker-t és a tasktracker-t, majd elnevezték yarn-nak. A feladata nem változott, viszont sokkal hatékonyabban tudod managel-ni a hadoop clusteredet (létrehozhatsz rack-eket illetve container-eket, amiknek külön külön oszthatsz feladatot)
a jobtracker utódja a yarn-resourcemanager
a tasktracker utódja pedig a yarn-nodemanager lett

// Happy debugging, suckers
#define true (rand() > 10)

Csak adalékként (bújtatott sub): a Facebook-nak van egy Presto nevű technológiája, ami nagyjából elosztott sql-t csinál bigdata-n.

Úgy értettem, hogy van egy réteg a hadoop (whatever) fölött, ami megoldja az elosztott rendszeren történő lekérdezést és neked ezzel csak annyi dolgod, hogy lehetőleg úgy írd meg a lekérdezést, hogy az könnyen párhuzamosítható legyen.

-----------
"Pontban 0:00-kor nem nagyon szoktak véletlen dolgok történni"

Akkor csak jól értettem, viszont a presto-val való összefüggést nem:)
A bigdata alatt jóval több dolog van, mint ami a felszín irányából látszik. Fent már felvázoltam, hogy csak a hadoop esetében hány komponens van, ami csak és kizárólag a hadoop-ot teszi működőképessé.
A hadoop igazából az adatok tárolását és a feladatok futtatását teszi lehetővé neked, erre épülnek különböző dolgok, pl a már említett hive/pig ami egy lekérdezőnyelvet ad és az adataidat kezelni tudod vele (ő a saját lekérdezőnyelvéből java binárist gyárt majd azt futtatja a clusteren). A párhuzamos futást már a környezet lehetővé teszi és igazából rá is kényszerít (prepare/map/reduce/produce). Minden egyes feladatot ezekre a state-ekre kell lebontanod (legalábbis célszerű;)).
Az előbb említett presto mellé venném az accumulo -t amik szintén hadoop-ra épülő "adatbázis" rendszerek de egészen más megközelítést alkalmaznak mint a hadoop-os mapreduce. Egy másik hadoop-ra épülő project a spark, de ezeket igazából nagyon sokáig lehetne sorolni.

Ha bigdata-val szeretnél foglalkozni, akkor ezeken haladj végig. Vagyis akkor kiegészíteném az első hozzászólásomat így:
1. Hadoop cluster felállítása (1 master/2 slave)
2. Részkomponensek megismerése, olvass utána mi a mapreduce alapja, nézz logikai példákat hogy hogyan és miért pont így működik az adatok feldolgozása.
3. Ismerkedj meg a lekérdező/feldolgozó nyelvekkel, kb ilyen sorrendben: pig, hive
4. Ismerkedj meg hadoop-ra épülő projectekkel: accumulo, presto, spark
5. Ismerkedj meg nem hadoop alapú, de bigdata megoldásokkal: cassandra, storm

1-3 -ig igazából post process megoldások. Van egy bazi nagy adathalmazod, elindítod a lekérdezést, aztán lehet fut 2 óráig mire megkapod hogy elírtál egy sort és nem jó az eredmény;))
4-es már félig post process, félig real-time feldolgozók (dobálod be az adatot aztán kérdezhetsz belőle)
Az 5-ös -ben a cassandra a 4-es hez tartozik mert félig real-time, de az 5-be került mivel nem hadoop project. A storm az egy teljesen elosztott, real time feldolgozó rendszer (Bedobod az adatot és már jön az eredmény)

// Happy debugging, suckers
#define true (rand() > 10)

A Hadoopot és a Hive-ot láttam először, erről van valami halvány sejtésem. Persze szeretném majd a többi eszközt is felületesen megismerni. Használni úgyis élesben fogom megtanulni szerintem.

-----------
"Pontban 0:00-kor nem nagyon szoktak véletlen dolgok történni"

"Időm nem sok van rá, de mindenképp szeretnék képben lenni ezzel a témával is és bővíteni a tudásomat"

Gyanus, hogy meg nem olvastad a Wikipedia Big data es Data Science cikkeit. Oriasi terulet, ha nincs sok idod ra, ez a "minden erdekel"-nek nincs ertelme. Eloszor talan azt kene eldontened, hogy uzemeltetes vagy fejlesztes erdekel.

----------------------
"ONE OF THESE DAYS I'M GOING TO CUT YOU INTO LITTLE PIECES!!!$E$%#$#%^*^"
--> YouTube csatornám

Elég sokat olvastam a témában, tudom, hogy a big data nem 2 nap alatt megtanulható, hanem egy hatalmas témakör. A minden érdekelnek van értelme, gondolom azt érted alatta, hogy mindent meg akarok tanulni. Ez helyesen úgy hangzik, hogy mindent megtanulok, amit csak lehet/tudok/időm van rá. Üzemeltetés és fejlesztés is érdekel. Hogy egy kis személyeskedés is legyen a hozzászólásban, unom már, hogy mindig mindent az emberek szájába kell rágni és nem képesek asszociálni és értelmezni egy-egy szöveget. Könnyebb hirtelen valamit odatrollkodni.

-----------
"Pontban 0:00-kor nem nagyon szoktak véletlen dolgok történni"