Zookeeper on Hadoopin alaprojekti, ja vaikka se on johdettu hadoopista, olen huomannut, että zookeeper käyttää yhä enemmän hajautettuja kehyksiä hadoopin ulkopuolella. Tänään haluan puhua zookeeperista, tässä artikkelissa ei käsitellä sitä, miten zookeeperia käytetään, vaan mitkä ovat eläintarhanhoitajan käytännön sovellukset, millaiset sovellukset voivat hyödyntää zookeeperin etuja, ja lopuksi siitä, millainen rooli zookeeperilla voi olla hajautetussa verkkosivuston arkkitehtuurissa. Zookeeper on erittäin luotettava koordinointijärjestelmä suurille hajautetuille järjestelmille. Tästä määritelmästä tiedämme, että eläintarhanhoitaja on koordinoitu järjestelmä, joka toimii hajautetuissa järjestelmissä. Miksi hajautetuissa järjestelmissä tarvitaan koordinointijärjestelmä? Syyt ovat seuraavat:
Hajautetun järjestelmän kehittäminen on hyvin vaikeaa, ja vaikeus näkyy pääasiassa hajautetun järjestelmän "osittaisessa epäonnistumisessa". "Osittainen vika" tarkoittaa tiedon siirtoa verkon kahden solmun välillä; jos verkko epäonnistuu, lähettäjä ei voi tietää, onko vastaanottaja vastaanottanut viestin, ja tämän vian syy on monimutkainen, vastaanottaja on saattanut vastaanottaa viestin ennen verkkovirhettä, tai vastaanottajan prosessi on kuollut. Ainoa tapa, jolla lähettäjä saa todellisen kuvan, on yhdistää vastaanottimeen uudelleen ja kysyä vastaanottajalta, miksi virhe tapahtui, mikä on hajautetun järjestelmän kehityksen "osittainen vika"-ongelma.
Zookeeper on kehys hajautettujen järjestelmien "osittaisen vikaantumisen" ratkaisemiseksi. Zookeeper ei salli hajautettujen järjestelmien välttää "osittaisia vikaantumisongelmia", mutta mahdollistaa hajautettujen järjestelmien käsitellä tällaiset ongelmat oikein osittaisten vikojen kohdatessa, jotta hajautetut järjestelmät voivat toimia normaalisti.
Puhutaanpa eläintarhanhoitajan käytännön käytöstä:
Skenaario 1: On olemassa palvelimien ryhmä, joka tarjoaa tietyn palvelun asiakkaalle (esimerkiksi aiemmin tekemäni hajautetun verkkosivuston palvelinpuoli on klusteri, joka koostuu neljästä palvelimesta tarjoamaan palveluita etupääklusterille), ja toivomme, että asiakas löytää palvelimen palvelinklusterista aina, kun asiakas sitä pyytää, jotta palvelin voi tarjota asiakkaalle asiakkaan tarvitsemat palvelut. Tässä tilanteessa meidän täytyy olla lista palvelimista ohjelmassamme, josta luemme palvelinlistan aina, kun asiakas sitä pyytää. Tällöin tätä alilistaa ei tietenkään voi tallentaa yhdelle solmupalvelimelle, muuten solmu katkeaa ja koko klusteri hajoaa, ja toivomme, että tämä lista on tuolloin hyvin saatavilla. Jos tallennuslistan palvelin on rikki, muut palvelimet voivat välittömästi korvata rikkinäisen palvelimen, ja rikkinäinen palvelin voidaan poistaa listalta, jolloin epäonnistunut palvelin voi vetäytyä koko klusterin toiminnasta, eikä kaikkia näitä operaatioita operoi epäonnistunut palvelin, vaan normaali palvelin klusterissa. Tämä on aktiivinen hajautettu tietorakenne, joka voi aktiivisesti muuttaa tietokohteiden tilaa, kun ulkoiset olosuhteet muuttuvat. Zookeeper-kehys tarjoaa tämän palvelun. Tämän palvelun nimi on: Unified Naming Service, joka muistuttaa hyvin paljon javaEE:n JNDI-palvelua.
Skenaario 2: Hajautettu lukkopalvelu. Kun hajautettu järjestelmä käsittelee dataa, kuten lukee dataa, analysoi dataa ja lopulta muokkaa dataa. Hajautetussa järjestelmässä nämä operaatiot voidaan hajauttaa eri solmuihin klusterissa, jolloin datan operointiprosessissa on johdonmukaisuusongelma; jos se on epäjohdonmukainen, saamme väärän operaation tuloksen; yksittäisessä prosessiohjelmassa johdonmukaisuusongelma on helppo ratkaista, mutta hajautettuun järjestelmään pääsy on vaikeampaa, koska eri palvelimien toiminnot hajautetussa järjestelmässä ovat itsenäisissä prosesseissa, ja välitulokset ja prosessit on siirrettävä verkon kautta. Silloin datan toiminnan johdonmukaisuuden saavuttaminen on paljon vaikeampaa. Zookeeper tarjoaa lukituspalvelun, joka ratkaisee tämän ongelman, mahdollistaen datatoimintojen johdonmukaisuuden varmistamisen hajautetuissa dataoperaatioissa.
Skenaario 3: Konfiguraation hallinta. Hajautetussa järjestelmässä otamme palvelusovelluksen käyttöön n palvelimelle erikseen, ja näiden palvelimien konfiguraatiotiedostot ovat samat (esimerkiksi suunnittelemassani hajautetussa verkkosivuston kehyksessä palvelinpuolella on 4 palvelinta, neljän palvelimen ohjelmat ovat samat ja konfiguraatiotiedostot ovat samat), jos konfiguraatiotiedostojen asetukset muuttuvat, meidän täytyy muuttaa nämä konfiguraatiotiedostot yksi kerrallaan, jos täytyy vaihtaa, palvelimet ovat suhteellisen pieniä, nämä toiminnot eivät ole liian hankalia, Jos meillä on suuri määrä hajautettuja palvelimia, kuten suuren internet-yrityksen Hadoop-klusteri, jossa on tuhansia palvelimia, konfiguraatiovaihtoehtojen muuttaminen voi olla hankalaa ja vaarallista. Tällä hetkellä zookeeper voi olla hyödyllinen, voimme käyttää zookeeperia erittäin käytettävissä olevana konfiguraatiomuistina, luovuttaa sen zookeeperille hallintaa varten, kopioimme klusterin konfiguraatiotiedoston zookeeperin tiedostojärjestelmän solmuun ja käytämme zookeeperia seuraamaan konfiguraatiotiedoston tilaa kaikissa hajautetuissa järjestelmissä, kun havaitaan, että konfiguraatiotiedosto on muuttunut, Jokainen palvelin saa Zookeeperilta ilmoituksen konfiguraatiotiedostojen synkronoinnista Zookeeperissa, ja Zookeeper-palvelu varmistaa myös, että synkronointitoiminto on atominen, jotta jokaisen palvelimen konfiguraatiotiedosto päivittyy oikein.
Skenaario 4: Tarjoa vikakorjaustoiminnot hajautetuille järjestelmille. Klusterin hallinta on vaikeaa, ja eläintarhanhoitajapalvelun lisääminen hajautettuun järjestelmään helpottaa klusterin hallintaa. Klusterin hallinnan ongelmallisin asia on solmujen vikojen hallinta; zookeeper voi antaa klusterin valita terveen solmun masteriksi, pääsolmu tietää kunkin palvelimen nykyisen kunnon klusterissa, ja kun solmu vikaantuu, master ilmoittaa muille klusterin palvelimille, jotta eri solmujen laskentatehtävät voidaan jakaa uudelleen. Zookeeper voi paitsi löytää viat, myös seuloa viallisen palvelimen, selvittää, millainen vika palvelimessa on; jos vika voidaan korjata, zookeeper voi automaattisesti korjata tai kertoa järjestelmänvalvojalle virheen syyn, jotta ylläpitäjä voi nopeasti paikantaa ongelman ja korjata solmun vian. Sinulla saattaa silti olla kysymys, mitä minun pitäisi tehdä, jos master-laite on viallinen? Zookeeper ottaa tämän myös huomioon: Zookeeperilla on sisäinen "algoritmi johtajien valintaan", mestarit voidaan valita dynaamisesti, ja kun mestari epäonnistuu, eläintarhanhoitaja voi välittömästi valita uuden mestarin hallitsemaan klusteria.
Puhutaanpa eläintarhanhoitajan ominaisuuksista:
ZooKeeper on virtaviivaistettu tiedostojärjestelmä. Tämä muistuttaa hieman Hadoopia, mutta ZooKeeper-tiedostojärjestelmä hallinnoi pieniä tiedostoja, kun taas Hadoop hallitsee hyvin suuria tiedostoja.
Zookeeper tarjoaa runsaasti "artefakteja", jotka mahdollistavat monien operaatioiden koordinoida tietorakenteita ja protokollia. Esimerkiksi: hajautetut jonot, hajautetut lukot ja "johtajan valinta"-algoritmi samalla tasolla olevien solmujen ryhmälle.
ZooKeeper on erittäin saatavilla, sen oma vakaus on varsin hyvä, hajautetut klusterit voivat luottaa Zookeeper-klustereiden hallintaan, ja ZooKeeperia käytetään välttämään hajautettujen järjestelmien yksittäisen pisteen vikaantuminen.
Zookeeper ottaa käyttöön löyhästi kytketyn vuorovaikutustilan. Tämä näkyy selkeimmin siinä, että zookeeper tarjoaa hajautettuja lukkoja, joita voidaan käyttää ajanvarausmekanismina, jotta osallistuvat prosessit voivat löytää ja olla vuorovaikutuksessa keskenään tietämättä muita prosesseja (tai verkkoa), eikä osallistuvien osapuolten tarvitse edes olla olemassa samaan aikaan, kunhan he jättävät viestin zookeeperiin, ja prosessin päätyttyä toinen prosessi voi lukea viestin, jolloin solmujen välinen suhde katkeaa.
ZooKeeper tarjoaa klusterille yhteisen tietovaraston, josta klusteri voi lukea ja kirjoittaa jaettua tietoa keskitetysti, välttäen yhteisten operaatioiden ohjelmoinnin jokaiselle solmulle ja vähentäen hajautettujen järjestelmien kehityksen vaikeutta.
Zookeeper vastaa pääasiassa kaikkien välittämien tietojen tallentamisesta ja hallinnasta sekä tarkkailijoiden rekisteröinnin hyväksymisestä. Kun tietojen tila muuttuu, Zookeeper vastaa niiden tarkkailijoiden ilmoittamisesta, jotka ovat rekisteröityneet Zookeeperiin, jotta saavutetaan master/slave-hallintatila, joka muistuttaa klusteria.
On havaittavissa, että eläintarhanhoitaja on erittäin suotuisa hajautetulle järjestelmäkehitykselle, mikä voi tehdä hajautetuista järjestelmistä kestävämpiä ja tehokkaampia.
Ei kauan sitten osallistuin osaston hadoop-ryhmään, ja asensin hadoopin, mapreducen, Hiven ja Hbasen testiympäristöön, ja asensin zookeeperin etukäteen hbasea asentaessani. Zookeeper voi tarjota palveluita, joten yli puolet kolmesta on 2 ja yli puolet neljästä on myös kaksi, joten kolmen palvelimen asentaminen voi saavuttaa neljän palvelimen vaikutuksen. Hadoopin oppimisprosessissa koen, että zookeeper on vaikein osa-projekti ymmärtää, syynä ei ole tekninen vastuu, vaan se, että sen soveltamissuunta on minulle hyvin hämmentävä, joten ensimmäinen artikkelini hadoop-teknologiasta alkaa zookeeperista, eikä käsittele erityistä teknistä toteutusta, mutta zookeeperin sovellusskenaarioista ymmärrän eläintarhanhoitajan soveltamisen alan, uskon että eläintarhanhoitajan oppiminen on tehokkaampaa puolet ponnistelusta.
Haluan puhua eläintarhanhoitajasta tänään täydentääkseni edellisen artikkelini hajautettua verkkosivuston kehystä. Vaikka suunnittelin verkkosivuston arkkitehtuurin hajautetuksi rakenteeksi, tein myös yksinkertaisen vikakäsittelymekanismin, kuten sydämenlyöntimekanismin, mutta klusterin yksittäistä vikaantumispistettä ei vieläkään voi ratkaista; jos palvelin on rikki, asiakas yrittää yhdistyä tähän palvelimeen, mikä johtaa joidenkin pyyntöjen estoon ja palvelinresurssien tuhlaamiseen. En kuitenkaan halua muuttaa kehystäni tällä hetkellä, koska koen aina, että eläintarhanhoitajapalvelun lisääminen olemassa oleviin palveluihin vaikuttaa verkkosivuston tehokkuuteen. Onneksi osastollamme on myös tällainen ongelma – osastomme kehittää tehokkaan etäpuhelukehyksen, erottaa klusterin hallinnan ja viestinnän hallinnan sekä tarjoaa tehokkaita ja saatavilla olevia palveluita keskitetysti.
Siirretty ttp://www.cnblogs.com/sharpxiajun/archive/2013/06/02/3113923.html |