Apache: Big Data Europe konferencia és Big Data körkép

Az Linux Foundation The Apache Software Foundation (ASF)-nel együttműködve 2015. szeptember 28 - 30 között, Budapesten rendezte meg az Apache: Big Data Europe konferenciát. A Linux Foundation egy non-profit szervezet, mely célja a Linux népszerűsítése, és újabban oktatások, vizsgák és konferenciák szervezésével is foglalkozik. A konferencia témája a Big Data, pontosabban az Apache Hadoop eszköz és a köré kialakult ökoszisztéma, szorosabban és lazán kapcsolódó projektek, eszközök, architektúrák, módszertanok és esettanulmányok. A konferencia helyszíne a Corinthia Hotel, melyre igazán nem lehet panasz.

Corinthia

A szponzorok főleg olyan cégek, melyeknek ez a fő területük. Ilyen a Hortonworks, mely az Apache Hadoop fejlesztésére és támogatására szakosodott, maga is ASF szponzor. Ők gyártják Hortonworks Data Platform (HDP) Hadoop disztribúciót. Több ilyen disztribúció is létezik, melyek azért alakultak ki, hogy a cégek válláról levegyék azt a nem könnyű terhet, hogy a területen lévő főbb eszközöket integrálják. A Hortonworks disztribúciójának egyik főbb tulajdonsága, hogy kizárólag nyílt forráskódú eszközökből épült. A cégnek magyar vonatkozása is van, ugyanis nemrég felvásárolták a SequenceIQ magyar céget, mely Cloudbreak nevű megoldásával Hadoop clustereket lehet automatikusan telepíteni különböző környezetekre, mint publikus (Amazon AWS, Microsoft Azure, Google Cloud Platform) vagy privát felhőbe (OpenStack), vagy Docker konténerekbe. A cég magyar irodájának fejlesztőivel lehetett találkozni a résztvevők között. A HDP oldalán amúgy egy nagyon jó ábrát lehet találni ahhoz, hogy az ember kicsit elhelyezze ezt a rengeteg eszközt.

A szponzorok között található továbbá a Pivotal is, mely szoftverkomponenseket és szolgáltatásokat nyújt adatközpontú és adatelemző egyedi szoftverek agilis fejlesztésére felhő-alapú technológiákra építve. Olyan cégek állnak mögötte, mint az EMC és a General Electric. A név a Java fejlesztőknek ismerősen csenghet, hiszen olyan eszközök mögött áll, mint a Cloud Foundry felhő szolgáltatás, vagy a Spring, Redis, RabbitMQ, MADlib, stb. Természetesen ők is rendelkeznek disztribúcióval, mely neve Pivotal HD.

Támogató még a Cloudera, mely fő profilja a Apache Hadoop alapú támogatás, szolgáltatás és oktatás. A Google, Yahoo és Facebook cégekből kivált rendre Christophe Bisciglia, Amr Awadallah és Jeff Hammerbacher, és az Oracle-ből eljött Mike Olsonnal alapították 2008-ban. Szintén rendelkezik Hadoop disztribúcióval, melynek neve Cloudera Distribution Including Apache Hadoop (CDH). Róluk még azt érdemes tudni, hogy a Udacity-n indítottak egy Hadoop képzést, melynek anyaga ingyenesen elérhető. Itt főarchitect Doug Cutting, aki igazán nagy név a szakmában, hiszen ő hozta létre Javaban az Apache Lucene keresőmotort, a Nutch webes keresőt (saját web crawlerrel, és az indexelést a Lucene-re építve). És ő alkotta a Hadoopot, valamint az ASF igazgatója is.

Ott volt még a Elastic cég is, mely az Elasticsearch, Logstash, és Kibana mögött áll. Mindhárom nyílt forráskódú, az első egy keresőszerver, mely szintén a Lucene-re épül, a Logstash egy naplóelemző, míg a Kibana ezek elé egy vizualizációt biztosít, de egy általános célú vizualizációs platform, mely több forrásból képes táplálkozni. A Jahia egy szintén nyílt forráskódú eszközre épít, ez egy Apache Jackrabbit JCR implementációra épülő CMS rendszer. Nagy nevek közül az IBM és a RedHat képviselte magát, és előadásokat is tartottak.

