Sāciet datu apstrādi ar Kafka un Spark

Lielo datu apstrāde ir viena no sarežģītākajām procedūrām, ar ko saskaras organizācijas. Process kļūst sarežģītāks, ja jums ir liels reāllaika datu apjoms.

Šajā ierakstā mēs atklāsim, kas ir lielo datu apstrāde, kā tā tiek veikta, kā arī izpētīsim Apache Kafka un Spark – divus no slavenākajiem datu apstrādes rīkiem!

Kas ir datu apstrāde? Kā tas tiek darīts?

Datu apstrāde ir definēta kā jebkura darbība vai darbību kopums neatkarīgi no tā, vai tā tiek veikta, izmantojot automatizētu procesu. To var uzskatīt par informācijas vākšanu, sakārtošanu un organizēšanu saskaņā ar loģisku un atbilstošu interpretācijas izvietojumu.

Kad lietotājs piekļūst datu bāzei un iegūst meklēšanas rezultātus, datu apstrāde nodrošina viņam vajadzīgos rezultātus. Informācija, kas iegūta kā meklēšanas rezultāts, ir datu apstrādes rezultāts. Tāpēc informācijas tehnoloģiju pastāvēšanas uzmanības centrā ir datu apstrāde.

Tradicionālā datu apstrāde tika veikta, izmantojot vienkāršu programmatūru. Tomēr līdz ar lielo datu parādīšanos lietas ir mainījušās. Lielie dati attiecas uz informāciju, kuras apjoms var pārsniegt simts terabaitus un petabaitus.

Turklāt šī informācija tiek regulāri atjaunināta. Piemēri ir dati, kas nāk no kontaktu centriem, sociālajiem medijiem, biržas tirdzniecības datiem utt. Šādus datus dažreiz sauc arī par datu straumi — pastāvīgu, nekontrolētu datu plūsmu. Tās galvenā iezīme ir tāda, ka datiem nav definētu ierobežojumu, tāpēc nav iespējams pateikt, kad straume sākas vai beidzas.

Dati tiek apstrādāti, tiklīdz tie nonāk galamērķī. Daži autori to sauc par reāllaika vai tiešsaistes apstrādi. Atšķirīga pieeja ir bloku, pakešu vai bezsaistes apstrāde, kurā datu bloki tiek apstrādāti stundu vai dienu laika logos. Bieži vien partija ir process, kas darbojas naktī, konsolidējot šīs dienas datus. Ir gadījumi, kad nedēļas vai pat mēneša laika logi rada novecojušus pārskatus.

Tā kā labākās lielo datu apstrādes platformas, izmantojot straumēšanu, ir atvērtie pirmavoti, piemēram, Kafka un Spark, šīs platformas ļauj izmantot citas dažādas un papildinošas platformas. Tas nozīmē, ka tie ir atvērtā koda versija, tie attīstās ātrāk un izmanto vairāk rīku. Tādā veidā datu straumes tiek saņemtas no citām vietām ar mainīgu ātrumu un bez pārtraukumiem.

Tagad mēs apskatīsim divus visplašāk zināmos datu apstrādes rīkus un salīdzināsim tos:

Apache Kafka

Apache Kafka ir ziņojumapmaiņas sistēma, kas izveido straumēšanas lietojumprogrammas ar nepārtrauktu datu plūsmu. Sākotnēji izveidoja LinkedIn, Kafka ir balstīta uz žurnāliem; žurnāls ir pamata uzglabāšanas veids, jo katra jauna informācija tiek pievienota faila beigās.

Kafka ir viens no labākajiem risinājumiem lielajiem datiem, jo ​​tā galvenā iezīme ir tā augstā caurlaidspēja. Izmantojot Apache Kafka, ir iespējams pat pārveidot pakešu apstrādi reāllaikā,

  Visaptveroša rokasgrāmata par uzlabotas projektēšanas sistēmu (ADS)

Apache Kafka ir publicēšanas un abonēšanas ziņojumapmaiņas sistēma, kurā lietojumprogramma publicē, bet lietojumprogramma, kas abonē, saņem ziņojumus. Laiks starp ziņojuma publicēšanu un saņemšanu var būt milisekundes, tāpēc Kafka risinājumam ir mazs latentums.

Kafkas darbs

