A téma nem új keletű, de annál érdekesebb, így szinte bármikor lehet róla írni. A Twitteren naponta keletkezik elképesztő mennyiségű adat, melynek tárolását, feldolgozását és elemzését egy robosztus megoldás biztosítja: a Hadoop technológia. Alábbiakban egy kis bepillantást nyerhetünk az adatok kiértékelésébe, egészen pontosan abba, hogyan segít a fent említett technológia a véleményvezérek azonosításában.
Elöljáróban pár adat, hogy tisztában legyünk a feladat komolyságával: a Twitter a világ egyik legnagyobb kapacitású Hadoop clustereit (a cluster többnyire egy „vezérlő” és több „végrehajtó”szerverből áll. A vezérlő kontrollálja a végrehajtók munkáját, kiosztja számukra a feladatokat és optimalizálja az erőforrásaikat) üzemelteti, ami jelenleg több ezer (!) szervert és 300 PB (petabájt) anyagot jelent. Hogy az adatmennyiséget kicsit kézzel foghatóvá tegyük, induljunk ki abból, hogy saját gépünkön egy jól „meghízott” Windows operációs rendszer telepítés kb. 20GB. Nos, 300 PB durván 15 millió telepített Windows-t jelent.
Ennyit az IT részről, nézzük, hogyan lehet ilyen irdatlan mennyiségű adatból hatékonyan elemezni, dolgozni. A legfontosabb, hogy azonosítani tudjuk a véleményvezéreket, ehhez pedig tudnunk kell, ki minősül annak a Twitter mindennapi használatában. Nézzünk egy példát: emberünk, legyen a neve Béla, követ más felhasználókat és rendelkezik maga is számos követővel. Ha Béla ír valamiről, azt a követői mind látni fogják. Béla nem csak ír, retweetel is, azaz mások tweet-jeit is megosztja, továbbítja. Retweet esetén Béla a megosztott tartalmat eljuttatja saját követőinek, így a tartalom eredeti tulajdonosa eljut Béla felhasználóihoz is anélkül, hogy ismerné őket, vagy a követői lennének. A retweetek mennyisége így egy felhasználó esetében jól mutatja, mennyire elfogadott az ő véleménye a twitteren; hiszen minél többen, minél több tweetjét, minél relevánsabb témában és minél gyakrabban osztják meg, annál inkább lehet véleményvezér a saját területén.
És most vissza a „száraz” IT területre: a fenti adatlekérdezés SQL nyelv esetében egyszerű feladat, viszont az RDBMS adatbázisok, melyek alapvető lekérdezőnyelve az SQL, nem tudják lekezelni a Twitteren naponta keletkező több száz millió napi tranzakciót. Hiába a gyors lekérdező nyelv, ha az adatérkeztetés oldalon az RDBMS elvérzik. A Twitter a tweetek gyors, adatszintű továbbítására és tárolására JSON formátumot használ, amivel viszont az SQL alapú nyelvek nem igazán tudnak gyorsan és hatékonyan bánni. Itt jönnek a képbe a Hadoop fájlrendszert kiszolgáló alkalmazások, mint az Apache Flume, Oozie és a Hive.
A legfontosabb, hogy az adatok – jelen esetben a több száz millió napi tweet – minél gyorsabban eljussanak a Hadoop fájlrendszerhez (HDFS) és annak formátumában fájlrendszer szinten rögzítésre kerüljenek. Ez az Apache Flume feladata, ami adott forrásokból érkeztet irdatlan mennyiségű log jellegű adatokat HDFS-re. A folyamatos érkeztetés miatt felmerül egy újabb megoldandó feladat: hogyan lehet egy folyamatosan változó adatszettből lekérdezések futtatására alkalmas adattáblá(ka)t készíteni és az állandó adatérkeztetés mellett az adatok feldolgozni, elemezni a HDFS-en?
Ez az Oozie feladata, ami egy folyamat-koordinátor rendszer és rugalmasságának köszönhetően testre szabható paraméterek mentén képes időzített munkafolyamatokat végrehajtani. Az Oozie-ban beállított időzített feladat jelen esetben annyit lát el, hogy a Flume által HDFS-re érkeztetett milliónyi tweetből készített adattáblát folyamatosan újraparticionálja, azaz tulajdonképpen kibővíti az újonnan érkeztetett adatokkal. Ez összehasonlíthatatlanul gyorsabb az RDBMS rendszerek INSERT utasításához képest, és sokkal rugalmasabb is a megoldás jellegét illetően (mondhatnánk elegáns J).
A folyamat végén a Hive, szintaktikájában egy SQL-re erősen hasonlító, de valójában egy teljesen egyedi lekérdezőnyelv áll, mely elvégzi az adatok aggregálását és elemzését. A Hive a HDFS-en tárolt adattáblát feldolgozza, azaz értelmezi és lekérdezi. Az eredmények segítségével a Twitter pontosan tudja, mely tweetek kapták a legnagyobb figyelmet és közönséget, illetve kik azok, akiknél ez nem csupán egy kiugró egyszeri eset, hanem az illető adott témában rendszeresen kommunikál és az általa közvetített tartalmak relevánsak számos más felhasználó részére.
Ennek segítségével a Twitter pontosan tudja, milyen újításairól, termékeiről milyen közönségnek (és mikor) kell kommunikálnia, hogy minél nagyobb visszhangot (retweet) kapjon a felhasználói közösségben. És a legszebb az egészben még az, hogy amiről közel egy oldalon értekeztem most, az pillanatok alatt megy végbe a Twitter több ezer szerverén.