Apache Hadoop | |
---|---|
Type | rammer |
Forfatter | Doug Cutting [d] |
Udvikler | Apache Software Foundation |
Skrevet i | Java |
Operativ system | cross-platform og POSIX |
Første udgave | 1. april 2006 [1] |
Hardware platform | Java virtuel maskine |
nyeste version | |
Licens | Apache License 2.0 og GNU GPL |
Internet side | hadoop.apache.org _ |
Mediefiler på Wikimedia Commons |
Hadoop er et projekt fra Apache Software Foundation , et frit distribueret sæt af hjælpeprogrammer , biblioteker og en ramme til udvikling og eksekvering af distribuerede programmer, der kører på klynger af hundreder og tusinder af noder. Bruges til at implementere søge- og kontekstuelle mekanismer for mange højbelastede websteder, herunder Yahoo! og Facebook [2] . Udviklet i Java inden for rammerne af MapReduce beregningsparadigmet , hvorefter applikationen er opdelt i et stort antal identiske elementære opgaver, der er eksekverbare på klynge noderne og naturligt reduceres til det endelige resultat.
Fra 2014 består projektet af fire moduler - Hadoop Common ( mellem software - et sæt infrastruktursoftwarebiblioteker og hjælpeprogrammer, der bruges til andre moduler og relaterede projekter), HDFS ( distribueret filsystem ), YARN (et system til planlægning af opgaver og styring af en klynge) og Hadoop MapReduce (en platform til programmering og eksekvering af distribuerede MapReduce-beregninger), tidligere inkluderede Hadoop en række andre projekter, der blev uafhængige inden for Apache Software Foundation-projektsystemet.
Det betragtes som en af de grundlæggende teknologier for " big data ". Et helt økosystem af relaterede projekter og teknologier er dannet omkring Hadoop, hvoraf mange oprindeligt blev udviklet som en del af projektet og senere blev uafhængige. Siden anden halvdel af 2000'erne har der været en proces med aktiv kommercialisering af teknologien , flere virksomheder bygger deres forretning udelukkende på skabelsen af kommercielle distributioner af Hadoop og økosystem tekniske supporttjenester, og næsten al større informationsteknologi udbydere til organisationer i en eller anden form inkluderer Hadoop i produktstrategier og produktlinjer.
Udviklingen blev indledt i begyndelsen af 2005 af Doug Cutting med det formål at bygge en distribueret computersoftwareinfrastruktur til Nutch -projektet , en gratis softwaresøgemaskine i Java , dens ideologiske grundlag var udgivelsen af Google -medarbejderne Jeffrey Dean og Sanjay Gemawat [3] om computerbegreber i MapReduce [4] . Det nye projekt blev opkaldt efter grundlæggerens legetøjs-elefant [5] .
I løbet af 2005-2006 blev Hadoop udviklet af to udviklere - Cutting og Mike Cafarella ( Mike Cafarella ) i deltidstilstand [4] , først som en del af Nutch-projektet, derefter - Lucene -projektet . I januar 2006 blev Cutting inviteret af Yahoo til at lede et dedikeret team til udvikling af en distribueret computerinfrastruktur, som også omfatter adskillelsen af Hadoop i et separat projekt. I februar 2008 lancerede Yahoo en klyngesøgemaskine med 10.000 kerner drevet af Hadoop.
I januar 2008 bliver Hadoop topniveauprojektet i Apache Software Foundation -projektsystemet . I april 2008 slog Hadoop verdensrekord i det standardiserede datasorteringsbenchmark og behandlede 1 TB på 209 sekunder. på en klynge af 910 noder [6] . Fra det øjeblik begyndte Hadoop at blive brugt i vid udstrækning uden for Yahoo - Last.fm , Facebook , The New York Times [7] implementerer teknologien til deres websteder , og tilpasning udføres for at køre Hadoop i Amazon EC2- skyer .
I april 2010 tildelte Google Apache Software Foundation rettighederne til at bruge MapReduce-teknologien, tre måneder efter at den blev forsvaret i US Patent Office , og derved fritog organisationen af mulige patentkrav [8] .
Siden 2010 er Hadoop gentagne gange blevet karakteriseret som en vigtig " big data "-teknologi, dens udbredte brug til massivt parallel databehandling er forudsagt, og sammen med Cloudera er der opstået en række teknologistartups, der udelukkende er fokuseret på kommercialiseringen af Hadoop [9] [10] . I løbet af 2010 blev flere underprojekter af Hadoop - Avro , HBase , Hive , Pig , Zookeeper - successivt topniveauprojekterne i Apache-fonden, som fungerede som begyndelsen på dannelsen af et økosystem omkring Hadoop . I marts 2011 blev Hadoop tildelt Guardian Media Groups årlige innovationspris , hvor teknologien blev udnævnt til " Swiss Army Knife of the 21st Century" [11] .
Implementeringen af YARN-modulet i Hadoop 2.0, udgivet i efteråret 2013, vurderes som et væsentligt spring, der tager Hadoop ud over MapReduce-paradigmet og sætter teknologien på niveau med en universel løsning til organisering af distribueret databehandling [12] .
Hadoop Common inkluderer biblioteker til styring af filsystemer understøttet af Hadoop, og scripts til at skabe den nødvendige infrastruktur og administrere distribueret behandling, for at gøre det nemmere at bruge en specialiseret forenklet kommandolinjefortolker ( FS shell , filsystem shell ), lanceret fra operativsystemet. systemskal med en kommando af formen: , hvor er en fortolkerkommando, og er en liste over ressourcer forankret med den understøttede filsystemtype, såsom eller . De fleste tolkekommandoer implementeres analogt med de tilsvarende Unix-kommandoer (for eksempel, , , , , , , , , , , desuden understøttes nogle taster til lignende Unix-kommandoer, for eksempel den rekursive nøgle for , , ) , er der kommandoer, der er specifikke for Hadoop ( tæller f.eks. antallet af mapper, filer og bytes i en given sti, tømmer papirkurven og ændrer replikeringsfaktoren for en given ressource). hdfs dfs -command URIcommandURIhdfs://example.com/file1file:///tmp/local/file2catchmodchownchgrpcpdulsmkdirmvrmtail-Rchmodchownchgrpcountexpungesetrep
HDFS ( Hadoop Distributed File System ) er et filsystem designet til at gemme store filer fordelt blok for blok mellem noderne i en computerklynge. Alle blokke i HDFS (undtagen den sidste blok i en fil) har samme størrelse, og hver blok kan placeres på flere noder, blokstørrelsen og replikeringsfaktoren (antal noder, som hver blok skal placeres på) er defineret i indstillingerne på filniveau. Takket være replikering sikres stabiliteten af et distribueret system mod fejl i individuelle noder. Filer kan kun skrives til HDFS én gang (modifikation er ikke understøttet), og kun én proces kan skrive til en fil ad gangen. Organiseringen af filer i navneområdet er traditionelt hierarkisk : der er en rodmappe, indlejring af mapper er understøttet, og filer og andre mapper kan være placeret i samme mappe.
Udrulning af en HDFS-instans giver mulighed for en central navneknude ( eng. name node ) , der lagrer filsystemmetadata og metainformation om distributionen af blokke, og en række dataknudepunkter ( eng . data node ), der direkte lagrer filblokke. Navnenoden er ansvarlig for behandling af fil- og biblioteksniveauoperationer - åbning og lukning af filer, manipulering af mapper, dataknudepunkter behandler direkte dataskrivning og -læsning. Navnknuden og dataknuderne er forsynet med webservere , der viser nodernes aktuelle status og giver dig mulighed for at se indholdet af filsystemet. Administrative funktioner er tilgængelige fra kommandolinjegrænsefladen.
HDFS er en integreret del af projektet, dog understøtter Hadoop arbejde med andre distribuerede filsystemer uden brug af HDFS, understøttelse af Amazon S3 og CloudStore er implementeret i hoveddistributionen. På den anden side kan HDFS ikke kun bruges til at køre MapReduce-job, men også som et distribueret filsystem til generelle formål, især en distribueret NoSQL DBMS HBase er implementeret oven på det, og Apache Mahout skalerbar maskinlæringssystem kører i sit miljø .
YARN ( engelsk Yet Another Resource Negotiator - " another resource intermediary ") er et modul, der dukkede op med version 2.0 (2013), som er ansvarlig for styring af klyngresourcer og planlægning af opgaver. Hvis denne funktion i tidligere udgivelser var integreret i MapReduce- modulet , hvor den blev implementeret af en enkelt komponent ( JobTracker ), så er der i YARN en logisk uafhængig dæmon - ressourceplanlæggeren ( ResourceManager ), som abstraherer alle computerressourcerne i klynge og administrerer deres levering til distribuerede behandlingsapplikationer. Både MapReduce-programmer og andre distribuerede applikationer, der understøtter de relevante programmeringsgrænseflader, kan arbejde under kontrol af YARN; YARN giver mulighed for parallel udførelse af flere forskellige opgaver inden for klyngen og deres isolering (i henhold til principperne for multitenancy ). En distribueret applikationsudvikler skal implementere en speciel applikationsstyringsklasse ( ApplicationMaster ), der er ansvarlig for at koordinere opgaver inden for de ressourcer, der leveres af ressourceplanlæggeren; ressourceplanlæggeren er ansvarlig for at oprette forekomster af applikationskontrolklassen og interagere med den gennem den relevante netværksprotokol.
YARN kan betragtes som et klyngeoperativsystem i den forstand, at det fungerer som en grænseflade mellem klyngens hardwareressourcer og en bred klasse af applikationer, der bruger sin magt til at udføre beregningsmæssig behandling [13] .
Hadoop MapReduce er en softwareramme til programmering af distribueret databehandling inden for MapReduce -paradigmet . En applikationsudvikler til Hadoop MapReduce skal implementere en basishandler, der på hver computerknude i klyngen vil sikre transformationen af de indledende nøgleværdi- par til et mellemliggende sæt nøgleværdi-par (klassen, der implementerer grænsefladen Mapperer opkaldt efter den højere ordens funktion Map ), og handleren , som reducerer det mellemliggende sæt af par til det endelige, reducerede sæt ( fold , klasse der implementerer grænsefladen Reducer). Rammen overfører de sorterede output fra basisbehandlerne til input af foldningen, reduktionen består af tre faser - shuffle ( shuffle , valg af den ønskede sektion af output), sortering ( sortering , gruppering efter nøgler af output fra distributører - ekstra sortering, som er påkrævet, når forskellige atomprocessorer returnerer sæt med de samme nøgler, på samme tid kan sorteringsreglerne i denne fase indstilles programmatisk og bruge alle funktioner i nøglernes interne struktur) og reducere sig selv ( listefoldning ) - opnåelse af resultatsættet. For nogle typer behandling er foldningen ikke nødvendig, og rammen returnerer i dette tilfælde et sæt af sorterede par modtaget af basisprocessorerne.
Hadoop MapReduce giver dig mulighed for at oprette job med både basishandlere og folder skrevet uden brug af Java: Hadoop-streamingværktøjer giver dig mulighed for at bruge enhver eksekverbar fil , der fungerer med standard operativsystem I/O (f.eks. UNIX shell -værktøjer) som basishandlere og foldninger ), er der også en SWIG - kompatibel C++ Hadoop pipes API . Hadoop-distributioner inkluderer også implementeringer af forskellige specifikke basisprocessorer og rollups, der oftest bruges i distribueret behandling.
I de første versioner af Hadoop MapReduce inkluderede en jobplanlægger ( JobTracker ), siden version 2.0 er denne funktion blevet flyttet til YARN , og siden denne version er Hadoop MapReduce-modulet implementeret oven på YARN. Programmeringsgrænseflader er for det meste bevaret, men der er ingen fuldstændig bagudkompatibilitet (det vil sige at køre programmer skrevet til tidligere versioner af API'en , for at kunne arbejde i YARN, generelt er deres modifikation eller refaktorering påkrævet , og kun med nogle begrænsninger er bagud binære kompatibilitetsmuligheder mulige [14] ).
Et af hovedmålene med Hadoop var oprindeligt at give horisontal klyngeskalerbarhed ved at tilføje billige noder (udstyr i masseklasse, engelsk råvarehardware ) uden at ty til kraftfulde servere og dyre lagernetværk . Fungerende klynger af tusindvis af noder i størrelse bekræfter gennemførligheden og omkostningseffektiviteten af sådanne systemer, for eksempel fra 2011 er store Hadoop-klynger kendt i Yahoo (mere end 4 tusinde noder med en samlet lagerkapacitet på 15 PB), Facebook (ca. 2 tusind noder pr. 21 PB) og Ebay (700 noder pr. 16 PB) [15] . Det menes dog, at horisontal skalerbarhed i Hadoop-systemer er begrænset, for Hadoop før version 2.0 blev det maksimalt mulige estimeret til 4 tusinde noder ved brug af 10 MapReduce-job pr. node [16] . På mange måder blev denne begrænsning lettet af koncentrationen i MapReduce-modulet af funktioner til overvågning af jobs livscyklus, menes det, at med dets fjernelse til YARN-modulet i Hadoop 2.0 og decentralisering - fordelingen af en del af overvågningsfunktionerne til behandlingsknuder - horisontal skalerbarhed er øget.
En anden begrænsning ved Hadoop-systemer er størrelsen af RAM på navneknuden ( NameNode ), som gemmer hele klyngens navneområde til behandling af distribution, desuden er det samlede antal filer, som navneknuden er i stand til at behandle, 100 millioner [17] . For at overvinde denne begrænsning arbejdes der på at fordele navneknuden, som er almindelig i den nuværende arkitektur for hele klyngen, i flere uafhængige noder. En anden mulighed for at overvinde denne begrænsning er at bruge distribueret DBMS oven på HDFS, såsom HBase , hvor rollen som filer og mapper spilles af poster i en stor databasetabel fra applikationens synspunkt.
Fra 2011 blev en typisk klynge bygget fra single-socket multi-core x86-64 noder, der kører Linux med 3-12 disklagerenheder forbundet med et 1 Gb/s netværk. Der er tendenser både til at reducere nodernes computerkraft og bruge laveffektprocessorer ( ARM , Intel Atom ) [18] og brugen af højtydende computerknudepunkter samtidig med netværksløsninger med høj båndbredde ( InfiniBand i Oracle Big Data Apparat , højtydende 10 Gb/s Fibre Channel og Ethernet SAN i FlexPod big data skabelonkonfigurationer).
Skalerbarheden af Hadoop-systemer afhænger i høj grad af karakteristikaene ved de data, der behandles, først og fremmest deres interne struktur og funktioner til at udtrække den nødvendige information fra dem, og kompleksiteten af behandlingsopgaven, som igen dikterer organiseringen af behandlingscyklusser, beregningsintensiteten af atomare operationer og i sidste ende niveauet af parallelitet og klyngebelastning. Hadoop-manualen (første versioner, før 2.0) indikerede, at et acceptabelt niveau af parallelitet er brugen af 10-100 forekomster af grundlæggende processorer pr. klynge node, og for opgaver, der ikke kræver væsentlig CPU-tid - op til 300; for foldninger blev det anset for at være optimalt at bruge dem med antallet af noder ganget med en koefficient fra området fra 0,95 til 1,75 og en konstant mapred.tasktracker.reduce.tasks.maximum. Med en større koefficientværdi vil de hurtigste knudepunkter, efter at have afsluttet den første runde af konvergens, modtage den anden del af mellemliggende par til behandling tidligere, hvilket øger koefficienten overbelaster klyngen, men giver samtidig mere effektiv belastningsbalancering . YARN bruger i stedet konfigurationskonstanter, der bestemmer værdierne af tilgængelig RAM og virtuelle processorkerner, der er tilgængelige for ressourceplanlæggeren [19] , baseret på hvilket niveauet af parallelitet bestemmes.
På baggrund af populariseringen af Hadoop i 2008 og rapporter om opbygning af Hadoop-klynger i Yahoo og Facebook, blev Cloudera oprettet i oktober 2008, ledet af Michael Olson, den tidligere administrerende direktør for Sleepycat (virksomheden, der skabte Berkeley DB ), der udelukkende havde til formål at kommercialiseringen af Hadoop-teknologier. I september 2009 flyttede den vigtigste Hadoop-udvikler Doug Cutting til Cloudera fra Yahoo, og takket være denne overgang beskrev kommentatorer Cloudera som "den nye fanebærer af Hadoop", på trods af at hovedparten af projektet stadig blev skabt af medarbejdere i Facebook og Yahoo [20] . MapR blev grundlagt i 2009 med det mål at skabe en højtydende version af Hadoop-distributionen og levere den som proprietær software. I april 2009 lancerede Amazon Elastic MapReduce, en skytjeneste , der giver abonnenter mulighed for at oprette Hadoop-klynger og køre job på dem på et tidsbaseret grundlag. Senere, som et alternativ, fik Amazon Elastic MapReduce-abonnenter valget mellem den klassiske distribution fra Apache og distributioner fra MapR.
I 2011 udsprang Yahoo den division, der udviklede og brugte Hadoop til et uafhængigt firma - Hortonworks , snart lykkedes det det nye firma at indgå en aftale med Microsoft om i fællesskab at udvikle Hadoop-distributionen til Windows Azure og Windows Server [21] . I samme år, med fremkomsten af Hadoop som en af kerneteknologierne inden for big data, inkluderede stort set alle større teknologisoftwareleverandører til organisationer Hadoop-teknologier i en eller anden form i deres strategier og produktlinjer. Så, Oracle frigav Big Data-apparatet hardware-softwarekomplekset (formonteret i et telekommunikationsskab og prækonfigureret Hadoop-klynge med et distributionssæt fra Cloudera) [22] , IBM skabte BigInsights-produktet baseret på Apache-distributionssættet [ 23] , licenserede EMC fra MapR deres højtydende Hadoop til integration i produkter fra det nyligt erhvervede Greenplum [24] (denne forretningsenhed blev senere udskilt til et selvstændigt firma Pivotal , og det flyttede til en fuldstændig uafhængig Hadoop-distribution baseret på Apache-kode [25] ), indgik Teradata en aftale med Hortonworks om at integrere Hadoop i Aster Big Analytics-apparatet [26] . I 2013 skabte Intel sin egen distribution af Hadoop [27] , et år senere opgav det sin udvikling til fordel for løsninger fra Cloudera, hvori det erhvervede en 18% ejerandel [28] .
Volumenet af software- og servicemarkedet omkring Hadoop-økosystemet for 2012 er anslået til $ 540 millioner med en vækstprognose til $1,6 milliarder i 2017, markedslederne er de californiske startups Cloudera, MapR og Hortonworks [29] . Ud over dem er Hadapt (overtaget i juli 2014 af Teradata [30] ), Datameer , Karmasphere og Platfora også kendt for at bygge hele deres forretning på at skabe produkter for at give Hadoop-systemer analytiske muligheder [31] .
Apache Software Foundation | |||||||
---|---|---|---|---|---|---|---|
Projekter på topniveau |
| ||||||
Delprojekter |
| ||||||
Apache Web |
| ||||||
Andre projekter | |||||||
Udvikling af projekter ( inkubator ) |
| ||||||
Nedlagte projekter ( loftsrum ) | |||||||
|