Start databehandling med Kafka og Spark

Behandling av big data er en av de mest komplekse prosedyrene som organisasjoner står overfor. Prosessen blir mer komplisert når du har et stort volum sanntidsdata.

I dette innlegget vil vi oppdage hva stordatabehandling er, hvordan det gjøres, og utforske Apache Kafka og Spark – de to av de mest kjente databehandlingsverktøyene!

Hva er databehandling? Hvordan gjøres det?

Databehandling er definert som enhver operasjon eller et sett med operasjoner, enten utført ved hjelp av en automatisert prosess eller ikke. Det kan betraktes som innsamling, bestilling og organisering av informasjon i henhold til en logisk og hensiktsmessig disposisjon for tolkning.

Når en bruker får tilgang til en database og får resultater for søket, er det databehandlingen som gir dem resultatene de trenger. Informasjonen som trekkes ut som et søkeresultat er et resultat av databehandling. Det er derfor informasjonsteknologi har fokus for sin eksistens sentrert på databehandling.

Tradisjonell databehandling ble utført ved hjelp av enkel programvare. Men med fremveksten av Big Data har ting endret seg. Big Data refererer til informasjon hvis volum kan være over hundre terabyte og petabyte.

Dessuten oppdateres denne informasjonen jevnlig. Eksempler inkluderer data som kommer fra kontaktsentre, sosiale medier, børshandelsdata osv. Slike data kalles noen ganger også datastrøm – en konstant, ukontrollert strøm av data. Hovedkarakteristikken er at dataene ikke har noen definerte grenser, så det er umulig å si når strømmen starter eller slutter.

Data behandles når de ankommer destinasjonen. Noen forfattere kaller det sanntids- eller nettbehandling. En annen tilnærming er blokk-, batch- eller offline-behandling, der blokker med data behandles i tidsvinduer på timer eller dager. Ofte er batchen en prosess som kjører om natten, og konsoliderer dagens data. Det er tilfeller av tidsvinduer på en uke eller til og med en måned som genererer utdaterte rapporter.

Gitt at de beste Big Data-behandlingsplattformene via streaming er åpne kilder som Kafka og Spark, tillater disse plattformene bruk av andre forskjellige og komplementære. Dette betyr at de er åpen kildekode, utvikler seg raskere og bruker flere verktøy. På denne måten mottas datastrømmer fra andre steder med variabel hastighet og uten avbrudd.

Nå skal vi se på to av de mest kjente databehandlingsverktøyene og sammenligne dem:

Apache Kafka

Apache Kafka er et meldingssystem som lager strømmeapplikasjoner med en kontinuerlig dataflyt. Opprinnelig opprettet av LinkedIn, Kafka er loggbasert; en logg er en grunnleggende form for lagring fordi hver ny informasjon legges til på slutten av filen.

Kafka er en av de beste løsningene for big data fordi hovedkarakteristikken er den høye gjennomstrømningen. Med Apache Kafka er det til og med mulig å transformere batchbehandling i sanntid,

  Løs problem med strømstyring i Enhetsbehandling

Apache Kafka er et publiser-abonner meldingssystem der en applikasjon publiserer og en applikasjon som abonnerer mottar meldinger. Tiden mellom publisering og mottak av meldingen kan være millisekunder, så en Kafka-løsning har lav ventetid.

Arbeidet til Kafka

Apache Kafkas arkitektur omfatter produsenter, forbrukere og selve klyngen. Produsenten er enhver applikasjon som publiserer meldinger til klyngen. Forbrukeren er enhver applikasjon som mottar meldinger fra Kafka. Kafka-klyngen er et sett med noder som fungerer som en enkelt forekomst av meldingstjenesten.

Arbeidet til Kafka

En Kafka-klynge består av flere meglere. En megler er en Kafka-server som mottar meldinger fra produsenter og skriver dem til disk. Hver megler administrerer en liste over emner, og hvert emne er delt inn i flere partisjoner.

Etter å ha mottatt meldingene sender megleren dem til de registrerte forbrukerne for hvert emne.

Apache Kafka-innstillinger administreres av Apache Zookeeper, som lagrer klyngemetadata som partisjonsplassering, liste over navn, liste over emner og tilgjengelige noder. Dermed opprettholder Zookeeper synkronisering mellom de forskjellige elementene i klyngen.

Zookeeper er viktig fordi Kafka er et distribuert system; det vil si at skrivingen og lesingen gjøres av flere klienter samtidig. Når det er en feil, velger dyrepasseren en erstatter og gjenoppretter operasjonen.

Brukssaker

Kafka ble populær, spesielt for bruken som et meldingsverktøy, men allsidigheten går utover det, og den kan brukes i en rekke scenarier, som i eksemplene nedenfor.

Meldinger

Asynkron kommunikasjonsform som frikobler partene som kommuniserer. I denne modellen sender en part dataene som en melding til Kafka, så en annen applikasjon bruker dem senere.

