**Apache Hadoop** on avatud lähtekoodiga tarkvaralahenduste teek, mille eesmärgiks on suuremahulistel andmehulkadel informatsiooni töötlemine ning analüüsimine, kasutades sealjuures lihtsaid programmeerimismudeleid. Hadoop on ette nähtud töötama nii üksikserveris kui ka tuhandetes arvutites, kasutades tarkvarasse sisseehitatud lahendusi, et tagada riistvaraliste tõrgete automaatne käsitlemine õigeaegselt ilma arvutusprotsessi häirimata. Süsteemis kasutatakse enamjaolt Java programmeerimiskeelt.

Apache Hadoop koosneb peamiselt järgmistest moodulitest:

* Hadoop Common – kesksed tööriistad, mis toetavad ülejäänud moodulite tööd;
* Hadoop Distributed File System (HDFS) – serverite vahel ära jagatud failisüsteem;
* Hadoop Yarn – tööülesannete plaanur ja arvutusressursside jagaja;
* Hadoop MapReduce – MapReduce programmeerimismudelit kasutav süsteem mahukate andmete töötlemiseks.

Taust
-----

##### Ajalugu

Projekti alguseks peetakse 2002. aastal alustatud Apache Nutchi, mis oli samuti avatud lähtekoodiga otsingumootor. 2003. aastal kirjeldas Google oma hajusfailisüsteemi nimega GFS (Google’s File System), mis andis lükke sarnase, kuid avatud lähtekoodiga failisüsteemi kirjutamiseks. Viimase nimeks sai Nutch Distributed Filesystem (NDFS) ning projekt sai hoo sisse aastal 2004. Samal aastal tutvustas Google oma programmeerimismudelit MapReduce, mille kallal hakkas töötama jälle Nutchi meeskond. Järgneva aasta keskpaigaks töötasid enamus Nutchi algoritmid NDFS-i ja MapReduce peal. 2006. aastal liiguti Nutchi pealt iseseisvaks projektiks – Hadoopiks. 2008. aasta jaanuariks oli Hadoop saavutanud ülemaailmse tuntuse – projekti kasutasid sellised nimekad firmad nagu Facebook, last.fm ning Yahoo!.

##### Nimi

Apache Hadoopile on nime andnud üks projekti eestvedajatest, Doug Cutting. Dougi laps olevat pannud oma mänguelevandile nimeks Hadoop, mis täitis ka mehe tarkvarateegi nimevaliku kriteeriumeid – tol ajal kasutamata, ilma tagamõtteta, kuid samas lihtsasti hääldatav nimi. Hadoopi alammoodulid kannavad samuti tihti mitteseletavaid nimesid, näiteks Pig (eesti keeles 'siga') ja Yarn ('lõng'), kuid väiksemate süsteemi osade puhul eelistatakse nimesid, mis selgitavad ka tema funktsiooni.

MapReduce
---------

Mapreduce'i programmeerimismudel koosneb kahest põhilisest sammust: *map* ('vastendama') ning *reduce* ('kahandama'). Esimeses faasis jaotatakse sisendfail, mis koosneb võti-väärtus paaridest, tükkideks ning saadetakse erinevatele masinatele süsteemis. Selle protsessi eest hoolitseb ülemtööline, spetsiaalne masin, kelle ülesandeks ongi teiste, alammasinate töö juhtimine. Kui alammasinad on oma tööülesanded saanud, algab *mapping*'u protsess: igale võti-väärtus paarile rakendatakse sama algoritmi, mis tagastab null või enam võti-väärtus paari. 
*Reducer* faasis võetakse arvutatud võti-väärtus paarid ning pannakse need omavahel kokku (kahandatakse üheks). *Map* ja *reduce* faaside vahel on veel *shuffle & sort* ('sega ja sordi') faas, kus *map*-funktsiooni väljund sorteeritakse enne *reduce*-funktsioonile saatmist nende võtmete järgi.

Viited
------

1. 1 2  "Hadoop'i koduleht". Vaadatud 19.03.2018.
2. ↑  White, Tom (2009). *Hadoop: The Definitive Guide* (*first edition* ed.). O'Reilly. Lk 31-32.
3. ↑  Chris Morris (28.05.2013). "Hadoop: Toddler Talk Provides Big Data Name". *cnbc.com*. Vaadatud 22.04.2018.
4. ↑  "Shuffling and Sorting in Hadoop MapReduce". Vaadatud 19.03.2018.