Úgy döntöttem, az otthoni rendszeremet felvértezem Hadooppal. Nem teljesen légből kapott az ötlet, meg akarom ismerni a Sparkot, amihez nem árt, ha Hadoop is van. De akkor már telepítem a Hive-ot is. Meg a HBase se maradjon ki. Mivel az életem egy viszonylag nyugodt periódusban van, úgy határoztam, mindent forráskódból rakok fel.
Ha Java alapú rendszereket fordítunk, a Maven elengedhetetlen. Telepítsük ezt is forráskódból! Ez nem olyan egyszerű, mert a Maven fordításához is Maven kell. Ha el akarjuk kerülni az önmagába harapó kígyó esetét, kompromisszumos megoldásként le kell tölteni egy bináris Mavent is. A folyamatot bootstrappingnek hívják és a GCC fordítása során már írtam róla.
A második lépés a Hadoop fordítása volt. Ez már nem ment olyan egyszerűen. Telepíteni kellett a ProtocolBuffert, szigorúan a 2.5.0-t. Ez viszont régi, a telepítő nem tudta letölteni a szükséges állományokat, mert a curl parancs egy elavult verzióját használta. Ezért átírtam a kódot wget-re. Utána már fordíthattam is a Hadoopto:
mvn package -Pdist -Pdoc -Psrc -Dtar -DskipTests
A Hive teljesen fájdalom mentesen fordult:
mvn clean package -DskipTests
A Spark már okozott némi gubancot. A fordításhoz nem raktam fel a szükséges R csomagokat, ezért többször újra kellett indítani a folyamatot. A forráskódhoz mellékelt szkript viszont remekül végezte a dolgát. Mindent fordítottam, ezért szép hosszú parancssort gépelhettem:
./dev/make-distribution.sh --name custom-spark --pip --r --tgz -Psparkr -Phadoop-2.7 -Phive -Phive-thriftserver -Pmesos -Pyarn
A HBase okozta a legnagyobb fejfájást. A standard fordítási lépések rendre kudarcba fulladtak, ráadásul a keresőbe beírva nem azok a találatok jöttek fel, amelyek segítettek a megoldásban. Végül a hibaüzenetet idézőjelekbe rakva megvolt a megoldás! A Manve 3.5.2 nem képes lefordítani a HBase-t. A fejlesztők viszont azt találták, hogy a régi Maven zokszó nélkül teszi a dolgát.
A régi Mavent csak binárisan töltöttem le, mert nem szándékoztam megtartani. Azt használva ez a komponens is fordult.