Mikä on Databricks?

Databricks on yhdysvaltalainen pilvipohjainen Apache Sparkiin perustuva hajautetun laskennan ja avoimen lähdekoodin data- ja analytiikka-alusta, jonka tuotosta markkinoidaan Data Lakehouse Platform -nimellä. Databricks Data Lakehouse Platformin voidaan ajatella olevan datainsinöörin, datatieteilijän ja BI-analyytikon yhteinen työkalupakki, joka tarjoaa kaiken tarpeellisen dataratkaisujen rakentamiseen, jalkauttamiseen, jakamiseen ja ylläpitoon aina suppeista, pistemäisistä datatarpeista mittaviin, konsernitason toteutuksiin asti. Suhteellisesti parhaimmillaan Databricks onkin juuri isojen datamassojen kanssa työskenneltäessä, sillä työkalun tausta on Big Data -maailmassa. Databricks on saatavilla Azuressa, AWS:ssä sekä Google Cloudissa, se integroituu valitun pilvipalveluntarjoajan tiedon tallennus [toim. huom. ”storage”] – ja tietoturva-arkkitehtuuriin sekä hallinnoi tarvittavaa infrastruktuuria käyttäjän puolesta. Luonnollisesti git-versionhallinta ja muut ohjelmistokehityksen parhaat käytännöt ovat Databricksin puolesta tuettuja.

Konepellin alla Databricks siis nojautuu hajautettuun, rinnakkaiseen laskentaan, jonka moottorina toimii Apache Spark. Tässä käyttäjä määrittää millaisilla klustereilla laskentaa halutaan tehdä ja Databricks hankkii tarvittavat koneet käyttäjän puolesta, käynnistää ne joko tarvittaessa tai ennalta määrätyn aikataulun mukaan sekä sammuttaa, kun klusteria ei enää tarvita. Prosessoitava data taas on talletettuna pilvessä, esim. Azure Data Lake Storage Gen2:ssa tai AWS S3:ssa, jolloin hintalappua muodostettaessa yksinään suuri datan määrä tai tarvittu laskentateho ei sanele koko hintalappua, vaan nämä kaksi osa-aluetta skaalautuvat toisistaan erillään.

 

Miten Databricksillä kehitetään ja julkaistaan dataa?

Dataa prosessoitaessa prosessoitava yksikkö on tyypillisesti Spark Dataframe, joka vastaa löyhästi rinnastaen tietokantataulua, jonka hallinta tapahtuu Spark-moottorin toimesta. Dataframen käsittely tapahtuu klusterin muistissa, ja sitä manipuloidaan joko Pythonilla, Scalalla, R:llä tai SQL:llä datan prosessointiputkissa. Putkien kehitys tapahtuu Databricks Notebookeissa, jotka koostuvat yhdestä tai useammasta peräkkäin ajettavasta komentosolusta. Yhteen komentosoluun kirjoitetaan koodi (esim. Python-funktio tai Spark Dataframen muodostava SQL-kysely), ja yhdessä Notebookissa voidaan käyttää yhtä tai useampaa eri ohjelmointi- tai kyselykieltä. Yleensä yksi datan prosessointiputki koostuu useammasta peräkkäin ajettavasta Notebookista, joista kukin keskittyy vain tietynlaiseen prosessointiin; esim. raakadatan puhdistus, avainten luonti tai dimensionaalisen mallin lataus. Kunkin prosessointiputken lopputuotos tallennetaan pilveen tyypilliseti Delta Lake -formaatissa, joka on nykypäivänä data lake -analytiikassa de facto -ratkaisu. Kehitys onkin teknisesti varsin suoraviivaista, eikä kehittäjän tarvitse välttämättä ajatella Spark-moottorin koukeroita ja hienouksia kehitystyötä tehdessä – kuitenkin erittäin monipuoliset konfiguraatiomahdollisuudet säilyttäen.

 

Työnkulun luonti ja riippuvuuksien hallinta

