Autori: "Alexander Cai"

Shumica e organizatave mbajnë të dhëna transaksionale me shpejtësi të lartë në bazat e të dhënave të shpejta NoSQL si Apache Cassandra®. Me shkallëzueshmërinë e saj elastike dhe arkitekturën peer-to-peer, Cassandra është shoqëruesi i përsosur i ruajtjes së të dhënave.

Por si të nxirrni njohuri nga këto të dhëna duke përdorur analitikën? Tradicionalisht, për të marrë njohuri nga të dhënat e Cassandra, do të përdorni sisteme analitike të përpunimit masivisht paralel si Apache Spark që funksionojnë në njësitë qendrore të përpunimit (CPU).

Sidoqoftë, ekosistemi i sotëm i analitikës po përqafon shpejt teknikat e inteligjencës artificiale (AI) dhe të mësimit të makinerive (ML) llogaritja e të cilave mbështetet shumë në njësitë e përpunimit të grafikës (GPU). Pra, ku na lë kjo?

Në këtë postim, ne eksplorojmë një qasje më të avancuar për përpunimin e të dhënave të ruajtura në Cassandra duke i analizuar ato drejtpërdrejt në kujtesën e pajisjes GPU duke përdorur tre teknologji kryesore:

  1. "stalla-në-shigjeta"
  2. "RAPIDS"
  3. "Apache Arrow"

Kjo ju ndihmon të arrini njohuri më shpejt me konfigurimin minimal dhe gjithashtu e bën të lehtë migrimin e kodit ekzistues analitik të shkruar në Python. Falë këtyre tre teknologjive, tani mund të analizoni të dhënat tuaja Cassandra shumë më shpejt dhe më thjeshtë në një GPU për rastet e përdorimit të mësimit të makinerive dhe inteligjencës artificiale.

Çfarë është Apache Cassandra?

Cassandra është një bazë të dhënash NoSQL me burim të hapur, e shpërndarë, e bazuar në cloud. Për shkak se mund të trajtojë deri në petabajt ose terabajtë të dhëna kritike për misionin me kohë joproduktive, kompanitë globale si Netflix, Uber dhe Spotify përdorin Cassandra.

Cassandra shpërndan çdo sasi të dhënash dhe i përsërit ato nëpër nyje të shumta, duke e bërë atë jashtëzakonisht të besueshëm dhe tolerant ndaj gabimeve. Nëse po ndërtoni aplikacione të mëdha që kërkojnë vëllime masive të dhënash, të dhënat tuaja do të jenë gjithmonë të disponueshme dhe lehtësisht të aksesueshme në Cassandra.

Cassandra 4.0, i lëshuar së fundmi në 2021, është deri tani lëshimi kryesor më i qëndrueshëm dhe i testuar gjerësisht i Cassandra deri më sot. Falë risive dhe përmirësimeve të ndryshme, Cassandra 4.0 paraqet shkallëzim të përmirësuar të operacioneve, performancë dhe siguri të konsiderueshme dhe kosto të reduktuara.

Edhe pse Cassandra është e njohur për performancën e saj, mund të duhet pak kohë dhe përpjekje për ta vendosur atë fillimisht. DataStax, një nga ekspertët kryesorë të Cassandra, e trajton këtë drejtpërdrejt me DataStax Astra DB — një Cassandra-si-një-shërbim pa server.

Astra DB thjeshton zhvillimin e aplikacionit Cassandra në renë kompjuterike dhe redukton kohën e vendosjes nga javë në minuta. Tani mund të përqendroheni në ndërtimin dhe vendosjen e aplikacioneve vendase të resë kompjuterike pa pasur nevojë të instaloni, operoni dhe shkallëzoni Cassandra. Është gjithashtu plotësisht falas deri në 80 GB memorie dhe 20 milionë operacione në muaj.

Thjesht krijoni një llogari falas në Astra DB ose identifikohuni me llogaritë tuaja GitHub ose Google për të vendosur një bazë të dhënash Cassandra NoSQL në pak minuta.

Duke analizuar të dhënat për Kasandrën

Cassandra është e shkëlqyeshme për pyetje transaksionale që shikojnë një ose më shumë rreshta brenda bazës së të dhënave për t'ju marrë informacionin që ju nevojitet vërtet, shumë shpejt. Por nëse doni të kryeni analitikë, statistika ose mësimin e makinerive, Cassandra nuk është krijuar për këtë.

