Hadoop är ett Java-baserat ramverk med öppen källkod som används för lagring och bearbetning av stora data. Uppgifterna lagras på billiga servrar som körs som kluster. Dess distribuerade filsystem möjliggör samtidig behandling och feltolerans. Hadoop har utvecklats av Doug Cutting och Michael J. Cafarella och använder programmeringsmodellen MapReduce för snabbare lagring och hämtning av data från noderna. Ramverket förvaltas av Apache Software Foundation och är licensierat under Apache License 2.0.
I flera år har databaser släpat efter på grund av sin begränsade kapacitet och hastighet, samtidigt som applikationsservrarnas processorkraft har ökat mångdubbelt. Men i dag, när många tillämpningar genererar stora data som ska bearbetas, spelar Hadoop en viktig roll för att ge databasvärlden en välbehövlig omställning.
Ladda ner Hadoop och datasjöar nu.
Läs nu
Också ur affärssynpunkt finns det direkta och indirekta fördelar. Genom att använda teknik med öppen källkod på billiga servrar som mestadels finns i molnet (och ibland på plats) uppnår organisationer betydande kostnadsbesparingar.
Förmågan att samla in massiva data, och de insikter som fås genom att bearbeta dessa data, resulterar dessutom i bättre affärsbeslut i den verkliga världen – t.ex. förmågan att fokusera på rätt konsumentsegment, rensa ut eller åtgärda felaktiga processer, optimera verksamheten på golvet, tillhandahålla relevanta sökresultat, utföra prediktiva analyser och så vidare.
- Hur Hadoop förbättrar traditionella databaser
- Kapacitet: Hadoop lagrar stora datamängder.
- Snabbhet: Hadoop lagrar och hämtar data snabbare.
- 5 fördelar med Hadoop för stora data
- Hadoops ekosystem: Kärnkomponenter
- HDFS: upprätthåller det distribuerade filsystemet
- YARN: Yet Another Resource Negotiator
- MapReduce
- Hadoop-ekosystemet: Kompletterande komponenter
- Hive: Hive är ett datalagringssystem som hjälper till att söka efter stora datamängder i HDFS. Innan Hive stod utvecklare inför utmaningen att skapa komplexa MapReduce-jobb för att söka i Hadoop-data. Hive använder HQL (Hive Query Language), som liknar syntaxen för SQL. Eftersom de flesta utvecklare kommer från en SQL-bakgrund är Hive lättare att få med sig.
- Pig: Reduce MapReduce Functions
- Hive Versus Pig
- Flume: Flume är ett verktyg för att ta in stora data som fungerar som en kurirtjänst mellan flera datakällor och HDFS. Det samlar in, aggregerar och skickar stora mängder strömmande data (t.ex. loggfiler, händelser) som genereras av program som webbplatser för sociala medier, IoT-appar och e-handelsportaler till HDFS.
- Sqoop: Data Ingestion for Relational Databases
- Zookeeper: Samordning av distribuerade tillämpningar
- Kafka: Snabbare dataöverföringar
- HBase: Icke-relationell databas
- Utmaningar med Hadoop
- Step lärandekurva
- Olika datamängder kräver olika tillvägagångssätt
- Begränsningar av MapReduce
- Datasäkerhet
- Hadoop vs Apache Spark
- En framtid med många möjligheter
Hur Hadoop förbättrar traditionella databaser
Hadoop löser två viktiga utmaningar med traditionella databaser:
Kapacitet: Hadoop lagrar stora datamängder.
Med hjälp av ett distribuerat filsystem som kallas HDFS (Hadoop Distributed File System) delas data upp i delar och sparas i kluster av vanliga servrar. Eftersom dessa servrar är byggda med enkla hårdvarukonfigurationer är de ekonomiska och lätt skalbara när data växer.
Snabbhet: Hadoop lagrar och hämtar data snabbare.
Hadoop använder den funktionella programmeringsmodellen MapReduce för att utföra parallell behandling av datamängder. Så när en fråga skickas till databasen, i stället för att hantera data sekventiellt, delas uppgifterna upp och körs samtidigt på distribuerade servrar. Slutligen sammanställs resultatet av alla uppgifter och skickas tillbaka till programmet, vilket drastiskt förbättrar bearbetningshastigheten.
5 fördelar med Hadoop för stora data
För stora data och analyser är Hadoop en livräddare. Data som samlas in om människor, processer, objekt, verktyg etc. är användbara först när meningsfulla mönster framträder som i sin tur leder till bättre beslut. Hadoop hjälper till att övervinna utmaningen med storskaliga data:
- Resilience – Data som lagras i en nod replikeras också i andra noder i klustret. Detta säkerställer feltolerans. Om en nod går ner finns det alltid en backup av data tillgänglig i klustret.
- Skalbarhet – Till skillnad från traditionella system som har en begränsning i fråga om datalagring är Hadoop skalbart eftersom det fungerar i en distribuerad miljö. När behovet uppstår kan installationen enkelt utökas med fler servrar som kan lagra upp till flera petabyte data.
- Låg kostnad – Eftersom Hadoop är ett ramverk med öppen källkod, utan att någon licens behöver anskaffas, är kostnaderna betydligt lägre jämfört med relationella databassystem. Användningen av billig hårdvara spelar också in för att hålla lösningen ekonomisk.
- Snabbhet – Hadoops distribuerade filsystem, samtidiga bearbetning och MapReduce-modellen gör det möjligt att köra komplexa frågor på några sekunder.
- Datamångfald – HDFS kan lagra olika dataformat, t.ex. ostrukturerade (t.ex. videoklipp), semistrukturerade (t.ex. XML-filer) och strukturerade. När data lagras är det inte nödvändigt att validera mot ett fördefinierat schema. Uppgifterna kan snarare dumpas i vilket format som helst. När uppgifterna senare hämtas analyseras de och anpassas till ett schema efter behov. Detta ger flexibilitet för att få olika insikter med hjälp av samma data.
Ladda ner O’Reilly Report: Flytta Hadoop till molnet nu.
Läs nu
Hadoops ekosystem: Kärnkomponenter
Hadoop är inte bara ett program, utan snarare en plattform med olika integrerade komponenter som möjliggör distribuerad datalagring och databehandling. Dessa komponenter bildar tillsammans Hadoops ekosystem.
Vissa av dessa är kärnkomponenter som utgör grunden för ramverket, medan andra är tilläggskomponenter som ger tilläggsfunktioner till Hadoop-världen.
Hadoops kärnkomponenter är:
HDFS: upprätthåller det distribuerade filsystemet
HDFS är den pelare i Hadoop som upprätthåller det distribuerade filsystemet. Det gör det möjligt att lagra och replikera data på flera servrar.
HDFS har en NameNode och en DataNode. DataNodes är de råvaruservrar där data faktiskt lagras. NameNode, å andra sidan, innehåller metadata med information om de data som lagras i de olika noderna. Programmet interagerar endast med NameNode, som kommunicerar med datanoderna vid behov.
YARN: Yet Another Resource Negotiator
YARN står för Yet Another Resource Negotiator. Den hanterar och schemalägger resurserna och bestämmer vad som ska hända i varje datanod. Den centrala huvudnoden som hanterar alla behandlingsförfrågningar kallas Resource Manager. Resurshanteraren interagerar med nodhanterare; varje slavdatanod har sin egen nodhanterare för att utföra uppgifter.
MapReduce
MapReduce är en programmeringsmodell som först användes av Google för att indexera sin sökverksamhet. Det är den logik som används för att dela upp data i mindre uppsättningar. Den fungerar utifrån två funktioner – Map() och Reduce() – som analyserar data på ett snabbt och effektivt sätt.
Först grupperar, filtrerar och sorterar Map-funktionen flera datamängder parallellt för att producera tupler (nyckel- och värdepar). Därefter aggregerar Reduce-funktionen data från dessa tupler för att producera det önskade resultatet.
Hadoop-ekosystemet: Kompletterande komponenter
Nedan följer några kompletterande komponenter som används flitigt i Hadoop-ekosystemet.
Hive: Hive är ett datalagringssystem som hjälper till att söka efter stora datamängder i HDFS. Innan Hive stod utvecklare inför utmaningen att skapa komplexa MapReduce-jobb för att söka i Hadoop-data. Hive använder HQL (Hive Query Language), som liknar syntaxen för SQL. Eftersom de flesta utvecklare kommer från en SQL-bakgrund är Hive lättare att få med sig.
Fördelen med Hive är att en JDBC/ODBC-drivrutin fungerar som ett gränssnitt mellan programmet och HDFS. Den exponerar Hadoops filsystem som tabeller, omvandlar HQL till MapReduce-jobb och vice versa. Så samtidigt som utvecklare och databasadministratörer får fördelarna med batchbehandling av stora datamängder kan de använda enkla, välbekanta frågor för att uppnå detta. Hive, som ursprungligen utvecklades av Facebook-teamet, är nu en teknik med öppen källkod.
Pig: Reduce MapReduce Functions
Pig, som ursprungligen utvecklades av Yahoo!, liknar Hive i det avseendet att det eliminerar behovet av att skapa MapReduce-funktioner för att fråga i HDFS. I likhet med HQL är det språk som används – här kallat ”Pig Latin” – närmare SQL. ”Pig Latin” är ett språklager för dataflöden på hög nivå ovanpå MapReduce.
Pig har också en körtidsmiljö som har ett gränssnitt mot HDFS. Skript i språk som Java eller Python kan också bäddas in i Pig.
Hive Versus Pig
Och även om Pig och Hive har liknande funktioner kan den ena vara effektivare än den andra i olika scenarier.
Pig är användbart i dataförberedelsefasen, eftersom det enkelt kan utföra komplexa sammanfogningar och förfrågningar. Det fungerar också bra med olika dataformat, inklusive halvstrukturerade och ostrukturerade. Pig Latin ligger närmare SQL men skiljer sig också tillräckligt mycket från SQL för att ha en inlärningskurva.
Hive fungerar däremot bra med strukturerade data och är därför effektivare vid datalagring. Det används på klustrets serversida.
Forskare och programmerare tenderar att använda Pig på klustrets klientsida, medan business intelligence-användare, t.ex. dataanalytiker, tycker att Hive passar bäst.
Flume är funktionsrikt, det:
- Har en distribuerad arkitektur.
- Säkerställer tillförlitlig dataöverföring.
- är feltolerant.
- har flexibiliteten att samla in data i batcher eller i realtid.
- kan skalas horisontellt för att hantera mer trafik, vid behov.
Datakällor kommunicerar med Flume-agenter – varje agent har en källa, en kanal och en sänka. Källan samlar in data från avsändaren, kanalen lagrar data tillfälligt och slutligen överför sänken data till destinationen, som är en Hadoop-server.
Sqoop: Data Ingestion for Relational Databases
Sqoop (”SQL” för Hadoop) är ett annat verktyg för datainsamling som Flume. Medan Flume arbetar med ostrukturerade eller halvstrukturerade data används Sqoop för att exportera data från och importera data till relationsdatabaser. Eftersom de flesta företagsdata lagras i relationsdatabaser används Sqoop för att importera dessa data till Hadoop så att analytiker kan undersöka dem.
Databasadministratörer och utvecklare kan använda ett enkelt kommandoradsgränssnitt för att exportera och importera data. Sqoop omvandlar dessa kommandon till MapReduce-format och skickar dem till HDFS med hjälp av YARN. Sqoop är också feltolerant och utför samtidiga operationer som Flume.
Zookeeper: Samordning av distribuerade tillämpningar
Zookeeper är en tjänst som samordnar distribuerade tillämpningar. I Hadoop-ramverket fungerar den som ett administrationsverktyg med ett centraliserat register som har information om det kluster av distribuerade servrar som den hanterar. Några av dess nyckelfunktioner är:
- Håller konfigurationsinformation (delat tillstånd för konfigurationsdata)
- Namngivningstjänst (tilldelning av namn till varje server)
- Synkroniseringstjänst (hanterar låsningar, kapplöpningstillstånd och datainkonsistens)
- Ledarval (väljer en ledare bland servrarna genom konsensus)
Klustret av servrar som Zookeeper-tjänsten körs på kallas för en ”ensemble”. Ensemblen väljer en ledare bland gruppen och resten beter sig som följare. Alla skrivoperationer från klienter måste ledas genom ledaren, medan läsoperationer kan gå direkt till vilken server som helst.
Zookeeper ger hög tillförlitlighet och motståndskraft genom felsäker synkronisering, atomicitet och serialisering av meddelanden.
Kafka: Snabbare dataöverföringar
Kafka är ett distribuerat publish-subscribe meddelandesystem som ofta används tillsammans med Hadoop för snabbare dataöverföringar. Ett Kafka-kluster består av en grupp servrar som fungerar som en mellanhand mellan producenter och konsumenter.
I samband med stora data kan ett exempel på en producent vara en sensor som samlar in temperaturdata för att vidarebefordra dem till servern. Konsumenter är Hadoop-servrarna. Producenterna publicerar meddelanden om ett ämne och konsumenterna hämtar meddelanden genom att lyssna på ämnet.
Ett enskilt ämne kan delas upp ytterligare i partitioner. Alla meddelanden med samma nyckel kommer till en viss partition. En konsument kan lyssna på en eller flera partitioner.
Om man grupperar meddelanden under en nyckel och låter en konsument tillgodose specifika partitioner kan många konsumenter lyssna på samma ämne samtidigt. På så sätt parallelliseras ett ämne, vilket ökar systemets genomströmning. Kafka är allmänt antaget för sin snabbhet, skalbarhet och robusta replikering.
HBase: Icke-relationell databas
HBase är en kolumnorienterad, icke-relationell databas som ligger ovanpå HDFS. En av utmaningarna med HDFS är att den endast kan göra batchbehandling. Så för enkla interaktiva frågor måste data fortfarande behandlas i batcher, vilket leder till hög latenstid.
HBase löser denna utmaning genom att tillåta frågor för enskilda rader i stora tabeller med låg latenstid. Detta uppnås genom att internt använda hashtabeller. Den är utformad enligt samma modell som Google BigTable som hjälper till att få tillgång till Googles filsystem (GFS).
HBase är skalbar, har stöd för fel när en nod går ner och är bra för ostrukturerade och halvstrukturerade data. Därför är den idealisk för att fråga ut stora datalagren för analytiska ändamål.
Ladda ner O’Reilly Report: Flytta Hadoop till molnet nu.
Läs nu
Utmaningar med Hadoop
Trots att Hadoop allmänt har setts som en viktig möjliggörare av stora datamängder finns det fortfarande några utmaningar att ta hänsyn till. Dessa utmaningar beror på dess komplexa ekosystem och behovet av avancerade tekniska kunskaper för att utföra Hadoop-funktioner. Med rätt integrationsplattform och verktyg minskas dock komplexiteten avsevärt, vilket också gör det lättare att arbeta med den.
Step lärandekurva
För att fråga ut Hadoops filsystem måste programmerare skriva MapReduce-funktioner i Java. Detta är inte okomplicerat och innebär en brant inlärningskurva. Dessutom finns det alltför många komponenter som utgör ekosystemet, och det tar tid att bekanta sig med dem.
Olika datamängder kräver olika tillvägagångssätt
Det finns ingen ”one size fits all”-lösning i Hadoop. De flesta av de kompletterande komponenter som diskuteras ovan har byggts som svar på en lucka som behövde åtgärdas.
Till exempel ger Hive och Pig ett enklare sätt att fråga efter datamängder. Dessutom hjälper datainsamlingsverktyg som Flume och Sqoop till att samla in data från flera källor. Det finns många andra komponenter också och det krävs erfarenhet för att göra rätt val.
Begränsningar av MapReduce
MapReduce är en utmärkt programmeringsmodell för att batchbehandla stora datamängder. Den har dock sina begränsningar.
Dess filintensiva tillvägagångssätt, med flera läsningar och skrivningar, är inte väl lämpat för interaktiv dataanalys i realtid eller iterativa uppgifter. För sådana operationer är MapReduce inte tillräckligt effektivt och leder till höga latenser. (Det finns lösningar på detta problem. Apache är ett alternativ som fyller MapReduces luckor.)
Datasäkerhet
När stora data flyttas till molnet dumpas känsliga data i Hadoop-servrar, vilket skapar ett behov av att garantera datasäkerheten. Det stora ekosystemet har så många verktyg att det är viktigt att se till att varje verktyg har rätt åtkomsträttigheter till data. Det måste finnas lämplig autentisering, tillhandahållande, datakryptering och frekventa granskningar. Hadoop har förmågan att ta itu med denna utmaning, men det är en fråga om att ha expertisen och vara noggrann i utförandet.
Och även om många teknikjättar har använt sig av de komponenter i Hadoop som diskuteras här, är det fortfarande relativt nytt i branschen. De flesta utmaningar härrör från denna nascence, men en robust plattform för integrering av stora data kan lösa eller underlätta alla dessa.
Hadoop vs Apache Spark
MapReduce-modellen är trots sina många fördelar inte effektiv för interaktiva förfrågningar och databearbetning i realtid, eftersom den förlitar sig på diskskrivningar mellan varje behandlingssteg.
Spark är en databehandlingsmotor som löser denna utmaning genom att använda datalagring i minnet. Även om Spark startade som ett underprojekt till Hadoop har den sin egen klusterteknik.
Ofta används Spark ovanpå HDFS för att utnyttja bara lagringsaspekten av Hadoop. För bearbetningsalgoritmen används egna bibliotek med stöd för SQL-frågor, streaming, maskininlärning och grafer.
Dataforskare använder Spark flitigt på grund av dess blixtsnabba hastighet och eleganta, funktionsrika API:er som gör det enkelt att arbeta med stora datamängder.
Som Spark kan tyckas ha ett försprång framför Hadoop, kan båda fungera tillsammans. Beroende på kraven och typen av datamängder kompletterar Hadoop och Spark varandra. Spark har inget eget filsystem, så det måste förlita sig på HDFS, eller andra liknande lösningar, för sin lagring.
Den verkliga jämförelsen är faktiskt mellan Spark:s behandlingslogik och MapReduce-modellen. När RAM-minnet är begränsat och för jobb som utförs över natten passar MapReduce bra. Men för att strömma data, få tillgång till bibliotek för maskininlärning och för snabba operationer i realtid är Spark det idealiska valet.
En framtid med många möjligheter
På bara ett decennium har Hadoop gjort sig påmind på ett stort sätt i dataindustrin. Detta beror på att det äntligen har gjort möjligheten till dataanalys verklig. Från analys av webbplatsbesök till upptäckt av bedrägerier och bankapplikationer – användningsområdena är många.
Med Talend Open Studio for Big Data är det enkelt att integrera din Hadoop-installation i vilken dataarkitektur som helst. Talend erbjuder fler inbyggda datakopplingar än någon annan datahanteringslösning, vilket gör att du kan bygga sömlösa dataflöden mellan Hadoop och alla större filformat (CSV, XML, Excel etc.), databassystem (Oracle, SQL Server, MySQL etc.), paketerade företagsapplikationer (SAP, SugarCRM etc.) och till och med datatjänster i molnet som Salesforce och Force.com.