Apache Kafka arhitektūra ietver ražotājus, patērētājus un pašu kopu. Ražotājs ir jebkura lietojumprogramma, kas publicē ziņojumus klasterim. Patērētājs ir jebkura lietojumprogramma, kas saņem ziņojumus no Kafkas. Kafka klasteris ir mezglu kopa, kas darbojas kā viens ziņojumapmaiņas pakalpojuma gadījums.

Kafkas darbs

Kafka klasteris sastāv no vairākiem brokeriem. Brokeris ir Kafka serveris, kas saņem ziņojumus no ražotājiem un ieraksta tos diskā. Katrs brokeris pārvalda tēmu sarakstu, un katra tēma ir sadalīta vairākās sadaļās.

Pēc ziņojumu saņemšanas brokeris tos nosūta reģistrētajiem patērētājiem par katru tēmu.

Apache Kafka iestatījumus pārvalda Apache Zookeeper, kas glabā klastera metadatus, piemēram, nodalījuma atrašanās vietu, nosaukumu sarakstu, tēmu sarakstu un pieejamos mezglus. Tādējādi Zookeeper uztur sinhronizāciju starp dažādiem klastera elementiem.

Zookeeper ir svarīga, jo Kafka ir izplatīta sistēma; tas ir, rakstīšanu un lasīšanu veic vairāki klienti vienlaikus. Ja rodas kļūme, zoodārza pārzinis izvēlas aizstājēju un atjauno darbību.

Lietošanas gadījumi

Kafka kļuva populāra, jo īpaši tādēļ, ka tā tiek izmantota kā ziņojumapmaiņas rīks, taču tās daudzpusība pārsniedz to, un to var izmantot dažādos scenārijos, kā norādīts tālāk minētajos piemēros.

Ziņapmaiņa

Asinhronais saziņas veids, kas atdala saziņas puses. Šajā modelī viena puse nosūta datus kā ziņojumu Kafkai, tāpēc cita lietojumprogramma tos vēlāk patērē.

Darbības izsekošana

Ļauj uzglabāt un apstrādāt datus, kas izseko lietotāja mijiedarbību ar vietni, piemēram, lapu skatījumus, klikšķus, datu ievadi utt.; šāda veida darbība parasti rada lielu datu apjomu.

Metrika

Ietver datu un statistikas apkopošanu no vairākiem avotiem, lai izveidotu centralizētu pārskatu.

Baļķu apkopošana

Centrāli apkopo un saglabā žurnālfailus, kas iegūti no citām sistēmām.

Straumes apstrāde

Datu cauruļvadu apstrāde sastāv no vairākiem posmiem, kuros tiek izmantoti neapstrādāti dati no tēmām un tiek apkopoti, bagātināti vai pārveidoti citās tēmās.

Lai atbalstītu šīs funkcijas, platforma būtībā nodrošina trīs API:

  • Streams API: tas darbojas kā straumes procesors, kas patērē datus no vienas tēmas, pārveido tos un ieraksta citā.
  • Connectors API: tas ļauj savienot tēmas ar esošām sistēmām, piemēram, relāciju datu bāzēm.
  • Ražotāju un patērētāju API: tas ļauj lietojumprogrammām publicēt un patērēt Kafka datus.

Pros

Replicēts, sadalīts un sakārtots

Ziņojumi pakalpojumā Kafka tiek replicēti vairākos klasteru mezglu nodalījumos tādā secībā, kādā tie tiek saņemti, lai nodrošinātu drošību un piegādes ātrumu.

Datu transformācija

Izmantojot Apache Kafka, ir iespējams pat pārveidot pakešu apstrādi reāllaikā, izmantojot pakešu ETL straumju API.

Secīgā diska piekļuve

Apache Kafka saglabā ziņojumu diskā, nevis atmiņā, jo tam vajadzētu būt ātrākam. Faktiski vairumā gadījumu piekļuve atmiņai ir ātrāka, īpaši, ja apsverat piekļuvi datiem, kas atrodas nejaušās atmiņas vietās. Tomēr Kafka nodrošina secīgu piekļuvi, un šajā gadījumā disks ir efektīvāks.

  Kā izdzēst visas Reddit ziņas

Apache Spark

Apache Spark ir liels datu skaitļošanas dzinējs un bibliotēku kopa paralēlu datu apstrādei klasteros. Spark ir Hadoop un Map-Reduce programmēšanas paradigmas evolūcija. Tas var būt 100 reizes ātrāks, pateicoties efektīvai atmiņas izmantošanai, kas apstrādes laikā nesaglabā datus diskā.

