Data Lake Storage Gen 2 – Azuren uusi tietojärvi

Microsoft julkaisi (preview) kesällä 2018 Azureen Data Lake Storage Gen 2:n. Uusi palvelu lupaa yhdistää Blob Storagen ja Data Lake Storagen ensimmäisen version hyvät puolet yhteen pakettiin. Blob on siis käytännössä raakatallennuspalvelu pilvialustalla, joka tarjoaa kansioidun rakenteen erilaisten tiedostojen tallentamiseksi. Data Lake Storage, eli DLS, taas tarjoaa hieman enemmän ominaisuuksia, kuten käyttöoikeuksien hallinnan sekä Data Lake Analytics -tuen, joka on suurille tietomassoille suunniteltu tiedon muokkaustyökalu.

DLS on kuitenkin huomattavasti Blobia hintavampi vaihtoehto. Blobin tallennuksen hinnoitteluun pystyy vaikuttamaan käyttöperusteisesti, jossa nopein tallennustila (hot) maksaa huomattavasti enemmän kuin halvin eli arkistointitila (archive). DLS-tallennuksen hinta taas on vakio, mutta halpenee hieman tiedon määrän kasvaessa (yli) 100 TB. Käytännössä hintaero on noin 2–17-kertainen. Suurilla tietomäärillä tämä on huomattava ero vaikka tallennustila molemmissa onkin kohtuullisen edullista.

Data Lake Storage Gen 2, eli DLSG2, tarjoaa suorituskykyisemmän tallennustilan huomattavasti edeltäjäänsä edullisemmin, mikä tekee siitä houkuttelevan vaihtoehdon pelkästään kustannusten kannalta. Tiedossa on kuitenkin vasta preview-vaiheen hinnoittelu, joten hinta saattaa vielä nousta kun preview-vaihe päättyy. Useissa blogeissa arvioidaan hinnan jäävän hieman yli Blobin vastaavien eli todella edullisiksi.

Tässä yksinkertaistettu esimerkki hinnoittelusta

 

Hot-tallennuksen hintavertailu

Kannattaa huomata, että hinnat eivät ole suoraan vertailtavissa palveluiden välillä erilaisten hinnoittelumallien vuoksi. Hot-tallennus on tarkoitettu usein käsiteltävälle tiedolle ja on vaihtoehdoista nopeinta. Cool puolestaan on tarkoitettu tiedolle, jota käsitellään vain harvoin, mutta joka kuitenkin on käytössä (ei ainoastaan säilömistarkoitus/varmuuskopio) ja on siis hitaampaa kuin Hot-tallennus. Hot-tallennuksessa luku on edullisempaa ja muisti kalliimpaa. Cool-tallennuksessa tämä taas on päinvastoin.

Mitä muuta uusi palvelu tarjoaa kuin vain edullista tallennustilaa?

Uudessa versiossa tarjolla on käyttöoikeuksien hallinta tiedosto- ja kansiotasolla hyödyntäen Azure AD:n rooleja (role-based access control = RBAC). Myös Big Data -tiedot saadaan turvallisesti ja keskitetysti AD:n piiriin, ja näin ollen siihen on helpompaa jakaa käyttöoikeuksia. Myös Blobin preview-vaiheessa olevan Lifecycle managementin luvataan olevan mukana.

Vaikka DLSG2 onkin tuettu monissa Azuren palveluissa kuten Power BI:ssä, Data Bricksissä ja Azure SQL DW:ssä, niin vielä tukea ei Azure Data Lake Analyticsistä eli ADLA:sta löydy. Toivomme ja uskomme tämän olevan kuitenkin vain preview-vaiheen tila, koska esimerkiksi Blob Storage on jo tuettu ADLA:ssa. Azure SQL DW:n External table kuitenkin tarjoaa helpon ja kätevän virtualisointikerroksen DLSG2:n tiedostojen päälle. Kyseessä on Polybasen avulla tiedostojen päälle luotavasta kerroksesta, joka tarjoaa SQL:llä kyseltävän rajapinnan tiedostojen lukemiseksi. Azure DW:n External table ei kuitenkaan tarjoa yhtä paljon vaihtoehtoja kuin ADLA, mutta tarjoaa kuitenkin riittävät perusominaisuudet moneen tarpeeseen. Dynaamista SQL-koodia hyödyntämällä sillä pääsee jo erittäin pitkälle vaativammassakin toteutuksessa.