Viimeaikaisena uutuutena Databricksiin tullut Delta Live Table (DLT) tarjoaa myös huomattavaa lisäarvoa dataratkaisuille. Mielestäni olennaisimpana lisänä tämä tuo automaattisen DAG-tyypisen työnkulun muodostuksen sekä riippuvuuksien hallinnan. Tämä auttaa pitämään prosessointiketjut oikeassa järjestyksessä ja varmistaa, että oikeat taulut latautuvat oikeassa järjestyksessä. DAG-ketjut ovat myös käyttäjien nähtävillä, jolloin datan muutoshistoria (eng. Data lineage) on nähtävillä raakatauluista aina raportointiin asti. Lisäksi DLT mahdollistaa deklaratiivisen dataputkikehityksen missä sama dataputki ja sama koodi pystyy prosessoimaan eri lähdetauluja joko eräajona tai striiminä, jolloin arkkitehtuuri yksinkertaistuu ja koodin määrä vähenee. DLT-dataputkien kautta kulkevan datan laadunvalvonta on samalla tavoin pitkälle automatisoitu, missä ennalta määriteltyjen sääntöjen ja ehtojen perusteella data validoidaan prosessoinnin yhteydessä ja tulokset, kuten ehtoja ei-täyttävien rivien määrä, on visuaalisesti näkyvillä käyttäjälle.

 

Tietojen hallinta Unity Catalogin avulla

Viime vuonna tulleista uusista mielenkiintoisista ominaisuuksista Databricks Unity Catalog tarjoaa näkyvyyttä ja hallittavuutta silloin kun lähdejärjestelmiä ja loppukäyttäjäryhmiä on useita ja tätä kaikkea halutaan hallita yhdessä keskitetyssä paikassa siten että organisaation datan hallintamalli (data governance) toteutuu koko datan elinkaaren aikana. Unity Catalog mahdollistaa datan löytämisen loppukäyttäjille metadatan pohjalta kaikesta datasta mikä on rekisteröity mukaan ja datan jakamisen Delta Sharing –ominaisuuden kautta kohteen kanssa, joka on saman Databricks instanssin sisällä, saman pilven sisällä tai ei pilvessä lainkaan. Data on saatavilla helposti, mutta hallitusti siten, että Catalogin sisällä dataan pääsyä hallinnoidaan, auditoidaan ja monitoroidaan keskitetysti yhdessä paikassa.

 

Tietojen julkaiseminen Databricksin avulla

Aiemmin Databricksin haasteena on ollut datan jakelupuoli ja se, miten varmistaa, että BI-kehittäjät ja liiketoiminta-analyytikot pääsevät käsiksi valmiiseen dataan heille tutuin menetelmin ja työkaluin. Nykyään Databricks tarjoaa tähän natiivina ratkaisuna SQL Warehousea, joka mahdollistaa datan julkaisun perinteistä relaatiokantaa muistuttavaan käyttöliittymään. Näin ollen valmista, mallinnettua dataa voidaan kysellä SQL-kielellä joko suoraan verkkoselaimelta tai tuetusta SQL-kehittimestä, esimerkiksi DBeaveristä. Myös laajalti käytetyt BI-työkalut (esim. Power BI, Tableau, Qlik, Looker) integroituvat helposti Databricks SQL Warehouseen. SQL Warehouse vaatii kirjoitushetkellä vielä käynnissä olevan klusterin toimiakseen, mutta myös serverless-ratkaisu on public preview -vaiheessa ja tulee julki ennen pitkää.

 

Mihin Databricksiä käytetään?