Maga a Big Data elég nagy hype napjainkban, azonban mindenki másképp értelmezi. Amiben meg lehet állapodni, hogy az adatot a következők jellemzik: volume, variety és velocity. Ez a gyakorlatban annyit jelent, hogy tényleg hatalmas mennyiségű adat érkezik be (röpködtek a terra-, peta és zetabájtok), viszonylag sokszínű adatforrásból és adatformátumban, és felfoghatatlan sebességgel. Ezek a jellemzők túllépik azt a tömeget, melyet egy számítógépen kezelni lehet. És itt jött a képbe a Hadoop. Doug Cutting a Nutch fejlesztése közben szembesült azzal a problémával, hogy az architektúra nem alkalmas arra, hogy oldalak milliárdjait kezelje és indexelje, valamint üzemeltetési költsége is magas lett volna. A Google 2003-ban publikált az elosztott fájlrendszeréről egy cikket, ezt implementálta Doug Cutting, majd a 2004-ben megjelent a Google cikke a MapReduce-ról is, melyet szintén implementált és a Nutch része lett. 2006-ban azonban mind a fájlrendszer, mind a MapReduce implementáció levált a Nutch-ról, Hadoop néven. Nevét Doug Cutting gyermekének sárga plüsselefántjáról kapta, innen származik a logó is. Az elosztott fájlrendszer neve Hadoop Distributed Filesystem (HDFS) lett. Ez idő tájt csatlakozott a Yahoo!-hoz is, mely 2008-ban bejelentette, hogy a keresési indexét egy 10 000 processzormagon futó Hadoop cluster generálja. Innentől megindult a Hadoop diadalmenete, mára legnagyobb nevek is álltak be mögé, mint IBM, Microsoft és Oracle.

A Hadoop ugyan Javaban lett implementálva, és a MapReduce jobok natív nyelve is ez, a Hadoop Streaming lehetővé teszi, hogy ezen jobokat bármilyen más nyelven megírhassuk. Gyakoriak a Python, Scala, Ruby megvalósítások, de egyszerű bash szkriptek is futtathatóak. A Hadoop Pipes C++ programozóknak jöhet jól.

Azonban a Hadoop alapvetően egy alacsony szintű megvalósítás a HDFS-sel és MapReduce-szal, és alapvetően batch feldolgozásokra fejlesztették ki. Remekül teljesít, ha elosztottan hatalmas mennyiségű adatot kell feldolgozni (pl. szekvenciálisan az összeset), ahol a válaszidő nem kritikus (perc nagyságrendű). Ugyanis viszonylag nagy a késleltetés, és elég jelentős overhead van a jobok futtatásakor. Ahhoz, hogy egyszerűbben használható legyen, vagy fel lehessen használni interaktív lekérdezések, elemzések kiszolgálására is, különböző más projektek épültek rá. Gyakran, mikor Hadoopot emlegetünk, akkor az ökoszisztémára gondolunk, mely tartalmazza ezeket a projekteket is. Talán az első eszköz, mely azonnali hozzáférést tett lehetővé, a HBase volt, mely egy kulcs-érték adatbázis a HDFS fájlrendszerre építve. A HBase azért is kiemelkedő, hiszen egyrészt nem egy relációs adatbázis, másrészt a Hadoop infrastruktúrán azonnali olvasást és írást is lehetővé tesz. A legfontosabb előrelépés annak támogatására, hogy ilyen projekteket lehessen implementálni, a Yet Another Resource Negotiator (YARN) megjelenése a Hadoop 2-ben. Ez egy még alacsonyabb szintű API-t biztosít arra, hogy egy Hadoop cluster erőforrásait lehessen kihasználni. Innentől a MapReduce is erre épül.

A témában amúgy egy nagyon jó könyv a Hadoop: The Definitive Guide, melynek már a negyedik kiadása jelent meg. Nem csak a MapReduce-ról, HDFS-ről, YARN-ról ír, de kitér az üzemeltetésre, és olyan kapcsolódó projektekről is ír, mint az Avro, Parquet, Flume, Sqoop, Pig, Hive, Crunch, Spark, HBase és ZooKeeper (ezek egy részéről még írok később).

Hadoop: The Definitive Guide

További felhasználási területek, és hozzá kapcsolódó projektek alakultak ki. Tisztán látszik, hogy az SQL-t nem tudják az emberek elengedni, így alakultak ki az SQL-t, vagy valami ahhoz nagyon hasonlót támogató eszközök. Ilyen például az Hive, mely várja a HiveQL nyelvén a lekérdezéseket, elemzi, és MapReduce jobokká alakítja őket. Emiatt viszont szenved a MapReduce hátrányaitól. Ennek megoldására született az Impala. Új versenyző ezen a téren a HAWQ, mely a Pivotal HDB termék magját alkotja. A Drill létező adatforrások elé ad egy egységes SQL alapú interfészt. Itt van olyan eszköz, mely az OLTP irányból próbál továbblépni az OLAP irányba, mint pl. a Kylin.