Uskonkin, että Data Lake Store on tullut jäädäkseen. Kunhan uuteenkin versioon saadaan vielä tuki Data Lake Analyticsille, tulee se olemaan erinomainen vaihtoehto suurten tietomassojen tallentamiseen ja käsittelyyn.

Data Lake Storage Gen 2 lukeminen Azure SQL Data Warehouse:sta

Uusi tulokas on vielä preview-vaiheessa ja osittain puutteellinen dokumentointi haittaa sen käyttöönottoa. Tässä esimerkkinä kuinka DLSG2:sta saa luotua External Tablen Azure SQL DW:hen. T-SQL-koodi ei ole pitkä eikä monimutkainen, mutta ainakaan omilla googlaustaidoilla ja rajallisella aikamäärällä en hyvää esimerkkiä tämän luomiseksi löytänyt. Jokunen tunti tämän selvittämiseen meni, joten toivottavasti tämä säästää jonkun kehittäjän otsaa ja seinää.

Ympäristö

Pohjalle on luotu Storage Account, joka on Data Lake Storage Gen 2 -tyyppinen ja nimeltään dlsgen2.

Siihen on luotu 'test'-niminen containeri, jossa on on pääkansio stage, jonka alta löytyy alikansio csv.

Alikansiosta löytyy series.csv -tiedosto, joka on puolipisteellä eroteltu CSV-tiedosto, jonka ensimmäisellä rivillä on sarakkeiden nimet. Tämän lisäksi käytettävissä on luonnollisesti Azure DW.

DLSGen2Structure

External-taulun luominen onnistuu 5 askeleella:

1. Luodaan Master-avain salasanojen kryptausta varten (jos ei ole jo olemassa)
2. Luodaan Credential, jonka avulla pystytään lukemaan DLSG2:taas
3. Luodaan ulkoinen tietolähde haluttuun containeriin
4. Luodaan tiedostolle sopiva formatointi
5. Luodaan ulkoinen taulu

1. Master keyn luonti

Master_key-1

2. Database scoped credential

IDENTITY: arvoksi tulee asettaa "user".

SECRET: arvoksi laitetaan valitun DLSG2:en Access Key.

3. External data source

TYPE: arvoksi asetetaan HADOOP.

LOCATION: tieto kasataan containerin nimestä, joka tässä tapauksessa on 'test' ja Storage Accountin nimestä sekä vakio-osasta. On tärkeää käyttää abfss ajuria DSLG2:een yhdistettäessä.

4. External file format

Luodaan tiedostoa varten sopiva tiedosto formatointi. Tässä erottimena ; sekä header-rivin skippaus.

5. External table

Valitaan mitkä sarakkeet tiedostosta ladataan ja asetetaan luodut tietolähde sekä formatointi.

00_ALL

Thats it folks!

Homma on testausta vaille valmis. Pieni ilon kipinä syntyi testauksessa, mikä on rivien arvoista nähtävissä :) Data-arkkitehdin pieniä iloja.

99_result

 

Kirjoittaja
Picture of Marko Oja
Marko Oja

Data-arkkitehti, joka auttaa asiakasta ymmärtämään tekniikan mahdollisuudet ja muuntaa innovatiiviset ideat teknisiksi ratkaisuiksi. Ketterät kehitysmenetelmät ja kehitystyötä tukevat prosessit ovat lähellä Markon sydäntä.

Uusimmat

Tilaa blogi