Ka mjete të jashtme që mund t'i përdorni, si "Apache Spark", nëse po përdorni "DataStax Enterprise", i cili është një kornizë paralele përpunimi për llogaritjen e shpërndarë, për të ndihmuar me analitikën.

Spark shpërndan llogaritjet tuaja nëpër nyje të shumta në mënyrë që të mund të shkallëzoni dhe analizoni të dhënat tuaja në mënyrë efikase. Sidoqoftë, Spark kërkon disa përpjekje për ta konfiguruar dhe do t'ju duhet të migroni kodin ekzistues analitik që nuk është shkruar me Spark.

Përndryshe, ju mund të përdorni panda, NumPy dhe scikit-learn, duke pasur parasysh se Python është standardi de fakto për mësimin e makinerive në ditët e sotme. Por a mund t'i ekzekutoni këto flukse pune ekzistuese analitike duke përdorur bibliotekat e Python në të dhënat e Cassandra?

Një qasje është të merrni të dhënat nga tabela juaj Cassandra duke përdorur një drejtues, dhe më pas të ekzekutoni analitikë mbi ato të dhëna. Por nëse keni një grup të madh të dhënash, kërkimi i të gjithë grupit të të dhënave është i kushtueshëm nga ana llogaritëse. Plus, ekziston rreziku i ngadalësimit të operacioneve tuaja transaksionale kur kërkoni grupin Cassandra, duke çuar në përvoja të këqija të përdoruesit.

A mund të nxjerrim të dhëna nga Cassandra pa ndikuar në grupin tonë Cassandra? Le të zbulojmë.

Nën kapuç: si i ruan të dhënat Cassandra

Cassandra ruan shumicën e të dhënave të saj brenda tabelave të memories kur ju kërkoni bazën e të dhënave. Por pas ruajtjes së skedarit ose të dhënave në disk, nëse dëshironi ta ruani atë për një ruajtje afatgjatë, atëherë Cassandra i ruan të dhënat në formën e Tabelave të vargjeve të ruajtura ose SSTables.

Një SSTable është një format skedari i vazhdueshëm që merr të dhënat në memorie të ruajtura në memtables, i porosit ato për akses të shpejtë dhe i ruan në disk në një grup skedarësh të vazhdueshëm, të renditur dhe të pandryshueshëm.

Cassandra analizon SSTables për të rimarrë të dhënat dhe më pas ju dërgon ato, pavarësisht nëse jeni duke përdorur SQL ose një drejtues Cassandra. Por kjo tendos bazën tuaj të të dhënave Cassandra, e cila nuk është diçka që ne duam.

A është e mundur të merren të dhëna direkt nga tabelat e aksesit pa përdorur Cassandra? Kam kaluar pjesën më të madhe të verës duke punuar për këtë, dhe nuk është aq e lehtë. Këtu janë disa diagrame të pamjes së brendshme të këtyre skedarëve të tabelës:

Pasi lexova dokumentacionin dhe kodin, kuptova se si të analizoja gjithçka. Edhe pse kjo është e vështirë, është e mundur.

Zgjidhja: e qëndrueshme-në-shigjeta

sstable-to-arrow merr të dhëna direkt nga SSTables pa rënduar bazën e të dhënave Cassandra. Qëllimi i figurës së madhe të mjetit është të lejojë pyetje analitike të përshpejtuara nga GPU në Cassandra. Kjo do t'ju mundësonte të bëni më shumë analiza duke përdorur të dhënat dhe të hapni rrugën drejt zhvillimeve të ardhshme. sstable-to-arrow është plotësisht me burim të hapur dhe kodin burim mund ta lexoni këtu.

sstable-to-arrow lexon SSTables direkt pa kaluar nëpër Cassandra dhe i transformon të dhënat në një format Apache Arrow. Me shigjetën sstable, ju mund të kërkoni me lehtësi të dhënat që ju nevojiten dhe të migroni lehtësisht kodin ekzistues të analitikës Python duke përdorur RAPIDS.

Pse duhet të përdorni RAPIDS?

RAPIDS është një grup bibliotekash me burim të hapur për ekzekutimin e analitikës së të dhënave dhe mundëson linjat e shkencës së të dhënave dhe analitikës nga skaji në fund tërësisht në një GPU. Ajo doli nga CUDA, një pajisje programimi/gjuhë e zhvilluar nga Nvidia për të shkruar kodin për GPU-në dhe për të përdorur sa më shumë fuqinë e saj.