Spark ir organizēts trīs līmeņos:

  • Zema līmeņa API: šajā līmenī ir ietverta pamata funkcionalitāte darbu izpildei un citas funkcionalitātes, kas nepieciešamas citiem komponentiem. Citas svarīgas šī slāņa funkcijas ir drošības, tīkla, plānošanas un loģiskās piekļuves pārvaldība failu sistēmām HDFS, GlusterFS, Amazon S3 un citām.
  • Strukturētās API: Strukturētās API līmenī tiek veiktas datu manipulācijas, izmantojot datu kopas vai datu rāmjus, kurus var nolasīt tādos formātos kā Hive, Parquet, JSON un citos. Izmantojot SparkSQL (API, kas ļauj mums rakstīt vaicājumus SQL), mēs varam manipulēt ar datiem, kā mēs vēlamies.
  • Augsts līmenis: visaugstākajā līmenī mums ir Spark ekosistēma ar dažādām bibliotēkām, tostarp Spark Streaming, Spark MLlib un Spark GraphX. Viņi ir atbildīgi par rūpēm par straumēšanas uzņemšanu un apkārtējiem procesiem, piemēram, avāriju atkopšanu, klasisko mašīnmācīšanās modeļu izveidi un apstiprināšanu, kā arī grafiku un algoritmu izmantošanu.

Spark darbība

Spark lietojumprogrammas arhitektūra sastāv no trim galvenajām daļām:

Vadītāja programma: tā ir atbildīga par datu apstrādes izpildes organizēšanu.

Klasteru pārvaldnieks: tas ir komponents, kas atbild par dažādu klastera mašīnu pārvaldību. Nepieciešams tikai tad, ja Spark darbojas izplatīti.

Darbinieku mezgli: tās ir mašīnas, kas veic programmas uzdevumus. Ja Spark jūsu datorā tiek palaists lokāli, tai būs draivera programmas un Workes loma. Šo Spark palaišanas veidu sauc par atsevišķu.

Klasteru pārskats

Spark kodu var rakstīt vairākās dažādās valodās. Spark konsole, ko sauc par Spark Shell, ir interaktīva datu apguvei un izpētei.

Tā sauktā Spark lietojumprogramma sastāv no viena vai vairākiem darbiem, kas ļauj atbalstīt liela mēroga datu apstrādi.

Kad mēs runājam par izpildi, Spark ir divi režīmi:

  • Klients: draiveris darbojas tieši klientā, kas neiet caur resursu pārvaldnieku.
  • Klasteris: draiveris, kas darbojas lietojumprogrammu galvenajā programmā, izmantojot resursu pārvaldnieku (klastera režīmā, ja klients atvienojas, lietojumprogramma turpinās darboties).

Spark ir jāizmanto pareizi, lai saistītie pakalpojumi, piemēram, resursu pārvaldnieks, varētu noteikt katras izpildes nepieciešamību, nodrošinot vislabāko veiktspēju. Tāpēc izstrādātājam ir jāzina labākais veids, kā vadīt savus Spark darbus, strukturējot veikto zvanu, un šim nolūkam jūs varat strukturēt un konfigurēt izpildītājus Spark, kā vēlaties.

Spark darbi galvenokārt izmanto atmiņu, tāpēc ir ierasts pielāgot Spark konfigurācijas vērtības darba mezgla izpildītājiem. Atkarībā no Spark darba slodzes ir iespējams noteikt, ka noteikta nestandarta Spark konfigurācija nodrošina optimālākas izpildes. Šim nolūkam var veikt salīdzināšanas testus starp dažādām pieejamajām konfigurācijas opcijām un pašu Spark noklusējuma konfigurāciju.

Lietošanas gadījumi

Apache Spark palīdz apstrādāt milzīgus datu apjomus neatkarīgi no tā, vai tie ir reāllaika vai arhivēti, strukturēti vai nestrukturēti. Tālāk ir minēti daži no tā populārākajiem lietošanas gadījumiem.

Datu bagātināšana

Bieži uzņēmumi izmanto vēsturisku klientu datu kombināciju ar reāllaika uzvedības datiem. Spark var palīdzēt izveidot nepārtrauktu ETL konveijeru, lai pārvērstu nestrukturētu notikumu datus strukturētos datos.

  Kā izslēgt iPad Pro

Aktivizēt notikumu noteikšana

Spark Streaming ļauj ātri noteikt un reaģēt uz kādu retu vai aizdomīgu darbību, kas varētu norādīt uz iespējamu problēmu vai krāpšanu.

