Sådan som begrebet kunstig intelligens (AI) har været foragtet i mange år, lige i 2017 begynder ‘Big Data’ noget, der genererer mere afvisning end accept på grund af daglig slid og bombning. Alt er Big Data, og alt bliver løst med Big Data. Men hvad gør vi så dem, der arbejder med Big Data?
Big Data er i de senere år blevet relateret til store mængder af strukturerede eller ustrukturerede data, der produceres af systemer eller organisationer. Dens betydning ligger ikke i selve dataene, men i det, vi kan gøre med disse data. Om hvordan data kan analyseres for at træffe bedre beslutninger. Ofte kommer en stor del af den værdi, der kan hentes fra data, fra vores evne til at behandle dem i tide. Derfor er det vigtigt at kende både datakilderne og den ramme, som vi skal behandle dem i, meget godt.
Et af de indledende mål i alle Big Data-projekter er at definere den behandlingsarkitektur, der bedst passer til et specifikt problem. Dette omfatter et utal af muligheder og alternativer:
Hvad er kilderne?
Hvordan lagres dataene?
Er der nogen beregningsmæssige begrænsninger? Og af tid?
Hvilke algoritmer skal vi anvende?
Hvilken nøjagtighed skal vi opnå?
Hvor kritisk er processen?
Vi er nødt til at kende vores domæne meget godt for at kunne besvare disse spørgsmål og give kvalitetssvar. I løbet af dette indlæg vil vi foreslå en forenkling af en rigtig brugssag og sammenligne to Big Data-behandlingsteknologier.
Den foreslåede brugssag er anvendelsen af Kappa-arkitekturen til behandling af Netflow-spor ved hjælp af forskellige behandlingsmotorer.
Netflow er en netværksprotokol til indsamling af oplysninger om IP-trafik. Den giver os oplysninger som f.eks. start- og slutdatoer for forbindelser, kilde- og destinations-IP-adresser, porte, protokoller, pakkebyte’er osv. Det er i øjeblikket en standard for overvågning af netværkstrafik og understøttes af forskellige hardware- og softwareplatforme.
Hver begivenhed i netflow-sporene giver os udvidede oplysninger om en forbindelse, der er etableret i det overvågede netværk. Disse hændelser indlæses via Apache Kafka for at blive analyseret af behandlingsmotoren – i dette tilfælde Apache Spark eller Apache Flink – og udfører en simpel operation som f.eks. beregning af den euklidiske afstand mellem parvis af hændelser. Denne type beregninger er grundlæggende i algoritmer til påvisning af anomalier.
For at kunne udføre denne behandling er det imidlertid nødvendigt at gruppere begivenhederne, f.eks. gennem midlertidige vinduer, da dataene i en ren streamingkontekst mangler en begyndelse eller en slutning.
Når netflowbegivenhederne er grupperet, giver beregningen af afstandene mellem parrene en kombinatorisk eksplosion. Hvis vi f.eks. modtager 1000 begivenheder/s fra den samme IP, og vi grupperer dem hver 5. sekund, vil hvert vindue kræve i alt 12 497 500 beregninger.
Den strategi, der skal anvendes, er helt afhængig af behandlingsmotoren. I tilfælde af Spark er gruppering af hændelser ligetil, da den ikke arbejder i streaming, men i stedet bruger micro-batching, så behandlingsvinduet vil altid være defineret. I tilfældet med Flink er denne parameter imidlertid ikke obligatorisk, da det er en ren streamingmotor, så det er nødvendigt at definere det ønskede behandlingsvindue i koden.
Beregningen returnerer som resultat en ny datastrøm, der offentliggøres i et andet Kafka-emne, som vist i følgende figur. På denne måde opnås en stor fleksibilitet i designet, idet man kan kombinere denne behandling med andre i mere komplekse datapipelines.
Leave a Reply