Apache Hadoop | |
---|---|
Tyyppi | puitteet |
Tekijä | Doug-leikkaus [d] |
Kehittäjä | Apache Software Foundation |
Sisään kirjoitettu | Java |
Käyttöjärjestelmä | cross-platform ja POSIX |
Ensimmäinen painos | 1. huhtikuuta 2006 [1] |
Laitteistoalusta | Java-virtuaalikone |
uusin versio |
|
Lisenssi | Apache License 2.0 ja GNU GPL |
Verkkosivusto | hadoop.apache.org _ |
Mediatiedostot Wikimedia Commonsissa |
Hadoop on Apache Software Foundationin projekti , vapaasti jaettu joukko apuohjelmia , kirjastoja ja puitteet hajautettujen ohjelmien kehittämiseen ja suorittamiseen satojen ja tuhansien solmujen klustereissa . Käytetään toteuttamaan haku- ja kontekstuaalisia mekanismeja monille paljon kuormitettaville verkkosivustoille, mukaan lukien Yahoo! ja Facebook [2] . Kehitetty Javassa osana MapReduce - laskentaparadigmaa, jonka mukaan sovellus on jaettu suureen määrään identtisiä perustehtäviä, jotka ovat suoritettavissa klusterin solmuissa ja jotka luonnollisesti pelkistyvät lopputulokseen.
Vuodesta 2014 lähtien projekti koostuu neljästä moduulista - Hadoop Common ( keskiohjelmisto - joukko infrastruktuuriohjelmistokirjastoja ja -apuohjelmia, joita käytetään muihin moduuleihin ja niihin liittyviin projekteihin), HDFS ( hajautettu tiedostojärjestelmä ), YARN (järjestelmä tehtävien ajoitukseen ja klusterin hallintaan) ja Hadoop MapReduce (alusta hajautettujen MapReduce-laskelmien ohjelmointiin ja suorittamiseen), aiemmin Hadoop sisälsi useita muita projekteja, joista tuli itsenäisiä Apache Software Foundation -projektijärjestelmässä.
Sitä pidetään yhtenä " big datan " perustekniikoista. Hadoopin ympärille on muodostunut kokonainen ekosysteemi vastaavia projekteja ja teknologioita, joista monet kehitettiin alun perin osana projektia ja myöhemmin itsenäistyivät. 2000-luvun toisesta puoliskosta lähtien teknologian aktiivinen kaupallistamisprosessi on ollut käynnissä , useat yritykset rakentavat liiketoimintaansa kokonaan Hadoopin ja ekosysteemin teknisten tukipalvelujen kaupallisten jakelujen luomiseen sekä lähes kaikkiin tärkeimpiin tietotekniikkaan. organisaatioiden tarjoajat muodossa tai toisessa sisältävät Hadoopin tuotestrategioissa ja tuotelinjoissa.
Kehityksen aloitti alkuvuodesta 2005 Doug Cutting tavoitteenaan rakentaa hajautettu laskentaohjelmistoinfrastruktuuri Nutch - projektille , Java - ohjelmistojen hakukoneelle . Ideologisena perustana oli Googlen työntekijöiden Jeffrey Deanin ja Sanjay Gemawatin julkaisu [3] MapReducen laskentakonsepteista [4] . Uusi projekti nimettiin perustajan lelunorsuvauvan mukaan [5] .
Vuosina 2005-2006 kaksi kehittäjää - Cutting ja Mike Cafarella ( Mike Cafarella ) kehittivät Hadoopin osa-aikaisesti [4] ensin osana Nutch-projektia, sitten - Lucene -projektia . Tammikuussa 2006 Yahoo kutsui Cuttingin johtamaan hajautetun laskentainfrastruktuurin kehittämiseen omistettua tiimiä, joka sisältää myös Hadoopin erottamisen erilliseksi projektiksi. Helmikuussa 2008 Yahoo lanseerasi 10 000 ytimen klusterihakukoneen, joka toimii Hadoopin avulla.
Tammikuussa 2008 Hadoopista tulee Apache Software Foundation -projektijärjestelmän huipputason projekti . Huhtikuussa 2008 Hadoop rikkoi maailmanennätyksen standardoidussa tietojen lajittelun vertailuarvossa ja käsitteli 1 Tt 209 sekunnissa. 910 solmun klusterissa [6] . Siitä hetkestä lähtien Hadoopia alettiin käyttää laajalti Yahoon ulkopuolella - Last.fm , Facebook , New York Times [7] ottavat käyttöön tekniikkaa sivustoilleen , ja sopeutumista tehdään Hadoopin suorittamiseksi Amazon EC2 -pilvissä .
Huhtikuussa 2010 Google myönsi Apache Software Foundationille oikeudet käyttää MapReduce-teknologiaa kolme kuukautta sen jälkeen, kun se oli puolustettu Yhdysvaltain patenttivirastossa , mikä kevensi mahdollisten patenttivaatimusten järjestämistä [8] .
Vuodesta 2010 lähtien Hadoopia on toistuvasti luonnehdittu keskeiseksi " big data " -teknologiaksi, sen laajaa käyttöä massiivisessa rinnakkaistietojen käsittelyssä on ennustettu, ja Clouderan ohella on syntynyt joukko teknologia-aloitusyrityksiä, jotka keskittyvät kokonaan Hadoopin kaupallistamiseen. [9] [10] . Vuoden 2010 aikana useista Hadoopin aliprojekteista - Avro , HBase , Hive , Pig , Zookeeper - tuli peräkkäin Apache-säätiön huipputason projekteja, jotka olivat alkuna Hadoopin ympärille ekosysteemin muodostumiselle . Maaliskuussa 2011 Hadoopille myönnettiin Guardian Media Groupin vuotuinen innovaatiopalkinto , jossa tekniikka nimettiin " 21. vuosisadan Sveitsin armeijan veitseksi " [11] .
YARN-moduulin käyttöönotto Hadoop 2.0:ssa, joka julkaistiin syksyllä 2013, on arvioitu merkittäväksi harppaukseksi, joka vie Hadoopin MapReduce-paradigman ulkopuolelle ja asettaa tekniikan universaalin ratkaisun tasolle hajautetun tiedonkäsittelyn järjestämiseen [12] .
Hadoop Common sisältää kirjastoja Hadoopin tukemien tiedostojärjestelmien hallintaan sekä komentosarjoja tarvittavan infrastruktuurin luomiseen ja hajautetun käsittelyn hallintaan, joiden mukavuutta varten on luotu käyttöliittymästä käynnistetty erikoistunut yksinkertaistettu komentorivitulkki ( FS shell , filesystem shell ). järjestelmän kuori komennolla muotoa: , jossa on tulkin komento ja luettelo resursseista, joiden etuliitteenä on tuettu tiedostojärjestelmätyyppi, kuten tai . Suurin osa tulkin komennoista toteutetaan analogisesti vastaavien Unix-komentojen kanssa (esim. , , , , , , , , , , , lisäksi joitain samankaltaisten Unix-komentojen näppäimiä tuetaan, esim. rekursiivinen avain , , ) , on Hadoopille ominaisia komentoja (esimerkiksi laskee tietyssä polussa olevien hakemistojen, tiedostojen ja tavujen määrän, tyhjentää roskakorin ja muuttaa tietyn resurssin toisinnuskerrointa ).hdfs dfs -command URIcommandURIhdfs://example.com/file1file:///tmp/local/file2catchmodchownchgrpcpdulsmkdirmvrmtail-Rchmodchownchgrpcountexpungesetrep
HDFS ( Hadoop Distributed File System ) on tiedostojärjestelmä, joka on suunniteltu tallentamaan suuria tiedostoja , jotka on jaettu lohko lohkolta laskentaklusterin solmujen välillä. Kaikki HDFS:n lohkot (paitsi tiedoston viimeinen lohko) ovat samankokoisia, ja jokainen lohko voidaan sijoittaa useisiin solmuihin, lohkon koko ja replikointitekijä (solmujen lukumäärä, joihin kukin lohko tulee sijoittaa) on määritetty tiedostotason asetukset. Replikoinnin ansiosta hajautetun järjestelmän vakaus yksittäisten solmujen vikoja vastaan varmistetaan. Tiedostot voidaan kirjoittaa HDFS:ään vain kerran (muokkausta ei tueta), ja vain yksi prosessi voi kirjoittaa tiedostoon kerrallaan. Tiedostojen järjestäminen nimiavaruudessa on perinteinen hierarkkinen : siellä on juurihakemisto, hakemistojen sisäkkäisyyttä tuetaan ja tiedostot ja muut hakemistot voivat sijaita samassa hakemistossa.
HDFS-ilmentymän käyttöönotto sisältää keskeisen nimisolmun ( eng. name node ) , joka tallentaa tiedostojärjestelmän metatiedot ja metatiedot lohkojen jakautumisesta, sekä sarjan datasolmuja ( eng. data node ), jotka tallentavat suoraan tiedostolohkoja. Nimisolmu vastaa tiedosto- ja hakemistotason toimintojen käsittelystä - tiedostojen avaamisesta ja sulkemisesta, hakemistojen käsittelystä, datasolmut käsittelevät suoraan tiedon kirjoitus- ja lukutoimintoja. Nimisolmu ja datasolmut toimitetaan verkkopalvelimien kanssa , jotka näyttävät solmujen nykyisen tilan ja mahdollistavat tiedostojärjestelmän sisällön tarkastelun. Hallintatoiminnot ovat saatavilla komentoriviliittymästä.
HDFS on olennainen osa projektia, mutta Hadoop tukee työtä muiden hajautettujen tiedostojärjestelmien kanssa ilman HDFS:ää, tuki Amazon S3 :lle ja CloudStorelle on toteutettu pääjakelussa. Toisaalta HDFS:ää voidaan käyttää paitsi MapReduce-töiden ajamiseen, myös yleiskäyttöisenä hajautettuna tiedostojärjestelmänä, erityisesti sen päälle on toteutettu hajautettu NoSQL DBMS HBase ja skaalautuva Apache Mahout koneoppimisjärjestelmä toimii sen ympäristössä .
YARN ( englanniksi Yet Another Resource Negotiator - " toinen resurssien välittäjä ") on version 2.0 (2013) kanssa ilmestynyt moduuli, joka vastaa klusterin resurssien hallinnasta ja tehtävien ajoituksesta. Jos aiemmissa julkaisuissa tämä toiminto oli integroitu MapReduce -moduuliin , jossa se toteutettiin yhdellä komponentilla ( JobTracker ), niin YARNissa on loogisesti itsenäinen daemon - resurssien ajoitus ( ResourceManager ), joka tiivistää kaikki järjestelmän laskentaresurssit. klusterin ja hallinnoi niiden tarjoamista hajautetuille käsittelysovelluksille. Sekä MapReduce-ohjelmat että muut hajautetut sovellukset, jotka tukevat asianmukaisia ohjelmointirajapintoja, voivat toimia YARN:n ohjauksessa. YARN tarjoaa mahdollisuuden useiden eri tehtävien rinnakkaiseen suorittamiseen klusterin sisällä ja niiden eristämiseen ( monivuokrauksen periaatteiden mukaisesti ). Hajautetun sovelluksen kehittäjän on otettava käyttöön erityinen sovellusten hallintaluokka ( ApplicationMaster ), joka vastaa tehtävien koordinoinnista resurssien ajoittajan tarjoamien resurssien puitteissa. resurssien ajoittaja on vastuussa sovelluksen ohjausluokan esiintymien luomisesta ja vuorovaikutuksesta sen kanssa asianmukaisen verkkoprotokollan kautta.
YARN:ia voidaan pitää klusterin käyttöjärjestelmänä siinä mielessä, että se toimii rajapintana klusterin laitteistoresurssien ja laajan luokan sovellusten välillä, jotka käyttävät sen tehoa laskennallisen käsittelyn suorittamiseen [13] .
Hadoop MapReduce on ohjelmistokehys hajautetun laskennan ohjelmointiin MapReduce -paradigmassa . Hadoop MapReducen sovelluskehittäjän on otettava käyttöön peruskäsittelijä, joka varmistaa klusterin jokaisessa laskentasolmussa alkuperäisten avainarvoparien muuntamisen avainarvoparien välijoukoksi (rajapinnan toteuttava luokka Mapperon nimetty ylemmän asteen funktion Map mukaan, ja käsittelijä , joka pienentää parien välijoukon lopulliseen, pelkistettyyn joukkoon ( taitto , rajapinnan toteuttava luokka Reducer). Kehys välittää lajitellut lähdöt peruskäsittelijöistä konvoluution syötteeseen, pelkistys koostuu kolmesta vaiheesta - sekoitus ( sekoitus , halutun tulosteen osan valinta), lajittelu ( lajittelu , ryhmittely jakelijoiden tulosten avainten mukaan - lisälajittelu, jota tarvitaan, kun eri atomiprosessorit palauttavat sarjoja samoilla avaimilla, samaan aikaan lajittelusäännöt tässä vaiheessa voidaan asettaa ohjelmallisesti ja käyttää mitä tahansa avainten sisäisen rakenteen ominaisuuksia) ja pienentää itseään ( listan taitto ) - tulosjoukon saaminen. Joissakin käsittelytyypeissä taittoa ei vaadita, ja kehys palauttaa tässä tapauksessa joukon lajiteltuja pareja, jotka perusprosessorit ovat vastaanottaneet.
Hadoop MapReducen avulla voit luoda töitä sekä peruskäsittelijöillä että taitoilla, jotka on kirjoitettu ilman Javaa: Hadoop-suoratoistoapuohjelmien avulla voit käyttää mitä tahansa suoritettavaa tiedostoa , joka toimii normaalin käyttöjärjestelmän I/O:n kanssa (esimerkiksi UNIX -kuorityökalut) peruskäsittelijöinä ja taittoina. ), on myös SWIG - yhteensopiva C++ Hadoop pipes API . Hadoop-jakeluissa on myös toteutuksia useista erityisistä perusprosessoreista ja hajautetussa prosessoinnissa yleisimmin käytettyjen rullauspakettien toteutuksista.
Hadoop MapReducen ensimmäisissä versioissa oli työn ajoitus ( JobTracker ), versiosta 2.0 lähtien tämä toiminto on siirretty YARN: iin ja tästä versiosta lähtien Hadoop MapReduce -moduuli on toteutettu YARN:n päällä. Ohjelmointirajapinnat ovat suurimmaksi osaksi säilyneet, mutta täydellistä taaksepäin yhteensopivuutta ei ole (eli API :n aikaisemmille versioille kirjoitettujen ohjelmien suorittamiseksi , jotta YARN:ssa toimisi, yleensä niitä tarvitaan muokkaukseen tai uudelleenmuodostukseen , ja vain tietyin rajoituksin ovat taaksepäin binääriyhteensopivuusvaihtoehdot mahdollisia [14 ] ).
Yksi Hadoopin päätavoitteista oli alun perin tarjota horisontaalinen klusterin skaalautuvuus lisäämällä halpoja solmuja (massaluokan laitteet, englantilainen hyödykelaitteisto ) turvautumatta tehokkaisiin palvelimiin ja kalliisiin tallennusverkkoihin . Toimivat tuhansien solmujen kokoiset klusterit vahvistavat tällaisten järjestelmien toteutettavuuden ja kustannustehokkuuden, esimerkiksi vuodesta 2011 lähtien Yahoossa tunnetaan suuria Hadoop-klustereita (yli 4 tuhatta solmua, joiden tallennuskapasiteetti on yhteensä 15 PB), Facebook (noin 2 tuhatta solmua per 21 PB) ja Ebay (700 solmua per 16 PB) [15] . Kuitenkin uskotaan, että Hadoop-järjestelmien horisontaalinen skaalautuvuus on rajoitettu, Hadoopissa ennen versiota 2.0 maksimi mahdolliseksi arvioitiin 4 tuhatta solmua käytettäessä 10 MapReduce-työtä solmua kohti [16] . Tätä rajoitusta helpotti monella tapaa toimintojen keskittäminen MapReduce-moduuliin töiden elinkaaren seurantaa varten, ja uskotaan, että sen poistaminen YARN-moduuliin Hadoop 2.0:ssa ja hajauttaminen - osan valvontatoimintojen jakaminen käsittelysolmuihin - vaakasuuntainen skaalautuvuus on lisääntynyt.
Toinen Hadoop-järjestelmien rajoitus on nimisolmun ( NameNode ) RAM-muistin koko, joka tallentaa koko klusterin nimitilan jakelun käsittelyä varten, ja lisäksi tiedostojen kokonaismäärä, joita nimisolmu pystyy käsittelemään, on 100 miljoonaa [17] . Tämän rajoituksen voittamiseksi parhaillaan jaetaan nimisolmu, joka on yleinen nykyisessä arkkitehtuurissa koko klusterille, useisiin itsenäisiin solmuihin. Toinen vaihtoehto tämän rajoituksen voittamiseksi on käyttää hajautettua DBMS :ää HDFS:n päällä, kuten HBase , jossa tiedostojen ja hakemistojen roolia ovat yhden suuren tietokantataulukon tietueet sovelluksen näkökulmasta.
Vuodesta 2011 lähtien tyypillinen klusteri rakennettiin yksikantaisista moniytimisistä x86-64 - solmuista, joissa oli Linux -käyttöjärjestelmä ja jossa oli 3-12 levytallennuslaitetta, jotka on yhdistetty 1 Gb/s verkkoon. Trendit ovat sekä solmujen laskentatehon vähentäminen ja pienitehoisten prosessorien ( ARM , Intel Atom ) [18] käyttö että tehokkaiden laskentasolmujen samanaikainen käyttö suuren kaistanleveyden verkkoratkaisujen kanssa ( InfiniBand Oracle Big Datassa Laite , korkean suorituskyvyn 10 Gb/s kuitukanava ja Ethernet SAN FlexPod big data -mallikokoonpanoissa) .
Hadoop-järjestelmien skaalautuvuus riippuu suurelta osin käsiteltävien tietojen ominaisuuksista, ennen kaikkea niiden sisäisestä rakenteesta ja ominaisuuksista, joilla niistä saadaan tarvittava tieto, sekä käsittelytehtävän monimutkaisuudesta, mikä puolestaan sanelee tietojen organisoinnin. käsittelysyklit, atomioperaatioiden laskentaintensiteetti ja viime kädessä rinnakkaisuuden taso ja klusterikuormitus. Hadoop-käsikirja (ensimmäiset versiot, ennen 2.0) osoitti, että hyväksyttävä rinnakkaisuuden taso on 10–100 perusprosessorin käyttö klusterin solmua kohden ja tehtäviin, jotka eivät vaadi merkittävää suoritinaikaa - jopa 300; konvoluutioille pidettiin optimaalisena käyttää niitä solmujen lukumäärällä kerrottuna kertoimella välillä 0,95-1,75 ja vakiolla mapred.tasktracker.reduce.tasks.maximum. Suuremmalla kerroinarvolla nopeimmat solmut, jotka ovat suorittaneet ensimmäisen konvergenssikierroksen, saavat toisen osan välipareja prosessoitavaksi aikaisemmin, jolloin kertoimen kasvu ylikuormittaa klusteria, mutta tarjoaa samalla tehokkaamman kuormituksen tasapainotuksen . YARN käyttää sen sijaan konfigurointivakioita, jotka määrittävät resurssien ajoittajan käytettävissä olevien RAM-muistin ja virtuaalisten prosessoriytimien arvot [19] , joiden perusteella rinnakkaisuuden taso määritetään.
Cloudera luotiin lokakuussa 2008, kun Hadoopin popularisoituminen vuonna 2008 ja Hadoop-klusterien rakentaminen Yahoossa ja Facebookissa olivat taustalla Michael Olsonin, Sleepycatin ( Berkeley DB :n luoneen yrityksen ) entisen toimitusjohtajan johdolla. Hadoop -teknologioiden kaupallistaminen. Syyskuussa 2009 Hadoopin pääkehittäjä Doug Cutting muutti Clouderaan Yahoolta, ja tämän siirtymän ansiosta kommentaattorit kuvailivat Clouderaa "Hadoopin uudeksi standardin kantajaksi", huolimatta siitä, että suurimman osan projektista loivat edelleen yrityksen työntekijät. Facebook ja Yahoo [20] . MapR perustettiin vuonna 2009 tavoitteenaan luoda korkean suorituskyvyn versio Hadoop-jakelusta ja toimittaa se omana ohjelmistona. Huhtikuussa 2009 Amazon lanseerasi Elastic MapReducen, pilvipalvelun , jonka avulla tilaajat voivat luoda Hadoop-klustereita ja suorittaa niillä töitä aikaperusteisesti. Myöhemmin vaihtoehtona Amazon Elastic MapReduce -tilaajat saivat valita Apachen klassisen jakelun ja MapR:n jakelun välillä.
Vuonna 2011 Yahoo irrotti Hadoopin kehittäneen ja käyttäneen divisioonan itsenäiseksi yritykseksi - Hortonworks , pian uusi yritys onnistui tekemään Microsoftin kanssa sopimuksen Hadoop-jakelun kehittämisestä yhdessä Windows Azurelle ja Windows Serverille [21] . Samana vuonna, kun Hadoop nousi yhdeksi big datan ydinteknologioista, käytännössä kaikki tärkeimmät organisaatioiden teknologiaohjelmistojen toimittajat sisällyttivät Hadoop-teknologiat muodossa tai toisessa strategioihinsa ja tuotelinjoihinsa. Joten Oracle julkaisi Big Data -laitteiston laitteisto-ohjelmistokompleksin (koottu valmiiksi tietoliikennekaappiin ja esikonfiguroitu Hadoop-klusteri Clouderan jakelupaketilla) [22] , IBM loi BigInsights-tuotteen, joka perustuu Apache-jakelusarjaan [ 23] , EMC lisensoi MapR:ltä heidän korkean suorituskyvyn Hadoopin integroitavaksi äskettäin hankitun Greenplumin [24] tuotteisiin (tämä liiketoimintayksikkö erotettiin myöhemmin itsenäiseksi Pivotal -yritykseksi , ja se siirtyi täysin itsenäiseen Hadoop-jakeluun perustuu Apache-koodiin [25] ), Teradata teki sopimuksen Hortonworksin kanssa Hadoopin integroimisesta Aster Big Analytics -laitteeseen [26] . Vuonna 2013 Intel loi oman Hadoop-jakelunsa [27] ja luopui vuotta myöhemmin kehityksestään ja siirtyi Clouderan ratkaisuihin, joista se osti 18 %:n osuuden [28] .
Ohjelmisto- ja palvelumarkkinoiden volyymi Hadoop-ekosysteemin ympärillä vuonna 2012 on arviolta 540 miljoonaa dollaria ja kasvun ennustetaan olevan 1,6 miljardia dollaria vuoteen 2017 mennessä. Markkinajohtajia ovat kalifornialaiset startupit Cloudera, MapR ja Hortonworks [29] . Niiden lisäksi Hadapt (Teradata [30] otti haltuunsa heinäkuussa 2014 ), Datameer , Karmasphere ja Platfora ovat myös tunnettuja rakentavan koko liiketoimintaansa tuotteiden luomiseen, jotka tarjoavat Hadoop-järjestelmille analyyttisiä ominaisuuksia [31] .
Apache Software Foundation | |||||||
---|---|---|---|---|---|---|---|
Huipputason projektit |
| ||||||
Osaprojektit |
| ||||||
Apache Web |
| ||||||
Muut projektit | |||||||
Kehitysprojektit ( hautomo ) |
| ||||||
Käytöstä poistetut projektit ( ullakko ) | |||||||
|