RAPIDS merr API-të e zakonshme AL ose ML si kornizat e të dhënave pandas dhe scikit-learndhe i bën ato të disponueshme për përshpejtimin e GPU-së (shih Figurën 2). Një shembull është cuDF — ekuivalenti i pandave në RAPIDS. Ndërsa pandas punon në CPU, cuDF bën shumë nga të njëjtat operacione, por duke përdorur GPU.

RAPIDS mund ta bëjë me të vërtetë shumë të lehtë migrimin e kodit tuaj ekzistues nëse keni një kod që është shkruar tashmë, për shembull, me panda ose scikit-learn, që të dyja kanë ekuivalente në RAPIDS.

GPU për mësimin e makinerive

GPU-të mund të ekzekutojnë proceset e analitikës së të dhënave dhe trajnimin e mësimit të makinerive shumë më shpejt sesa CPU-të aktuale. Shkenca e të dhënave, dhe veçanërisht mësimi i makinerive, kërkon shumë llogaritje paralele.

Ju mund të ekzekutoni më shumë procese me një ritëm më të shpejtë në një GPU pasi ajo ka më shumë bërthama dhe mund të "shumë detyra" me disa rend të madhësisë më të larta se CPU-të aktuale, gjë që është veçanërisht e rëndësishme për mësimin e makinerive ose inteligjencën artificiale.

Për rastet e përdorimit si transformimi i të dhënave dhe grindja e të dhënave veçanërisht, sa më i madh të jetë grupi i të dhënave, aq më shpejt do të jeni në gjendje t'i përpunoni të dhënat në një GPU sicuDF në RAPIDS. Për mësimin e makinerive, bibliotekat GPU si cuMLmund t'ju japin performancë më të lartë dhe rezultate të shpejta me kosto të reduktuara në krahasim me scikit-learn ose SparkML.

RAPIDS përdor shigjetën Apache në formatin e memories për të lëvizur të dhënat në dhe fikur memorien e aksesueshme nga GPU (memoria e pajisjes) pa serializuar dhe deserializuar.

Çfarë është Apache Arrow?

Apache Arrow është një strukturë e të dhënave në memorie e bazuar në kolona që ofron shkëmbim efikas dhe të shpejtë të të dhënave me fleksibilitet për të mbështetur modele komplekse të të dhënave. Ka dy qëllime kryesore të Arrow: analiza e të dhënave dhe zbatimi në memorie në të gjithë gjuhët.

Apache Arrow përcakton një format memorie kolone të pavarur nga gjuha për të dhëna të sheshta dhe hierarkike, të organizuar për operacione analitike efikase në pajisje moderne si CPU dhe GPU.

Ai gjithashtu vjen me një mekanizëm komunikimi ndër-procesor (IPC) i përdorur për të transferuar një grup regjistrimi me shigjeta (p.sh. një tabelë) midis proceseve. Formati IPC është identik me formatin në memorie, duke eliminuar çdo kosto shtesë të kopjimit ose deserializimit duke siguruar qasje jashtëzakonisht të shpejtë të të dhënave.

Komuniteti i shkencës së të dhënave është rritur në dekadën e fundit dhe tani ka mjete të ndryshme për analizën e të dhënave. Meqenëse mjetet e bazuara në CPU kanë mangësi, Arrow përpiqet të adresojë të paktën disa prej tyre. API-të ose aplikacionet që janë ndërtuar në krye të Shigjetës mund të shmangin gjithashtu disa nga pikat e dhimbjes me të cilat përballen përdoruesit, të tilla si llogaritja në memorie ose mbarimi i grupeve të të dhënave.

Nëse dëshironi të përfitoni nga GPU-të për analitikën e të dhënave, mund të filloni me RAPIDS dhe Arrow falas me një kurbë mësimi relativisht të sheshtë. Të njëjtat hapa që do të bëni në një kornizë të dhënash panda mund të bëhen në kornizën e të dhënave cuDF.

Si bashkohen të gjitha?

sstable-to-arrow lexon të dhënat nga SSTables dhe i transformon ato në formatin Arrow në mënyrë që ne t'i përdorim ato në GPU. Pasi të dhënat të transformohen, ekosistemi RAPIDS bën të gjithë punën që ju të merrni të dhënat në GPU.

Në figurën 4, nëse dëshironi të ekzekutoni kodin panda në një GPU, gjithçka që duhet të bëni është të hiqni pandat me cuDF në " import” dhe përdorni pjesën tjetër të API-ve në të njëjtën mënyrë.

Nëse dëshironi ta automatizoni këtë proces, ta ekzekutoni atë në një orkestrim të bazuar në cloud, ose të ekzekutoni në një GPU në cloud, gjithçka që duhet të bëni është të ndryshoni sintaksën pa bërë ndonjë rregullim tjetër logjik. Le të fillojmë me këto mjete!

