Sawzall (programovací jazyk) - Sawzall (programming language) - Wikipedia
![]() | tento článek potřebuje další citace pro ověření.Dubna 2011) (Zjistěte, jak a kdy odstranit tuto zprávu šablony) ( |
Vývojář | |
---|---|
Poprvé se objevil | 2003 |
Licence | Licence Apache 2.0 |
webová stránka | kód |
Sawzall je procesní specifické pro doménu programovací jazyk, který používá Google zpracovat velký počet jednotlivců log evidence. Sawzall byl poprvé popsán v roce 2003,[1] a běh szl byl otevřen v srpnu 2010.[2] Nicméně, protože MapReduce agregátory tabulek nebyly uvolněny,[3] modul runtime s otevřeným zdrojovým kódem není užitečný pro rozsáhlou analýzu dat více souborů protokolu z police. Sawzall byl nahrazen Lingem (přihlaste se Jít ) pro většinu účelů v rámci Google.[4]
Motivace
Protokoly serveru Google jsou uloženy jako velké sbírky záznamů (Vyrovnávací paměti protokolu ), které jsou rozděleny na mnoho disků uvnitř GFS. Aby bylo možné provádět výpočty zahrnující protokoly, mohou inženýři psát MapReduce programy v C ++ nebo Java. Programy MapReduce je třeba kompilovat a mohou být podrobnější, než je nutné, takže psaní programu pro analýzu protokolů může být časově náročné. Aby bylo snazší psát rychlé skripty, Rob Pike et al. vyvinuli jazyk Sawzall. Skript Sawzall běží ve fázi Map MapReduce a „vydává“ hodnoty do tabulek. Poté fáze Reduce (o kterou se programátor skriptů nemusí zajímat) agreguje tabulky z více běhů do jedné sady tabulek.
V současné době byl otevřen pouze zdrojový jazyk (který spouští skript Sawzall jednou přes jeden vstup); podpůrný program postavený na MapReduce nebyl vydán.[3]
Funkce
Mezi zajímavé funkce patří:
- Skript Sawzall má jediný vstup (záznam protokolu) a může být vydáván pouze emitováním do tabulek. Skript nesmí mít žádné další vedlejší účinky.
- Skript může definovat libovolný počet výstupních tabulek. Typy tabulek zahrnují:
sbírka
šetří každou emitovanou hodnotusoučet
uloží součet každé emitované hodnotymaximum (n)
ukládá pouze nejvyšší hodnoty n na danou hmotnost.
- Kromě toho existuje několik typů statistických tabulek, které poskytují nepřesné výsledky. Čím vyšší je parametr n, tím přesnější jsou odhady.
vzorek (n)
dává náhodný vzorek n hodnot ze všech emitovaných hodnotkvantil (n)
vypočítá kumulativní rozdělení pravděpodobnosti daných čísel.nahoře (n)
udává n hodnot, které jsou pravděpodobně nejčastější z emitovaných hodnot.jedinečný (n)
odhaduje počet emitovaných jedinečných hodnot.
Design Sawzall upřednostňuje účinnost a jednoduchost motoru před výkonem:
- Sawzall je staticky napsán a motor zkompilovává skript x86 před spuštěním.
- Sawzall podporuje seznamy složených datových typů, mapy a struktury. Neexistují však žádné odkazy ani ukazatele. Všechna přiřazení a argumenty funkcí vytvářejí kopie. To znamená, že rekurzivní datové struktury a cykly jsou nemožné.
- Stejně jako C mohou funkce upravovat globální proměnné a místní proměnné, ale nejsou uzávěry.
Sawzallův kód
Tento kompletní program Sawzall načte vstup a vytvoří tři výsledky: počet záznamů, součet hodnot a součet čtverců hodnot.
count: table sum of int; total: table sum of float; sum_of_squares: table sum of float; x: float = input; emit count <- 1; emit total <- x; emit sum_of_squares <- x * x;
Viz také
- Prase - podobný nástroj a jazyk pro použití s Windows Apache Hadoop
- Pila (software)
Reference
- ^ Rob Pike, Sean Dorward, Robert Griesemer, Sean Quinlan. Interpretace dat: paralelní analýza se Sawzallem
- ^ Sawzallův open source projekt na Google Code.
- ^ A b Diskuse o tom, které části Sawzall jsou open-source.
- ^ „Replacing Sawzall“. 2015-12-04. Citováno 2018-06-18.
Další čtení
- S. Ghemawat, H. Gobioff, S.-T. Leung, Souborový systém Google, in: 19. ACM Symposium on Operating Systems Principles, Proceedings, 17 ACM Press, 2003, pp. 29–43.