Aktivitetssporing

Gjør det mulig å lagre og behandle data som sporer en brukers interaksjon med et nettsted, for eksempel sidevisninger, klikk, dataregistrering, etc.; denne typen aktivitet genererer vanligvis et stort datavolum.

Beregninger

Innebærer å samle data og statistikk fra flere kilder for å generere en sentralisert rapport.

Loggaggregering

Aggregerer sentralt og lagrer loggfiler som stammer fra andre systemer.

Strømbehandling

Behandling av datapipelines består av flere stadier, der rådata forbrukes fra emner og aggregeres, berikes eller transformeres til andre emner.

For å støtte disse funksjonene tilbyr plattformen i hovedsak tre APIer:

  • Streams API: Den fungerer som en strømprosessor som forbruker data fra ett emne, transformerer det og skriver det til et annet.
  • Connectors API: Det tillater å koble emner til eksisterende systemer, for eksempel relasjonsdatabaser.
  • Produsent- og forbruker-APIer: Det lar applikasjoner publisere og konsumere Kafka-data.

Fordeler

Replikert, partisjonert og bestilt

Meldinger i Kafka blir replikert på tvers av partisjoner på tvers av klyngenoder i rekkefølgen de kommer for å sikre sikkerhet og leveringshastighet.

Datatransformasjon

Med Apache Kafka er det til og med mulig å transformere batchbehandling i sanntid ved å bruke batch ETL streams API.

Sekvensiell disktilgang

Apache Kafka vedvarer meldingen på disken og ikke i minnet, da den skal være raskere. Faktisk er minnetilgang raskere i de fleste situasjoner, spesielt når man vurderer tilgang til data som er på tilfeldige steder i minnet. Kafka har imidlertid sekvensiell tilgang, og i dette tilfellet er disken mer effektiv.

  Hvordan legge til og omorganisere apper i Apple TV

Apache Spark

Apache Spark er en stor datadatamaskin og et sett med biblioteker for å behandle parallelle data på tvers av klynger. Spark er en videreutvikling av Hadoop og Map-Reduce-programmeringsparadigmet. Det kan være 100 ganger raskere takket være den effektive bruken av minne som ikke gjenstår data på disker under behandling.

Spark er organisert på tre nivåer:

  • Low-Level APIer: Dette nivået inneholder den grunnleggende funksjonaliteten for å kjøre jobber og annen funksjonalitet som kreves av de andre komponentene. Andre viktige funksjoner i dette laget er styring av sikkerhet, nettverk, planlegging og logisk tilgang til filsystemer HDFS, GlusterFS, Amazon S3 og andre.
  • Strukturerte APIer: Strukturert API-nivå omhandler datamanipulering gjennom DataSets eller DataFrames, som kan leses i formater som Hive, Parquet, JSON og andre. Ved å bruke SparkSQL (API som lar oss skrive spørringer i SQL), kan vi manipulere dataene slik vi vil.
  • Høyt nivå: På høyeste nivå har vi Spark-økosystemet med forskjellige biblioteker, inkludert Spark Streaming, Spark MLlib og Spark GraphX. De er ansvarlige for å ta seg av streaming-inntak og de omkringliggende prosessene, for eksempel krasjgjenoppretting, lage og validere klassiske maskinlæringsmodeller og håndtere grafer og algoritmer.

Arbeid av Spark

Arkitekturen til en Spark-applikasjon består av tre hoveddeler:

Driverprogram: Det er ansvarlig for å orkestrere gjennomføringen av databehandling.

Cluster Manager: Det er komponenten som er ansvarlig for å administrere de forskjellige maskinene i en klynge. Kun nødvendig hvis Spark kjører distribuert.

Arbeidernoder: Dette er maskinene som utfører oppgavene til et program. Hvis Spark kjøres lokalt på maskinen din, vil den spille et driverprogram og en Workes-rolle. Denne måten å kjøre Spark på kalles Standalone.

Klyngeoversikt

Gnistkode kan skrives på en rekke forskjellige språk. Spark-konsollen, kalt Spark Shell, er interaktiv for å lære og utforske data.

Den såkalte Spark-applikasjonen består av en eller flere jobber, som muliggjør støtte for storskala databehandling.

Når vi snakker om utførelse, har Spark to moduser:

  • Klient: Driveren kjører direkte på klienten, som ikke går gjennom Resource Manager.
  • Cluster: Driver som kjører på Application Master gjennom Resource Manager (i klyngemodus, hvis klienten kobler fra, vil applikasjonen fortsette å kjøre).

Det er nødvendig å bruke Spark på riktig måte slik at de tilknyttede tjenestene, for eksempel Resource Manager, kan identifisere behovet for hver utførelse, og gi den beste ytelsen. Så det er opp til utvikleren å vite den beste måten å kjøre sine Spark-jobber på, strukturere samtalen som er gjort, og for dette kan du strukturere og konfigurere utførerne Spark slik du vil.

