Introduktion

Slutförd

I den här modulen tittar vi på meddelandeköer och dataströmbearbetning. Med framväxten av internettjänster och tillgängligheten av kontinuerliga strömmar av realtidsdata är utmaningen att bearbeta dessa dataströmmar i nära realtid.

Dataströmmar ska ses som en oändlig sekvens av små meddelanden som kommer in kontinuerligt utan avbrott. Data är inte i vila och dataströmbearbetningssystem som ansvarar för hanteringen av dessa strömmar ska kunna kontinuerligt konsumera och bearbeta data.

Vi börjar med att titta på huvudidéerna bakom meddelandekösystem. Vi tittar även på de abstraktioner som meddelandekösystem ger, som är fördelaktiga för distribuerad dataströmbearbetning. Apache Kafka är ett exempel på ett distribuerat meddelandekösystem som har blivit mycket populär på sista tiden.

Härnäst tittar vi på system för dataströmbearbeetning och förstår motiven för dessa system för att kunna utföra realtidsbearbetning av dataströmmar. Huvudproblemet i dataströmbearbetning är att hantera tillstånd. Vissa belastningar för dataströmbearbetning är i sin natur tillståndslösa, eftersom de kan utföras på enskilda dataströmmeddelanden och därför kan skalas ut på ett enkelt sätt. Det finns ingen samordning av data eller tillstånd bland processorerna som arbetar parallellt.

Tillståndskänsliga strömbearbetningsarbetsbelastningar kräver hanteringen av tillstånd som uppdateras av meddelandena. Tillståndskänsliga strömprocesser är mer utmanande att hantera och skala ut. Detta gäller särskilt när antalet meddelanden som kommer till en ström ökar eller antalet samtidiga strömmar som behöver bearbetas ökar. Metoder som fönster för dataströmmar möjliggör bearbetning av flera dataströmmeddelanden i batchar.

Slutligen sätter vi ihop allt genom att titta på några arketyper för stordatabearbetning som har diskuterats i branschen under de senaste åren. Förespråkare av Lambda-arkitekturen föreslår en flerskiktad metod med ett batchlager för att uppdatera tillståndet för data med hjälp av ett batchbearbetningssystem med högt dataflöde, hög latens och hög precision. De allra senaste data bearbetas av ett dataströmbearbetningssystem med låg latens som inte har hög precision. Ett alternativ är Kappa-arkitekturen, som inte använder batchbearbetning alls utan förlitar sig på dataströmbearbetningssystem för att producera det nödvändiga resultatet.

Utbildningsmål

I den här modulen kommer du att:

  • Definiera en meddelandekö och påminnas om en grundläggande arkitektur
  • Påminnas om egenskaperna för, och presentera fördelar och nackdelar med, en meddelandekö
  • Förklara den grundläggande arkitekturen för Apache Kafka
  • Diskutera rollerna för ämnen och partitioner samt hur skalbarhet och feltolerans uppnås
  • Diskutera allmänna krav för dataströmbearbetningssystem
  • Påminnas om utvecklingen för dataströmbearbetning
  • Förklara de grundläggande komponenterna i Apache Samza
  • Diskutera hur Samza uppnår tillståndskänslig dataströmbearbetning
  • Diskutera skillnaderna mellan Lambda- och Kappa-arkitekturer
  • Diskutera motivationen för att införa meddelandeköer och bearbetning av dataströmmar i LinkedIn-användningsfallet

Förutsättningar

  • Förstå vad molnbaserad databehandling innebär, däribland begrepp som molntjänstmodeller och de främsta molnleverantörerna
  • Känna till de tekniker som möjliggör molnbaserad databehandling
  • Förstå hur molnleverantörerna betalar för och fakturerar för molnet
  • Veta vad datacenter är och varför de finns
  • Veta hur datacenter konfigureras, drivs och tillhandahålls
  • Förstå hur molnresurser tillhandahålls och mäts
  • Vara bekant med begreppet virtualisering
  • Känna till de olika typerna av virtualisering
  • Förstå CPU-virtualisering
  • Förstå minnesvirtualisering
  • Förstå I/O-virtualisering
  • Känna till de olika typerna av data och hur de lagras
  • Vara bekant med distribuerade filsystem och hur de fungerar
  • Vara bekant med NoSQL-databaser och objektlagring och hur de fungerar
  • Känna till vad distribuerad programmering är och varför det är användbart i molnet
  • Förstå MapReduce och hur det möjliggör stordatabearbetning
  • Förstå Spark och hur det skiljer sig från MapReduce
  • Förstå GraphLab och hur det skiljer sig från MapReduce och Spark