Több algoritmus, pl. a tanuló algoritmusok alapvetően iteratívak, ami azt jelenti, hogy ugyanazon adaton többször dolgoznak. Ezért nagyon hatékony ezen adatokat a memóriában tartani. A MapReduce architektúrálisan erre nem képes, ezért alakultak ki alternatív megoldások, mint például a Spark. Látható, hogy a Spark jelenleg az egyik legforróbb téma, ami nem is csoda, hiszen bizonyos területeken százszoros gyorsulást ígér a klasszikus Hadoop alkalmazásokkal szemben.

Szintén nagyon fontos felhasználási terület a streaming. Ez leegyszerűsítve azt jelenti, hogy ömlenek be az adatok, és azokon már beérkezésük pillanatában különböző műveleteket hajtunk végre. Erre nyújt megoldást a Storm, Samza, újabban a Flink és az előbb említett Sparknak is vannak ilyen irányú képességei.

Az egész ökoszisztéma a keresésből alakult ki, így természetesen ilyen felhasználási területei is vannak, pl. a Solr, mely a már emlegetett Lucene-re épül. Ezt segíti a Tika, mely metaadatok kinyerését végzi különböző állományokból, mint PPT, XLS, PDF, stb.

Nagyon fontos az is, hogy ne csak fejlesztőként tudjuk használatba venni ezen eszközöket. Ezek közül az első a Pig volt, mely egy nagyon egyszerű és bővíthető nyelvet ad az adatok feldolgozására. Új szereplő a Zeppelin, mely egy webes jegyzetfüzet, ahol egy interpreterben futtathatjuk az adatelemzéseinket, és kimeneteit egyszerűen különböző grafikonokkal vizualizálhatjuk. Ilyen az IPython Notebook is, ahol a dokumentációt megadhatjuk Markdownban is, MathJax egyenletekkel felturbózva. Neve alapján Python szkripteket futtathatunk, és matplotlib grafikonokkal ábrázolhatjuk az eredményt. A Jupyter ennél általánosabb, mintegy negyven nyelvet támogat.

A NoSQL továbbra is erősen képviselteti magát, mint a Cassandra, mely egy átmenet a kulcs-érték és oszlop-orientált adatbázisok között. Nem a Hadoopra épül, de van integrációja, és támogatja a Piget és a Hive-ot is (lásd később). Szintén Hadooptól független a CouchDB mely egy dokumentum alapú adatbázis, JSON dokumentumok tárolására. A Pivotal kereskedelmi terméke a GemFire in-memory data grid, ennek magját tették nyílt forráskódúvá Geode néven.

Nagyon sok szó esett a Hadooptól független Kafka eszközről is, mely egy publish-subscribe message broker, mely rettentő gyors, és könnyen skálázható.

Az előadások anyagát elemezve a következő felhő alakult ki, ahol minél nagyobb egy szó, annál több előadásban szerepelt.

Word cloud

Ezt végignézve, és az előre kiválasztott előadásokat végighallgatva a következő, talán kicsit szubjektív következtetéseket vonnám le a konferencia alapján. A Hadoop HDFS és MapReduce talán már nem annyira pezsgő téma, mint régen, sokkal inkább az arra épülő projektek. Ami talán mégis az alapinfrastruktúrához kapcsolódott, az a biztonság kérdésköre (pl. Kerberos integráció), valamint az üzemeltetés. Természetesen az utóbbi témában a legizgalmasabb a konténerizáció, tipikusan a Docker használata. A projektek, melyeket ebben a témakörben említettek a Docker Swarm, mely a clusterezhetőséget oldja meg. Szó esett még a Consul projektről, melyek a szolgáltatások feltérképezését, konfigurálását és megfigyelését végzi. A telepítés automatizálásával kapcsolatban került szóba a Puppet, a Chef és Ansible. Az Ambari tipikusan a Hadoop ökoszisztéma felügyeletére lett kifejlesztve.

A konferencia legtöbb előadásának témája talán a streaming, azaz a bejövő adatok azonnali feldolgozása, valamint az ezzel kapcsolatos projektek. Bár a streaming csak az egyik felhasználási területe, az utóbbi évek legfényesebb csillaga a Spark, ezt egyik előadás sem tudta megkerülni, erre oda kell figyelni. Ami szintén mindenütt előjött, a konferencia sztárja azonban a Kafka, hiszen szinte mindenhol szükség van üzenetküldésre, és ezt a Kafka nagyszerűen teljesíti.