Spark-jobber bruker primært minne, så det er vanlig å justere Spark-konfigurasjonsverdier for arbeidsnodeutførere. Avhengig av Spark-arbeidsbelastningen, er det mulig å fastslå at en viss ikke-standard Spark-konfigurasjon gir mer optimale utførelse. For dette formål kan sammenligningstester mellom de forskjellige tilgjengelige konfigurasjonsalternativene og selve standard Spark-konfigurasjonen utføres.

Bruker Cases

Apache Spark hjelper til med å behandle enorme mengder data, enten det er sanntid eller arkivert, strukturert eller ustrukturert. Følgende er noen av de populære brukstilfellene.

  Bygg din neste app med disse Open Source Low-Code/No-Code-plattformene

Databerikelse

Ofte bruker bedrifter en kombinasjon av historiske kundedata med sanntids atferdsdata. Spark kan bidra til å bygge en kontinuerlig ETL-pipeline for å konvertere ustrukturerte hendelsesdata til strukturerte data.

Trigger hendelsesdeteksjon

Spark Streaming tillater rask gjenkjenning og respons på sjelden eller mistenkelig atferd som kan indikere et potensielt problem eller svindel.

Kompleks sesjonsdataanalyse

Ved å bruke Spark Streaming kan hendelser relatert til brukerens økt, for eksempel deres aktiviteter etter pålogging i applikasjonen, grupperes og analyseres. Denne informasjonen kan også brukes kontinuerlig til å oppdatere maskinlæringsmodeller.

Fordeler

Iterativ behandling

Hvis oppgaven er å behandle data gjentatte ganger, tillater Sparks spenstige distribuerte datasett (RDDs) flere kartoperasjoner i minnet uten å måtte skrive midlertidige resultater til disken.

Grafisk behandling

Sparks beregningsmodell med GraphX ​​API er utmerket for iterative beregninger som er typiske for grafikkbehandling.

Maskinlæring

Spark har MLlib — et innebygd maskinlæringsbibliotek som har ferdige algoritmer som også kjører i minnet.

Kafka mot Spark

Selv om interessen til folk for både Kafka og Spark har vært nesten lik, finnes det noen store forskjeller mellom de to; la oss se.

#1. Databehandling

Kafka er et sanntidsdatastrømnings- og lagringsverktøy som er ansvarlig for å overføre data mellom applikasjoner, men det er ikke nok til å bygge en komplett løsning. Derfor trengs andre verktøy for oppgaver som Kafka ikke gjør, for eksempel Spark. Spark, på den annen side, er en batch-first databehandlingsplattform som henter data fra Kafka-emner og transformerer dem til kombinerte skjemaer.

#2. Minnehåndtering

Spark bruker Robust Distributed Dataset (RDD) for minneadministrasjon. I stedet for å prøve å behandle enorme datasett, fordeler den dem over flere noder i en klynge. Derimot bruker Kafka sekvensiell tilgang som ligner på HDFS og lagrer data i et bufferminne.

#3. ETL-transformasjon

Både Spark og Kafka støtter ETL-transformasjonsprosessen, som kopierer poster fra en database til en annen, vanligvis fra en transaksjonsbasis (OLTP) til en analytisk basis (OLAP). Men i motsetning til Spark, som kommer med en innebygd evne for ETL-prosess, er Kafka avhengig av Streams API for å støtte den.

#4. Datapersistens

Sparks bruk av RRD lar deg lagre dataene på flere steder for senere bruk, mens du i Kafka må definere datasettobjekter i konfigurasjon for å bestå data.

#5. Vanskelighet

Spark er en komplett løsning og lettere å lære på grunn av støtten for ulike programmeringsspråk på høyt nivå. Kafka er avhengig av en rekke forskjellige APIer og tredjepartsmoduler, noe som kan gjøre det vanskelig å jobbe med.

#6. Gjenoppretting

Både Spark og Kafka gir gjenopprettingsalternativer. Spark bruker RRD, som lar den lagre data kontinuerlig, og hvis det er en klyngefeil, kan den gjenopprettes.

Kafka replikerer kontinuerlig data inne i klyngen og replikerer på tvers av meglere, noe som lar deg gå videre til de forskjellige meglerne hvis det oppstår en feil.

Likheter mellom Spark og Kafka

Apache SparkApache KafkaOpenSourceOpenSourceBuild Datastreaming ApplicationBuild Data Streaming Applicationstøtter Stateful ProcessingStøtter Stateful ProcessingStøtter SQLStøtter SQLLikenhet mellom Spark og Kafka

Siste ord

Kafka og Spark er begge åpen kildekode-verktøy skrevet i Scala og Java, som lar deg bygge sanntidsdatastrømmeapplikasjoner. De har flere ting til felles, inkludert stateful prosessering, støtte for SQL og ETL. Kafka og Spark kan også brukes som komplementære verktøy for å løse problemet med kompleksiteten ved å overføre data mellom applikasjoner.