Video: Big Data analysis Hadoop with Mapreduce, HIVE, PIG , Zookeeper and Spark class 9 2024
Zookeeper är ett distribuerat kluster av servrar som gemensamt tillhandahåller tillförlitliga koordinations- och synkroniseringstjänster för grupperade applikationer. Visst kan namnet "Zookeeper" först tyckas vara ett udda val, men när du förstår vad det gör för ett HBase-kluster kan du se logiken bakom den. När du bygger och felsöker distribuerade applikationer "Det är en zoo där ute", så du borde lägga Zookeeper på ditt lag.
HBase-klyftor kan vara enorma och samordna operationerna hos MasterServers, RegionServers och kunder kan vara en skrämmande uppgift, men det är där Zookeeper kommer in i bilden. Som i HBase kör Zookeeper-kluster typiskt på billiga x86-servrar.
Varje enskild x86-server kör en enda Zookeeper-mjukvaruprocess (nedan kallad en Zookeeper-server), med en Zookeeper-server vald av ensemblet som ledare och resten av servrarna är följare. Zookeeper-ensembler styrs av principen om majoritetsquorum.
Konfigurationer med en Zookeeper-server stöds för test- och utvecklingsändamål, men om du vill ha ett tillförlitligt kluster som kan tolerera serverfel måste du distribuera minst tre Zookeeper-servrar för att få ett majoritetsquorum.
Så, hur många Zookeeper-servrar behöver du? Fem är det minsta rekommenderade för produktionsanvändning, men du vill verkligen inte gå med det minsta minimumet. När du bestämmer dig för att planera ditt Zookeeper-ensemble, följ den här enkla formeln: 2F + 1 = N där F är antalet misslyckanden som du kan acceptera i din Zookeeper-grupp och N är det totala antalet Zookeeper-servrar du måste distribuera.
Fem rekommenderas eftersom en server kan stängas av för underhåll, men Zookeeper-klustret kan fortfarande tolerera ett serverfel.
Zookeeper tillhandahåller koordinering och synkronisering med vad det kallar znodes , som presenteras som ett katalogtree och liknar filvägsnamnen du skulle se i ett Unix-filsystem. Znodes gör lagra data men inte mycket att tala om - för närvarande mindre än 1 MB som standard.
Tanken här är att Zookeeper lagrar znodes i minnet och att dessa minnesbaserade znodes ger snabb klientåtkomst för samordning, status och andra viktiga funktioner som krävs av distribuerade applikationer som HBase. Zookeeper replikerar znodes över ensemblet, så om servrar misslyckas är znode-data fortfarande tillgänglig så länge som majoritetsquorum av servrar fortfarande är igång.
En annan viktig Zookeeper-koncept gäller hur znode läser (kontra skriv) hanteras. Enhver Zookeeper-server kan hantera läsningar från en klient, inklusive ledaren, men endast ledarefrågorna atom znode skriver - skriver att helt eller delvis misslyckas.
När en znode-skrivförfrågan anländer till ledarkoden skickar ledaren skrivförfrågan till följarknoderna och väntar sedan på att en majoritet av anhängare kommer att bekräfta znode write complete. Efter bekräftelsen utfärdar ledaren znode-skrivet och rapporterar sedan den framgångsrika slutförandestatusen till klienten.
Znodes ger några mycket kraftfulla garantier. När en Zookeeper-klient (t.ex. en HBase RegionServer) skriver eller läser en znode är operationen atom . Det lyckas helt eller helt och hållet misslyckas - det finns inga partiella läsningar eller skrivningar.
Ingen annan konkurrerande klient kan orsaka att läsnings- eller skrivoperationen misslyckas. Dessutom har en znode en åtkomstkontrolllistor (ACL) som är associerad med den för säkerhet, och den stöder versioner, tidsstämplar och meddelande till kunder när det ändras.
Zookeeper replikerar znodes över ensemblet, så om servrar misslyckas är znode-data fortfarande tillgänglig så länge som majoritetsquorum av servrar fortfarande är igång. Detta innebär att skrivningar till vilken znode som helst från någon Zookeeper-server måste sprida sig över ensemblet. Zookeeper-ledaren hanterar denna operation.
Denna znode write-metod kan leda till att efterföljare faller bakom ledaren under korta perioder. Zookeeper löser detta potentiella problem genom att tillhandahålla ett synkroniseringskommando. Kunder som inte kan tolerera denna tillfälliga brist på synkronisering inom Zookeeper-klustret kan besluta att utfärda ett synkroniseringskommando innan de läser znoder.