Prečo voľby? Lebo Hadoop!

Väčšinou, ak nevieme/nechceme pomenovať skutočnú príčinu, tak hovoríme „Lebo medveď!“ Čím mimochodom privádzame skutočných medveďov do rozpakov. Ale tieto voľby sa mi chce povedať: „Lebo Hadoop!“ Že rovnako ako slony nechápete prečo? Prečítajte si moje vysvetlenie.

Hadoop

Tomu, ako vnímam víkendové volebné zemetrasenie, som sa už vyjadril na svojom Facebooku a možno ma to ešte vyburcuje vrátiť sa k podobnej dátovej analýze, akú som ponúkol po prezidentských voľbách. Proces volieb ma však inšpiroval k jednému pomerne nečakanému spojeniu. Uvedomil som si totiž, že voľby sú veľmi dobrý nástroj ako vysvetliť fungovanie a význam Hadoopu. Ste zvedaví?

Hadoop a technológie paralelného distribuovaného výpočtového spracovania dát stále nie sú tak bežným javom v našej spoločnosti ako by si možno pokrok v tomto odvetví vyžadoval. Relatívne bežne sa preto stretávam s tým, že manažérom treba vysvetľovať, že implementovať Hadoop (o ktorom počúvajú na každej odbornej konferencii) nie je ako vymeniť Škodovky za Volskwageny alebo ako vymeniť MS SQL za Oracle. Vydať sa cestou distribuovaných úložísk je oveľa zásadnejšou zmenou vo firme. Na tejto „zákrute“ sa však cesta manažérskeho pochopenia zväčša končí. Bez znalostí detailov im totiž neraz príde logické hovoriť:  „Hadoop je proste len ďalší sotware, ktorého inštaláciou sa dá predsa preinštalovať ten aktuálny, čo máme, nie?“ Pregúlite očami a rozmýšľate, či sa pustiť do ďalšieho vysvetľovania, keď šance na úspech sú tak mizivé. No a práve pre takúto situáciu si myslím, že môže poslúžiť moje nasledovné vysvetlenie:

VOĽBY okrskova komisia

Na Slovensku podobne ako v mnohých okolitých krajinách sa voľby organizujú do volebných okrskov. Každý volič je registrovaný v práve jednom volebnom okrsku, spravidla čo najbližšie k svojmu bydlisku. To zabezpečuje, že nemusí cestovať príliš ďaleko, aby si uplatnil svoje volebné právo a tým pádom môže odvoliť rýchlejšie. Hneď ako dovolíme, volebné okrskové komisie sa dajú do spočítavania hlasov. Keď ich spočítajú na miestnej okrskovej úrovni, zanesú zápisnicu okresnej volebnej komisie a tá následne agregované výsledky do krajskej a celoštátnej. Celé nám to príde akosi automatické, lebo tak to vždy bolo a asi nám ani nenapadlo to inak zorganizovať. Ale predstavte si, že by to celé bolo inak …

Predstavte si, že by všetci voliči z celého Slovenska museli prísť na jedno a to isté miesto odvoliť. To by znamenalo, že veľmi veľa ľudí by muselo ďaleko cestovať (čo by sa asi zároveň výrazne podpísalo aj na účasti v daných voľbách). Navyše predstavte si, aká veľká by musela byť volebná miestnosť, aby dokázala poňať také zástupy a hlavne, koľko by ste museli čakať v rade, kým by ste sa dostali na rad odovzdať svoj hlas. Na voľbu by museli zriadiť obrovskú volebnú miestnosť len pre tento účel, ktorá by mimo volieb nemala svoje opodstatnenie, už existujúce budovy by totiž neboli dostatočne veľké. Veď ktorá budova v SR by poňala 3.5 milióna ľudí, čo prídu voliť do NRSR. Takéto voľby by boli možné, iba s bezchybným volebným zoznamom. Akékoľvek nezrovnalosti v údajoch voliča na voličskom zozname by úplne zadrhli proces voľby a všetci za ním by museli naďalej čakať v rade. Asi najväčšie peklo by mala následne volebná komisia, ktorá by musela prejsť cez niekoľko miliónov volebných lístkov a trvalo by jej to zrejme niekoľko týždňov, ba až mesiacov. A teraz si predstavte ten priekak, že volebná komisia sa dlhšie zdrží na obede alebo začne štrajkovať. Keďže je len jedna, nemá ju kto zastúpiť.  Možno vás strasie obava a povie si : “Čo je toto za blbosť­? Tak to sa to predsa nedá robiť, nie?”

dlhy rad ľudí

Nuž, možno vás to prekvapí, ale presne takto fungujú tradičné, relačné databázové systémy. Všetky údaje sa snažia uložiť na jediné miesto, do tých istých databázových tabuliek. To spôsobuje, že počítače, ktoré to musia zvládať sú často obrovské a drahé (podobne ako by musela byť tá jedna mamutia volebná miestnosť). Navyše sa na to nedajú použiť existujúce stroje, musí byť na to vyhradený samostatné výkonné delo (ktoré zväčša okrem toho nemá až tak vhodné využitie v danej firme). Údaje musia byť zapisované postupne, čo spôsobuje, že niektoré musia čakať v rade. Beda vám, ak náhodou niektorý údaje „nie je v poriadku“. To sa proces zastaví a operácia zápisu sa musí opakovať, neraz aj so státisícmi nevinnými riadkami, ktoré inak boli v poriadku. Ak náhodou hlavná databáza vypadne alebo sa v nej niečo „vzprieči“, celý proces je v kolapse. Akékoľvek zložitejšie spočítavanie dát trvá extrémne dlho. A čím viac dát pribúda, tým viac sa naťahuje aj trvanie výpočtov.

