Jak przeanalizowaliśmy cały internet, by sprawdzić, co ludzie osadzają na swoich stronach. Za 300 euro.
Autor: Idego Group

Idego Group podjęło ambitny projekt analizy osadzanych treści w całym internecie. Klient poprosił o wyciągnięcie danych o tym, co ludzie osadzają na stronach, szukając konkretnie tagów object i embed wraz z ich atrybutami src lub data, pogrupowanymi według domeny.
Zespół początkowo korzystał ze Scrapy – frameworka do crawlowania stron w Pythonie – ale dostrzegł jego ograniczenia. Narzędzie wymagało predefiniowanej listy domen i generowało podejrzane wzorce ruchu, które wymagały użycia proxy, co znacznie spowalniało cały proces.
Przełom nastąpił dzięki wpisowi na blogu inżynierskim Yelp, który opisywał, jak ekonomicznie analizować ogromne zbiory danych internetowych. Zainspirowało to Idego do skorzystania z Common Crawl – inicjatywy non-profit tworzącej migawki internetu. Stan z marca 2018 roku: Crawl zawiera 3,4 miliarda stron internetowych – to 270 TB danych nieskompresowanych. Dane dostępne są w formatach WARC, WET i WAT, przechowywanych na Amazon S3.
Przetworzenie takiego wolumenu wymagało zastosowania MapReduce na Amazon EMR (Elastic MapReduce). To rozproszone podejście obliczeniowe dzieli zadania na fazy Map (równoległe rozdzielanie pracy) i Reduce (konsolidowanie wyników). Zespół użył cc-mrjob do usprawnienia integracji z Common Crawl.
Migawka ze stycznia 2018 roku okazała się znacznie większa niż wersja z 2014 roku, którą analizował Yelp. Podczas gdy Yelp ukończył podobną pracę w ciągu godziny używając 20 instancji, Idego potrzebowało 40 porównywalnych instancji i około 15 godzin. Ceny na żądanie kosztowałyby około 1100 dolarów, ale instancje Spot (niewykorzystana moc obliczeniowa) pozwoliły obniżyć koszty do około 300 dolarów – co jest dowodem na efektywne wykorzystanie zasobów do analizy danych na masową skalę.