Big Data Schaalbaar rekenen Big Data Niels Basjes Niels@Basjes.nl @nielsbasjes http://github.com/nielsbasjes TU-Delft Informatica Nyenrode Bedrijfskunde Zoek Suggesties Software ontwikkelaar Onderzoeker (NLR) Infra Architect (NLR) Webanalytics Architect IT Architect Sinds 2008 bij Bol.com Zoek Suggesties Architectuur schets Basis idee: Volledig automatisch Klanten helpen klanten Processing principe Elke historische zoek actie is een potentiële suggestie. Sorteren op relevantie. Bied de 10 meest relevante als suggestie. Razendsnel Wat is relevant? De zoekactie en het resultaat Het gedrag na de zoekactie. Grote batch Clickstream 1
Zoek suggesties (versie 1) Zoek suggesties (versie 1) Eerste versie: Alleen zoekacties tellen Kwantitatief filteren Beperkte feedback Schaal 1 week data 1 systeem om het te berekenen 1 zoek actie op de term Hadoop H Hadoop : 1 Ha Hadoop : 1 Had Hadoop : 1 Hado Hadoop : 1 Hadoo Hadoop : 1 Hadoop Hadoop : 1 Zoek suggesties (versie 1) Zoek suggesties (versie 1) 2 Zoek acties op de term Harry Potter H Harry Potter : 2 Ha Harry Potter : 2 Har Harry Potter : 2 Harr Harry Potter : 2 Harry Harry Potter : 2 Harry Harry Potter : 2 Harry P Harry Potter : 2 Combineer die twee H { Harry Potter, Hadoop } Ha { Harry Potter, Hadoop } Har { Harry Potter } Had { Hadoop } Harr { Harry Potter } Hado { Hadoop } Functioneel effect nijntje dekbedovertrek Bezoekers vinden dat een heel interessante suggestie! Alleen hebben we dat niet 2
Zoek suggesties (versie 2) De zoek funnel Zoeken Gebruik meer data en analyseer het gedrag Vinden Kiezen Kopen 14 Dieper = relevanter Kwalitatief filteren (Zoeken) Vinden Kiezen Kopen 15 Recenter = relevanter 1 jaar klik historie Gisteren Eergisteren Vorige week Vorige maand 3
En dat is best veel data Dit wordt te groot! (1/2) Gemiddeld 3.5 GiB Gzip logfiles per dag 3.5GiB Gzip 35GiB text Eerste doel: 12 weken historie (84 dagen) Dus zo n 300GiB ( 3TiB text) aan input mee laten wegen Nu: 1 jaar historie Uiteindelijk: Alles wat we hebben liggen Dit wordt te groot! (2/2) Recommendations Steeds dieper kijken Redeneren over alle acties van een bezoeker Verbanden vinden in veel grotere dataset Op basis van die verbanden betere relevanties bepalen Inschatting aan het begin van het project: Dit gaat meer rekentijd kosten dan we hebben Recommendations Wisdom of the crowd. Welke andere producten zijn relevant bij dit product? De klanten stemmen met hun digitale voeten 4
Het gedrag van een klant Het gedrag van een klant Bekijkt/Koopt een aantal verschillende producten Die producten hebben dus een relatie Het gedrag van een klant Wat doen veel klanten Klant 1 Klant 2 Klant 3 Trigger Aanbeveling Tuple Elk product beveelt elk ander product aan Wat doen veel klanten Klant 1 Klant 2 Klant 3 Wat doen veel klanten Klant 1 Klant 2 Klant 3 5
Heel veel anonieme tuples De waarde van een tuple? Hoeveel bekeken? Hoeveel verkocht? Allemaal een score geven Groeperen Allemaal de score 1 Aggregeren Ruis filteren Te weinig bezoekers deden dit. 6
Group By trigger, sorteer op score Veel te groot! Totaal aantal tuples: 12.800.000.000 = 12.8 miljard Veel te groot! Totale rekentijd welke we elke week verstoken: 400 uur = 16 dagen (exclusief overhead) Het past niet meer Te groot voor 1 computer! 7
Algemene voorspelling Data volume en de wensen om daar iets mee te doen groeien sneller dan de kracht van de computers. Steeds meer data BigData Business Value Verschillende soorten bron gegevens Steeds sneller operationeel toepassen Continue veranderingen in de data bronnen Schaalbaarheid Voorbeeld case Het oogsten van gewassen Elk begin is klein Automatiseren 8
2013-09-09 Opschalen naar groter En nog groter En nog groter Tot de grootste Twee soorten schaalbaar (1/2) Twee soorten schaalbaar (2/2) Verticaal: Steeds groter Voor: Zolang het kan: Makkelijk. Korte time-to-market Tegen: Wordt snel duur Big bang aankoop Groter dan de grootste kan niet. Horizontaal: Steeds meer naast elkaar Voor: Veel meer doorgroei potentie. Incrementeel groter maken Kosten effectief Tegen: Het proces moet ervoor ontworpen worden. Kan ALLEEN als het werk in onafhankelijke delen gesplitst kan worden. 9
Meer Nog meer Economische maat Verschillende modellen Heel veel meer Begin bij het proces ontwerp Voldoende brokken werk. Anders is het zo lastig verdelen De brokken zijn onafhankelijk. Anders vervalt de schaalbaarheid Google: soybean harvest Meer performance Meer systemen Logistiek Veelbakjeswordenparallel gevulden onafhankelijkvan elkaar ingepakt. Verkeer 10
Supermarkten Website horizontaal schalen Onafhankelijke data? (1/3) Onafhankelijke data? (2/3) Met relaties in de data (RDBMS / SQL) Transacties over tabellen heen Strong consistenticy (ACID) Atomic, Consistent, Isolation, Durable Meestal alleen vertikaal schaalbaar. Zonder relaties in de data (Geen SQL) Geen transacties over tabellen heen Eventual consistency (BASE) Basically Available, Softstate, Eventually consistent Horizontaal schaalbaar is mogelijk Onafhankelijke data? (3/3) NoSQL (Not ONLY SQL) Kies verstandig afhankelijk van de situatie Praktijk: Hybride landschap! Offer Een partij bied een product aan voor een bepaalde prijs / kwaliteit / levertijd. 11
Business wens: Sorteren Soms heel veel offers 2844 Offers sorteren (1/4) Offers sorteren (2/4) De offers: Klaas: 15 Euro, 2 dagen levertijd Piet: 10 Euro, 5 dagen levertijd Jan: 20 Euro, 5 dagen levertijd De uitdaging: Sorteer de offers op Beste koop Zet bij elk offer zijn Array index : Klaas: 15 Euro, 2 dagen levertijd 1 Piet: 10 Euro, 5 dagen levertijd 2 Jan: 20 Euro, 5 dagen levertijd 3 Gevolg: Klaas verwijderen alle andere offers worden ook gewijzigd. Per product alle offers op 1 CPU. Heel veel updates in het landschap. Offers sorteren (3/4) Offers sorteren (4/4) Werkelijk gebruik: Select <Offers> Where <Nieuw/2eHands/ > Order by <Sorteer getal> Limit <Klein aantal> Zet bij elk offer zijn Relevantie : Klaas: 15 Euro, 2 dagen levertijd 333 Piet: 10 Euro, 5 dagen levertijd 22 Jan: 20 Euro, 5 dagen levertijd 1 Gevolg: Als we Klaas wijzigen/verwijderen dan hoeven we maar 1 offer aan te passen. Per offer verwerken op een CPU. Veel minder load op de systemen. 12
Unstructured data? Un-/Semi-/Structured data? Unstructured Data refers to information that either does not have a pre-defined data model and/or does not fit well into relational tables. Unstructured information is typically textheavy, but may contain data such as dates, numbers, and facts as well. Unstructured Twitter berichten Datum + willekeurige text. Sentiment heel veel rekentijd Semistructured (non relational) Webanalytics Datum, URL, browser, campagne. Geen transacties, BASE Structured (relational) Klanten, Orders, betalingen Transacties, ACID [1] : http://en.wikipedia.org/wiki/unstructured_data Data horizontaal schalen? What did Google do? Groot aantal computers 1. Data distribueren 2. Processing naar de data sturen. En een processing model om dit herbruikbaar te maken. MapReduce Google paper uit 2004 MapReduce: Simplified Data Processing on Large Clusters What did Google do? What did Google do? 13
What did Google do? Is dit betrouwbaar?!?! Data verspreiden (HDFS) Client Input 1 bestand 2 3 Map Reduce Client JOB 1 3 1 2 2 3 Server 1 Server 2 Server 3 Server 1 Server 2 Server 3 Replicatie factor =2 Replicatie factor =2 En toen deed het BOEM! Client JOB MapReduce processing model > 30 jaar oud Alleen voor Batch verwerking Eenvoudig Horizontaal schaalbaar Kan in alle programmeer talen 1 3 1 2 2 3 Server 1 Server 2 Server 3 Replicatie factor =2 14
MapReduce: basis idee Woorden tellen Map (Transformeren) 1 Input record omzetten en groepeerbaar maken. Input: Input regels Output: Aantal ( Key, Value ) paren Input Split Map Shuffle/ Sort Reduce Output Reduce (Groeperen en Aggregeren) Alles met dezelfde Key aggregeren Input: 1 Key met een aantal Values Output: De records die gewenst zijn. Ketens van MR jobs Zoeksuggesties Stel we hebben 3 zoek acties: Hadoop Harry Potter Harry Potter Zoeksuggesties: Map 1 Zoeksuggesties: Map 1 Input: Hadoop Map K: Hadoop V: 1 Input: Harry Potter Map K: Harry Potter V: 1 Input: Harry Potter Map K: Harry Potter V: 1 15
Zoeksuggesties: Reduce 1 Zoeksuggesties: Reduce 1 Input: K: Hadoop V: 1 Reduce: Totaal scores per term K: Hadoop V: 1 Input: K: Harry Potter V: 1 K: Harry Potter V: 1 Reduce: Totaal scores per term K: Harry Potter V: 2 Zoeksuggesties: Map 2 Zoeksuggesties: Map 2 Input: K: Hadoop V:1 Map: Knip in stukjes K: H V: Hadoop, 1 K: Ha V: Hadoop, 1 K: Had V: Hadoop, 1 K: Hado V: Hadoop, 1 Input: K: Harry Potter V: 2 Map: Knip in stukjes K: H V: Harry Potter, 2 K: Ha V: Harry Potter, 2 K: Har V: Harry Potter, 2 K: Harr V: Harry Potter, 2 Zoeksuggesties: Reduce 2 Hadoop MapReduce Input: K: Ha V: Hadoop, 1 K: Ha V: Harry Potter, 2 Reduce: Neem top 10 (Sort by Score) K: Ha V: { Harry Potter, Hadoop } Java implementatie van MapReduce Een handige toolkit Kennis beschikbaar Boeken, Trainingen, Community. Support beschikbaar Hortonworks, Cloudera, MapR Grote spelers Yahoo, Linkedin, Twitter, Facebook, Amazon, Adobe, 16
Hadoop Ecosysteem Van concept naar praktijk Klein beginnen Laat zien dat het schaalt Laat anderen het proberen 3 weken webdata in 25 minuten! Job Status: Succeeded 17
In productie nemen Waar ligt de grens? Het productie cluster VM Master 5 Workers systemen 2 CPU x 4 Core 8 Disks * 450 GB 32GiB Ram Op eenpaarduizend servers! Business impact Toepassingen binnen bol.com Aanbevelingen Zoek Suggesties Producten Sorteren op relevantie Vinden van klant voorkeuren Persoonlijke inspiratie (Web)Statistiek Etc. Zoek suggesties (nu) Huidige versie: Gevolgen van zoek acties Categorie suggesties Kwalitatief filteren Spelling correcties Spelfouten herkennen Niet succesvolle termen verwijderen. Echt volledig automatisch! Zondag ochtend 12 feb 2012: Whitney Houston Maandag ochtend: Schaal 1 jaar data 5 systemen parallel aan het werk 18
Business effect 3 jaar later Impliciet filteren tegen de product catalogus Slechte zoek resultaten worden niet mee genomen Betere dekking van de long tail De suggesties worden vaker gebruikt Recommendations (nu) Organisatie impact & tips Voor de gehele catalogus 17M producten Meerdere soorten aanbevelingen Product Product Creator Creator Schaal >13 jaar order historie >2 jaar click stream Binnen 20 uur klaar (op 4 servers) Binnenkort meer servers IT: Mindset verschuiving Data doe je in Oracle Laat de pilot door flexibele senior mensen doen. Het is anders Training en uitproberen is noodzakelijk Geef de pioniers een stapeltje oud ijzer Standaard server grade hardware Zoek de balans kosten/systeem & aantal systemen Organisatie impact & tips Business: Veel nieuwe mogelijkheden Het maximale data volume is een (financiële) keuze. Business case is erg makkelijk De software is gratis De hardware is standaard of the shelf In kleine stappen opschalen 19
Belangrijkste BigData conclusie Big Data boeken Overzicht op www.basjes.nl Vragen? 20