Jeffrey Cross
Jeffrey Cross

Kirjoita Hadoop MapReduce-työ millä tahansa ohjelmointikielellä

Hadoop on Java-pohjainen hajautettu sovellus- ja tallennuskehys, joka on suunniteltu toimimaan tuhansilla hyödykekoneilla. Voit ajatella sitä avoimen lähdekoodin lähentämisessä Googlen etsintäinfrastruktuuriin. Yahoo !, itse asiassa suorittaa monia osia Hadoopin haku- ja mainostuotteista, eikä ole liian yllättävää, että he ovat merkittävä tekijä hankkeessa.

MapReduce on menetelmä ohjelmiston kirjoittamiseksi, joka voidaan rinnastaa tuhansien koneiden kanssa valtavien tietojen käsittelyyn. Oletetaan esimerkiksi, että haluat laskea viittausten määrän kaikilla maailman Apache-palvelinlokeilla toimialoittain. Tässä on se, miten teet sen:

  1. Hanki koko maailma lataamaan palvelinlokit gigantor-jaettuun tiedostojärjestelmään. Saatat automatisoida ja arvioida tämän, kun jokainen web-järjestelmänvalvoja lisää sivustolleen joitakin JavaScript-koodeja, jotka aiheuttavat niiden kävijöiden selaimien pingata omaa palvelinta, jolloin tuloksena on yksi maailman palvelinlokien jättiläinen lokitiedosto. Valitsemasi tiedostojärjestelmä on HDFS, Hadoop-hajautettu tiedostojärjestelmä, joka käsittelee tämän valtavan tiedoston jakamista ja kopiointia kaikkien klusterisolmujen välillä.
  2. Jaa maailman suurin lokitiedosto pieniksi paloiksi, ja tuhannet klusterikoneesi jäsentävät kappaleet etsimällä viittauksia. Tämä on "Kartta" -vaihe. Jokainen runko käsitellään ja kyseisessä osassa olevat viittaajat lähetetään takaisin järjestelmään, joka tallentaa viittaavan isäntänimen näppäilemän lähdön. Paksutoimeksiannot optimoidaan siten, että klusterin solmut käsittelevät sellaisia ​​datan osia, jotka on tallennettu hajautetun tiedostojärjestelmän paikalliseen fragmenttiin.
  3. Lopuksi kaikki karttavaiheen lähdöt on koottu. Tätä kutsutaan "Vähennä" -vaiheeksi. Klusterin solmuille annetaan isäntänimen avain, joka luotiin Map-vaiheessa. Solmu lukee kaikki kyseisen avaimen lähdöt ja laskee ne. Sitten solmu lähettää yhden tuloksen, joka on viittaajan verkkotunnus, ja viittausten kokonaismäärä, jotka tuotettiin kyseiseltä viittaajalta. Tämä tehdään satoja tuhansia kertoja, kerran kullekin viittausalueelle ja jaetaan tuhansien klusterin solmujen kesken.

Tämän hypoteettisen MapReduce-työn päätteeksi jätät tiiviin luettelon jokaisesta viittaamasta liikenteestä ja siitä, kuinka monta viittausta se on antanut. Mikä on viileä Hadoopin ja MapReducen osalta, se tekee hajautettujen sovellusten kirjoittamisesta yllättävän yksinkertaisen. Kaksi funktiota esimerkkisuuntaajan jäsentämiseksi voivat olla vain noin 20 riviä koodia. Hadoop huolehtii hajautetun varastoinnin ja käsittelyn valtavista haasteista, jolloin voit keskittyä tiettyyn tehtävään.

Koska Hadoop on kirjoitettu Java-muodossa, luonnollinen tapa luoda hajautettuja töitä on kapseloida Map ja Reduce -toiminnot java-luokkaan. Jos et ole Java-junkie, älä huolehdi, että työtehtävä on nimeltään HadoopStreaming, joka voi kommunikoida minkä tahansa tavallisen STDIN- ja STDOUT-ohjelman kanssa. Tämän avulla voit kirjoittaa hajautetun työnsi Perlissä, Pythonissa tai jopa komentosarjassa! Voit luoda kaksi ohjelmaa, yksi kartoittajalle ja toinen vähennyslaitteelle, ja HadoopStreaming käsittelee ne kaikkiin klusterin solmuihin ja siirtää tietoja ohjelmiin ja ohjelmista.

Jos haluat pelata tämän kanssa, suosittelen todella pari saksalaisen hakkeri Michael G. Nollin kirjoitusta. Hän koottiin läpi läpiviennin Hadoopin hankkimiseksi Ubuntu-ohjelmassa ja myös mukavan esittelyn kirjoittamaan MapReduce-ohjelmaa käyttäen HadoopStreamingia (esimerkkinä Python).

Onko Hadszine-lukijaa Hadoopilla? Kerro meille, mitä olet tekemässä, ja anna meille lisätietoja kommenteissa.

Hadoop Running Hadoop On Ubuntu Linuxin kirjoittaminen Hadoop-kartan vähentäminen Python-ohjelmassa

Osake

Jättänyt Kommenttia