Nem tudom, hogy direkt figyeltek-e rá, vagy annyira zárt világ, hogy az Apache-on kívül egyéb projektekről nem nagyon esett szó. Ez alól talán egyedül az üzemeltetéssel kapcsolatos eszközök, valamint a Spring projektek képeztek kivételt (pl. Spring Boot és a Spring XD). Feltételezem, ezt befolyásolta a Pivotal jelenléte.

A használati esteket látva megdöbbentő volt számomra, hogy a legtöbb esetben a felhasználói viselkedéssel kapcsolatban érkezik be a legtöbb adat, és ennek elemzésére használják azt az irdatlan mennyiségű infrastruktúrát. Leegyszerűsítve log formájában ömlik be, hogy melyik felhasználó hova klikkelt, és ebből próbálnak a lehető legtöbb információt kinyerni, és erre alapozni az üzleti döntéseket. Értem én, hogy a felhasználó itt nem tud (akár magának sem) hazudni, így erre alapozva lehet a legobjektívebb döntéseket hozni, mégis megdöbbentő volt ennek hangsúlyossága.

A konferencia igazán poliglott, azaz több nyelvű volt. Lehetett látni bőven Java, Scala, Python és R kódot is. Ami viszont megnyugtatott, hogy mind az előadóknál, mind a hallgatóknálMac gépek, vagy egyéb notebookok voltak Ubuntuval. Ezen kívül fejlesztőkörnyezetnek valami interaktív shellt használtak, vagy kizárólag IntelliJ IDEA IDE-t, a többi IDE-nek nyoma sem volt.

Bár a párhuzamos hype-okat egy-két előadás érintette, de nem voltak eltúlozva. Leghangsúlyosabb, és abszolút magyarázható a már emlegetett konténerizáció, de gyakran előjöttek a felhő szolgáltatások is. Természetesen olyan témakörök sem maradhattak ki, mint Internet of Things (IoT), RESTful webszolgáltatások, microservices és reaktív architektúrák.

Konklúzióként annyit, hogy annak, aki ebbe a világba be akarja vetni magát, hatalmas ismeretanyagot kell elsajátítania, egészen az elmélettől a gyakorlatig. Egyrészt tudnia kell több nyelven programoznia, alaposan ismernie kell a Linux alapú operációs rendszereket és eszközöket, ismernie kell a különböző erőforrások mibenlétét (mint CPU, memória, HDD és SDD), tisztában kell lennie az elosztott számítástechnika fogalmaival (hálózat). Lehetőség szerint értsen a konténerizációhoz, ismerjen és legyen tapasztalata pár felhő szolgáltatóval. Ismerje a relációs adatbázisokat, az SQL nyelvet, de lehetőleg legyen rálátása az OLAP-ra is. Jó, ha használt különböző ETL eszközöket, és ismeri a különböző adatformátumokat és azok tulajdonságait. Legyen tisztában a Big Data alapelveivel, és értsen a vizualizációhoz. Az sem baj, ha már látott szolgáltatás alapú architektúrát, valamint üzenet alapú middleware-eket. Értse meg az üzleti területet. És még nem is beszéltem a rengeteg eszközről. Ezzel kapcsolatban javaslom megnézni egy 2009-es posztom a Szabad Szoftver Konferencia és Kiállítás 2009-ről, ami a Big Data hajnalán volt, és érdemes megvizsgálni, hogy az ott bemutatott eszközök közül mennyi marad meg és vált széleskörűen elfogadottá és használttá.

Tapasztalataim igazolásaként még megnéztem a ThoughtWorks cég (, ahol Martin Fowler is dolgozik) 2015 májusi Technology Radar címmel publikált, évente kétszer megjelenő tanulmányukat, hogy mit ír a Big Dataról. A Platform fejezetben az első a Spark, melyről kiemeli, hogy lehetővé teszi ugyanazon adatokon a többszörös, párhuzamos műveleteket. Az alacsonyszintű funkcionalitás olyan magasabb szintű megoldásokat is biztosít, mint interactive SQL (Spark SQL), real time streaming (Spark Streaming), machine learning library (MLib), R-on-Spark, stb. Szintén kitér az SQL alapú eszközökre, mint az Impala és Drill. Az említett eszközök közül még mindenképp javasolja a Consul használatát. Megfontolandónak tartja a Kylin felhasználását OLAP alkalmazásokra, valamint a Kafkát, mely olyan képességekkel rendelkezik, mint aszinkron üzenetkezelés, az üzenetek sorrendiségének kezelésére, valamint kézbesítésre több címzett számára.