Apache Storm 2.0 distribuert datasystem tilgjengelig

Så lyset betydelig utgivelse av et distribuert hendelsesbehandlingssystem Apache Storm 2.0, kjent for overgangen til en ny arkitektur implementert i Java, i stedet for det tidligere brukte Clojure-språket.

Prosjektet lar deg organisere garantert behandling av ulike hendelser i sanntid. For eksempel kan Storm brukes til å analysere datastrømmer i sanntid, kjøre maskinlæringsoppgaver, organisere kontinuerlig databehandling, implementere RPC, ETL, etc. Systemet støtter clustering, opprettelse av feiltolerante konfigurasjoner, garantert databehandlingsmodus og har høy ytelse, tilstrekkelig til å behandle mer enn en million forespørsler per sekund på én klyngennode.

Integrasjon med ulike købehandlingssystemer og databaseteknologier støttes. Storm-arkitekturen innebærer å motta og behandle ustrukturerte, konstant oppdaterte datastrømmer ved bruk av vilkårlige komplekse prosessorer med mulighet til å dele mellom ulike stadier av beregninger. Prosjektet ble overlevert til Apache-fellesskapet etter at Twitter kjøpte opp BackType, selskapet som opprinnelig utviklet rammeverket. I praksis ble Storm brukt i BackType for å analysere refleksjonen av hendelser i mikroblogger, ved å sammenligne nye tweets og lenkene som ble brukt i dem (for eksempel ble det vurdert hvordan eksterne lenker eller kunngjøringer publisert på Twitter ble sendt på nytt av andre deltakere ).

Storms funksjonalitet sammenlignes med Hadoop-plattformen, med den viktigste forskjellen at dataene ikke lagres i et lager, men inntas eksternt og behandles i sanntid. Storm har ikke et innebygd lagringslag, og den analytiske spørringen begynner å bli brukt på innkommende data til den blir kansellert (mens Hadoop bruker endelige MapReduce-jobber, bruker Storm ideen om kontinuerlig å kjøre "topologier"). Utførelsen av behandlere kan fordeles på flere servere - Storm parallelliserer automatisk arbeid med tråder på forskjellige klyngenoder.

Systemet ble opprinnelig skrevet i Clojure og kjører inne i den virtuelle JVM-maskinen. Apache Foundation har lansert et initiativ for å migrere Storm til en ny kjerne skrevet i Java, hvis resultater er foreslått i utgivelsen av Apache Storm 2.0. Alle grunnleggende komponenter i plattformen er skrevet om i Java. Støtte til skrivebehandlere i Clojure er beholdt, men tilbys nå i form av bindinger. Storm 2.0.0 krever Java 8. Den flertrådede prosesseringsmodellen har blitt fullstendig redesignet, slik at oppnå en merkbar økning i ytelse (for noen topologier ble forsinkelsene redusert med 50-80%).

Apache Storm 2.0 distribuert datasystem tilgjengelig

Den nye versjonen tilbyr også en ny type Streams API som lar deg definere behandlere ved å bruke funksjonelle operasjoner i programmeringsstil. Den nye APIen er implementert på toppen av standard base API og støtter automatisk sammenslåing av operasjoner for å optimalisere behandlingen. Windowing API for vindusoperasjoner har lagt til støtte for lagring og gjenoppretting av tilstand i backend.

Støtte for å ta hensyn til ekstra ressurser ved beslutninger ikke begrenset til
CPU og minne, for eksempel nettverks- og GPU-innstillinger. En lang rekke forbedringer er gjort for å sikre integrasjon med plattformen Kafka. Adgangskontrollsystemet er utvidet til å inkludere muligheten til å opprette administratorgrupper og delegere tokens. Lagt til forbedringer relatert til SQL og metrikkstøtte. Nye kommandoer har dukket opp i administratorgrensesnittet for feilsøking av klyngetilstanden.

Bruksområder for Storm:

  • Behandle strømmer av nye data eller databaseoppdateringer i sanntid;
  • Kontinuerlig databehandling: Storm kan kjøre kontinuerlige spørringer og behandle kontinuerlige strømmer, og levere behandlingsresultater til klienten i sanntid.
  • Distribuert Remote Procedure Call (RPC): Storm kan brukes til å gi parallell utførelse av ressurskrevende spørringer. En jobb ("topologi") i Storm er en funksjon fordelt på tvers av noder som venter på at meldinger skal ankomme som må behandles. Etter å ha mottatt en melding, behandler funksjonen den i lokal kontekst og returnerer resultatet. Et eksempel på bruk av distribuert RPC vil være å behandle søk parallelt eller utføre operasjoner på et stort sett med sett.

Storm-funksjoner:

  • En enkel programmeringsmodell som i stor grad forenkler sanntidsdatabehandling;
  • Støtte for alle programmeringsspråk. Moduler er tilgjengelige for Java, Ruby og Python, tilpasning for andre språk er enkel takket være en veldig enkel kommunikasjonsprotokoll som krever omtrent 100 linjer med kode for å støtte;
  • Feiltoleranse: for å kjøre en databehandlingsjobb må du generere en jar-fil med kode. Storm vil uavhengig distribuere denne jar-filen på tvers av klyngenodene, koble til behandlerne knyttet til den og organisere overvåking. Når jobben er fullført, vil koden automatisk deaktiveres på alle noder;
  • Horisontal skalerbarhet. Alle beregninger utføres i parallell modus; når belastningen øker, er det nok å bare koble nye noder til klyngen;
  • Pålitelighet. Storm sørger for at hver innkommende melding blir fullstendig behandlet minst én gang. Meldingen vil bare bli behandlet én gang hvis det ikke er noen feil ved passering gjennom alle behandlere; hvis det oppstår problemer, vil mislykkede behandlingsforsøk bli gjentatt.
  • Hastighet. Storms kode er skrevet med tanke på høy ytelse og bruker systemet for rask asynkron meldingsutveksling ZeroMQ.

Kilde: opennet.ru

Legg til en kommentar