Sarežģīta sesijas datu analīze

Izmantojot Spark Streaming, notikumus, kas saistīti ar lietotāja sesiju, piemēram, viņa darbības pēc pieteikšanās lietojumprogrammā, var grupēt un analizēt. Šo informāciju var arī pastāvīgi izmantot, lai atjauninātu mašīnmācīšanās modeļus.

Pros

Iteratīvā apstrāde

Ja uzdevums ir atkārtoti apstrādāt datus, Spark elastīgās sadalītās datu kopas (RDD) ļauj veikt vairākas atmiņas kartes darbības, neierakstot starprezultātus diskā.

Grafiskā apstrāde

Spark skaitļošanas modelis ar GraphX ​​API ir lieliski piemērots iteratīviem aprēķiniem, kas raksturīgi grafikas apstrādei.

Mašīnmācība

Spark ir MLlib — iebūvēta mašīnmācīšanās bibliotēka, kurai ir gatavi algoritmi, kas darbojas arī atmiņā.

Kafka pret Sparku

Lai gan cilvēku interese par Kafku un Spark ir bijusi gandrīz līdzīga, starp abiem pastāv dažas būtiskas atšķirības; paskatīsimies.

#1. Datu apstrāde

Kafka ir reāllaika datu straumēšanas un uzglabāšanas rīks, kas atbild par datu pārsūtīšanu starp lietojumprogrammām, taču ar to nepietiek, lai izveidotu pilnīgu risinājumu. Tāpēc uzdevumiem, ko Kafka neveic, ir nepieciešami citi rīki, piemēram, Spark. No otras puses, Spark ir pirmā datu apstrādes platforma, kas iegūst datus no Kafka tēmām un pārveido tos kombinētās shēmās.

#2. Atmiņas pārvaldība

Atmiņas pārvaldībai Spark izmanto robustās sadalītās datu kopas (RDD). Tā vietā, lai mēģinātu apstrādāt milzīgas datu kopas, tā sadala tās pa vairākiem mezgliem klasterī. Turpretim Kafka izmanto HDFS līdzīgu secīgu piekļuvi un saglabā datus buferatmiņā.

#3. ETL transformācija

Gan Spark, gan Kafka atbalsta ETL transformācijas procesu, kas kopē ierakstus no vienas datu bāzes uz citu, parasti no transakciju bāzes (OLTP) uz analītisko bāzi (OLAP). Tomēr atšķirībā no Spark, kurā ir iebūvēta ETL procesa iespēja, Kafka paļaujas uz Streams API, lai to atbalstītu.

#4. Datu noturība

Spark RRD izmantošana ļauj saglabāt datus vairākās vietās vēlākai izmantošanai, savukārt Kafkā ir jādefinē datu kopas objekti konfigurācijā, lai saglabātu datus.

#5. Grūtības

Spark ir pilnīgs risinājums un vieglāk apgūstams, pateicoties tā atbalstam dažādām augsta līmeņa programmēšanas valodām. Kafka ir atkarīga no vairākiem dažādiem API un trešo pušu moduļiem, kas var apgrūtināt darbu ar to.

#6. Atveseļošanās

Gan Spark, gan Kafka nodrošina atkopšanas iespējas. Spark izmanto RRD, kas ļauj tai nepārtraukti saglabāt datus, un, ja rodas klastera kļūme, tos var atgūt.

Kafka nepārtraukti replikē datus klasterī un replikē starp brokeriem, kas ļauj pāriet uz dažādiem brokeriem, ja rodas kļūme.

Līdzības starp Spark un Kafka

Apache SparkApache KafkaOpenSourceOpenSourceBuild datu straumēšanas lietojumprogrammaBuild datu straumēšanas lietojumprogramma atbalsta statusu apstrādi Atbalsta statusu apstrādi Atbalsta SQL atbalsta SQL Līdzības starp Spark un Kafka

Nobeiguma vārdi

Kafka un Spark ir Scala un Java atvērtā pirmkoda rīki, kas ļauj izveidot reāllaika datu straumēšanas lietojumprogrammas. Viņiem ir vairākas kopīgas iezīmes, tostarp statusa apstrāde, SQL atbalsts un ETL. Kafka un Spark var izmantot arī kā papildu rīkus, lai palīdzētu atrisināt datu pārsūtīšanas sarežģītības problēmu starp lietojumprogrammām.