Tyypillisiä käyttötapauksia, joihin Databricks sopii:

  1. Suurten datamassojen kanssa työskentely:
    • Ennen muuta hajautettu laskenta, mutta myös laaja skaala klusterivaihtoehtoja ja monipuoliset ohjelmointikielivaihtoehdot tarjoavat kaikki tarvittavat työkalut suurten datamassojen kanssa työskentelyyn aika- ja kustannustehokkaasti.
  2. Laajat ja moninaiset data-alustat:
    • Databricksin monipuolisuus mahdollistaa erittäin monien käyttötapausten toteuttamisen yhdessä ja samassa ympäristössä. Datainsinöörit hoitavat raakadatan haun, puhdistuksen ja Data Vault/dimensionaalisen mallinnuksen, datatieteilijät kehittävät ja harjoittavat koneoppimismallit näiden datojen pohjalta ja BI-analyytikot tarjoilevat datan yleisimmin käytettyjen visualisointityökalujen käyttöön SQL Warehouse -rajapinnassa.
  3. Täsmäratkaisut, joihin nykyisin käytössä olevat työkalut eivät luontaisesti taivu:
    • Esimerkiksi IoT-laitteiden toimittaman datan prosessointi voi olla monille perinteisillä työkaluilla (esim. relaatiokannat) toteutetuille data-alustoille liikaa sekä datan määrän että päivitystiheyden puolesta. Esimerkiksi Delta Live Table -toiminnot tarjoavat tähän tarkoitukseen soveltuvan helppokäyttöisen Streaming Tablen, mutta saatavilla on myös muita vaihtoehtoja.
    • Esimerkiksi joidenkin lähteiden raakadata voi olla niin haastavassa muodossa, että perinteisin työkaluin rakennetut ratkaisut joutuvat ennen pitkää ongelmiin joko suorituskyvyn tai ylläpidettävyyden näkökulmasta, usein molemmista. Näissä tapauksissa Spark Dataframet ja esimerkiksi Pythonin modulaarisuus ja uudelleenkäytettävyys SQL:ään nähden mahdollistavat huomattavasti tehokkaammat ja helpommin ylläpidettävät ratkaisut.
  4. Uuden data-alustan rakentaminen puhtaalta pöydältä:
    • Databricks tarjoaa tehokkaat työkalut minkä tahansa data-alustaratkaisun kehittämiselle työkalupaletilla, josta löytyy jokaiselle kehittäjälle tutut työkalut. Jos Databricks valitaan toteutusteknologiaksi heti elinkaaren alkuvaiheessa, ei epähuomiossa suljeta mitään käyttötapauksia data-alustan ulkopuolelle tai pakoteta itseä myöhemmin integroimaan alustaan sellaisia komponentteja, jotka eivät siihen saumattomasti sovi.
  5. Machine Learning:
    • Koneoppiminen (eng. Machine Learning – ML) on ollut mukana ja keskiössä koko Databricksin historian ajan. Nykyisellään Databricksin ML kyvykkyydet on rakennettu avoimen lakehouse-arkkitehtuurin päälle, missä ominaisuudet kuten AutoML ja MLflow tukevat ja mahdollistavat koneoppimismallien kehityksen, elinkaaren hallinnan ja valmiiden mallien monitoroinnin.

 

Mitä Islet on tehnyt Databricksillä?

Yhtenä esimerkkinä tiimimme tekemä erittäin laaja data-alusta, jossa datainsinöörimme hyödynsivät Delta Live Table -toimintoja datan prosessoinnissa raakadasta valmiiksi ja jakelukelpoiseksi dimensiomalliksi, joka jaeltiin loppukäyttäjille SQL Warehouse -liittymässä. Toteutuksessa integroitiin suuren suomalaisen yhtiön SAP S4 HANA data Azureen Databricks Notebookeilla. Raakadata haettiin SAP:n kannasta sekä talletettiin ADLS Gen2:een Aecorsoft Data Integratorilla. Toteutus tehtiin täysin metadataohjatuksi – uutta dataa integroitaessa vain uusien taulujen perustiedot kirjoitetaan konfiguraatiotiedostoon, jonka jälkeen Databricks Notebookit hakevat uuden, tarjolla olevan raakadatan, puhdistavat sitä sekä tekevät tarvittavat muunnokset jatkokäsittelyn helpottamiseksi. Lopulta dimensiomalli muodostetaan Azure DevOps repositoryyn kirjoitettujen SQL-kyselyiden avulla, jotka Delta Live Table -putket lukevat ja muodostavat asiakkaan kanssa yhteistyössä suunnitellun dimensionaalisen mallin Data Lakeen. Tämä malli jaellaan Power BI:lle ja analyytikoille SQL Warehousella.

Jos haluat kuulla lisää Databricksin mahdollisuuksista, meidän kokemuksistamme tai muuten sparrailla Lakehouse arkkitehtuurista, ota yhteyttä!

Janne Anttila CBO – Data and Analytics, Isletter janne.anttila@isletgroup.fi +358 45 672 8569

Blogin kirjoittajat Aku Rantala ja Mika Rönkkö ovat ISLET:in Lead Cloud Data -arkkitehtejä, jotka ovat johtaneet lukuisia projekteja. Heillä on laaja kokemus erilaisista työkaluista ja teknologioista, erityisesti Databricks ja Microsoft Azure ovat heidän vahvuuksiaan.

#IsletGroup #data #analytiikka #DataBricks #DataLakehousePlatform #ApacheSpark

Like what you read? Share this!