Na proti tomu, Hadoop si povedal, že takto to nejde. Jeho fungovanie v svete ukladania dát je podobné logike, s akou u nás organizujeme voľby. V Hadoope sa dáta rozkladajú medzi väčšie množstvo strojov (volebných miestností), z ktorých každá vedie limitovanú podmnožinu všetkých záznamov (voličov). Dáta sú uložené blízko ich vzniku (ako je vám blízka volebná miestnosť) a teda zápis dát aj ich spočítanie prebieha oveľa rýchlejšie. Keď sa totiž spustí spočítavanie (hlasov), tak paralelne pracuje niekoľko (volebných) miest a za výpočet nezodpovedá iba jedna „volebná komisia“, využíva sa paralelná práca komisií, presne ako vo voľbách. Keď výpočty na jednotlivých miestach dobehnú dokonca, nody Hadoopu (ako sa hovorí volebným miestnostiam v Hadoop architektúre) si navzájom odovzdajú čiastkové súčty a potom jedno miesto spočíta všetky dielčie výsledky. Keďže výpočty na úrovni nodu nie sú až tak veľké, postačia na ne bežné počítače, nie je potrebné budovať jeden super počítač. Tie bežné počítače môžu mať mimo daného výpočtu úplne inú úlohu (podobne ako volebné miestnosti sú školami či kultúrnymi domami, keď nie sú voľby). Analógia je o to presnejšia aj v tom, že nody Hadoopu sú naozaj akési samosprávne jednotky, kde aj riadenie priebehu zapisovania dát a výpočtov riešia tie isté zdroje. Podobne ako priebeh v hlasovacej miestnosti riadia ľudia, ktorí sú sami voličmi, nie nejakí najatí zahraniční cudzinci). No a nakoniec, ak jeden nod (okrsková komisia) vypadne vie ho/ju nahradiť nejaký susedný nod. Systém je teda o mnoho odolnejší voči zlyhaniu alebo prevádzkovému skolabovaniu. (Predstavte si to ako, že všetci voliči majú voličský preukaz a teda môžu ísť voliť kamkoľvek, ak vidia, že v ich miestnosti sa to nedá alebo by to trvalo dlho).

Fajnšmekri Hadoopu by mohli namietnuť, že v dvoch bodoch je predsa len analógia s voľbami trochu nepresná: Aby Hadoop urýchlil spracovanie dát a zamedzil „strate hlasov“, ukladá tie isté dáta duplicine na viac nodov. Ak by toto v praxi platilo vo voľbách, tak by voliči pre istotu museli ísť odhlasovať do viacerých volebných miestnosti (ak si pamätáte jeden takýto legendárny príklad sme tu na Slovensku mali, ale predsa nie je to zrovna očakávaný priebeh volieb 🙂 ). Druhým odchýlením Hadoopu od volebnej analógie je fakt, že v Hadoope nie je pevne stanovená ústredná volebná komisia ani krajské volebné komisie. Rozdelenie úloh môže byť dynamické podľa toho, čo treba spočítať. Rečou analógie, ktorákoľvek z okrskových komisií sa môže stať zároveň aj ústrednou komisiou. Okrem týchto dvoch drobných odchýlení však analógia sedí pomerne presne.

*****   Ak máte pocit, že aj toto moje „volebné“ vysvetlenie princípov práce s BigData je ešte stále komplikované, skúste verziu, ktorá to vysvetľuje 5 ročnému dieťaťu.  *****

Na záver mi dovoľte ešte dve pikošky na túto tému. Napriek tomu, že „odstrašujúci“ volebný model vykreslený ako tradičná databáza (jedno miesto sčítania) vyznieva strašne, skutočne v našom svete existuje. Keďže som sa v minulosti motal okolo politiky, videl som na vlastné oči, že napríklad sčítanie hlasov volieb vo Veľkej Británii funguje presne tak, že hlasy sa nesčítavajú v okrskových komisiách, ale z celého okresu ich zvezú do jednej miestnosti.  Tam sa sčítajú postupne, sekvenčne za sebou. Tento proces zažíva mnohé z nedostatkov, ktoré sme tu vykreslili. Napríklad občas sa stáva, že kvôli chybám je potrebné celé spracovanie okrsku zopakovať. (čo v našom systéme môže nariadiť iba súd)

Tou druhou pikoškou je, že hoci máme na Slovensku Hadoop proces organizácie volieb, máme stále anti-Hadoop proces spracovania volieb. Databázové systémy ŠÚSR, podľa mne dostupných informácií, totiž stále sú založené na tradičných relačných databázových schémach s jedným centrálnym spracovaním. To má okrem iného za dôsledok v minulosti demonštrované výpadky systému alebo aj bizarnú situáciou, keď tentokrát ŠÚSR nemohol spustiť zverejňovanie výsledkov 7 krajov, v ktorých sa už ukončilo hlasovanie, lebo v systéme nevedel oddeliť zobrazovanie 8ho kraju (TN), v ktorom sa pre výpadok prúdu muselo hlasovať dlhšie. Ach jaj! No s tým Hadoopom to asi nie je také jednoduché ani u manažérov verejnej správy…