Praktik: Fillimi me shigjetën e qëndrueshme

Në këtë ushtrim praktik, ju do të përdorni shigjetën e qëndrueshme në të dhënat tuaja Cassandra. Nëse nuk keni Cassandra SSTables aktualisht, mund të përdorni të dhënat e mostrës së bashkuar në magazinë tonë GitHub. Këtu është një përmbledhje e shkurtër se si mund të përdorni sstable-to-arrow:

Për të ekzekutuar shigjetën stable-to-shigjeta, ndiqni këtë tutorial të YouTube. Shkoni te kjo depo GitHub për kodet ose në këtë post në blog për udhëzime.

Përdorimi i shigjetës së qëndrueshme me RAPIDS

Deri tani, ju do të kishit provuar shigjetën e qëndrueshme në makinat tuaja. Por nëse nuk keni një makinë që është e përputhshme me CUDA, ne do t'ju tregojmë një demonstrim të shkurtër se si shigjeta e qëndrueshme mund të ndihmojë në marrjen e të dhënave në GPU duke përdorur RAPIDS.

Ata prej jush që merren me mësimin e makinerive mund të jenë të njohur me grupin e të dhënave të Iris. Ai përmban katër veçori (gjatësia dhe gjerësia e sepaleve dhe petaleve) të tre llojeve të luleve të Irisit në 50 mostra. Këto masa u përdorën për të krijuar një model linear diskriminues për klasifikimin e specieve.

Scikit-learn, një bibliotekë Python për CPU-të që bëjnë mësimin e makinerive, tashmë ka disa shembuj të përdorimit të të dhënave të Iris për klasifikim të thjeshtë. Ne do të përdorim sstable-to-arrow për të treguar se si mund t'i merrni të dhënat nga një tabelë Cassandra dhe t'i ngarkoni ato në GPU duke përdorur RAPIDS. Shihni këtë proces në veprim në këtë "tutorial të YouTube".

Në fund, pikat e të dhënave në grupin e të dhënave Iris do të klasifikohen në lloje të ndryshme - blu, e verdhë dhe kafe, të gjitha në GPU.

Në praktikë, ju do të keni shumë SSTables që korrespondojnë me një tabelë të vetme Cassandra. Fatkeqësisht, sstable-to-arrow nuk e mbështet ende zhdukjen e SSTables, por ju mund ta bëni atë manualisht duke përdorur SQL në anën e klientit. BlazingSQL, një bibliotekë Python që ju lejon të ekzekutoni pyetje SQL duke përdorur GPU, është një mjet i dobishëm për këtë. Ne e demonstrojmë këtë proces në këtë "tutorial të YouTube".

konkluzioni

Për ta përmbledhur, sstable-to-arrow është një mjet analitik i të dhënave që bashkon ekosistemin RAPIDS dhe ekosistemin Cassandra. Me shigjetën e qëndrueshme, mund të analizoni të dhënat tuaja nga Cassandra në një GPU pa vënë një ngarkesë shtesë në grupimet tuaja Cassandra. Për të mësuar më shumë rreth sstable-to-arrow, shikoni këtë "post në blog" dhe këtë "repo GitHub".

Nëse dëshironi të gjeni më shumë mësime mbi Cassandra, shikoni kanalin tonë YouTube dhe Kurset e certifikimit CassandraDataStax Academy. Na etiketoni në Twitter nëse keni ndonjë pyetje, ose bashkohuni në Komunitetin e DataStax, tejmbushjen e stivit për Cassandra.

Mos harroni të ndiqni Blogun teknik të DataStax për t'u njoftuar për më shumë histori zhvilluesish si kjo.

Burimet

  1. "Apache Cassandra®"
  2. "Astra DB"
  3. "qëndrueshme-në-shigjeta"
  4. GitHub me shigjetë të qëndrueshme
  5. "RAPIDS"
  6. "Apache Arrow"
  7. "Apache Spark"
  8. "Ndërmarrja DataStax"
  9. "Tutorial YouTube: Analizimi i të dhënave Cassandra me GPU"
  10. "Analiza e të dhënave të Cassandra duke përdorur GPU, Pjesa 1"
  11. "Analiza e të dhënave të Cassandra duke përdorur GPU, Pjesa 2"
  12. "Kanali YouTube DataStax"
  13. "Kurse certifikimi Apache Cassandra"
  14. "DataStax Academy"