Sawzall (язык программирования)
Эта статья нуждается в дополнительных цитатах для проверки . ( апрель 2011 г. ) |
Разработчик | |
---|---|
Впервые появился | 2003 год |
Лицензия | Лицензия Апач 2.0 |
Веб-сайт | код |
Sawzall — это процедурный предметно-ориентированный язык программирования , используемый Google для обработки большого количества отдельных записей журнала . Созалл был впервые описан в 2003 году. [1] а среда выполнения szl была открыта в августе 2010 года. [2] Однако, поскольку агрегаторы таблиц MapReduce еще не выпущены, [3] среда выполнения с открытым исходным кодом бесполезна для крупномасштабного анализа данных нескольких готовых файлов журналов. Sawzall был заменен на Lingo (логи в Go ) для большинства целей в Google. [4]
Мотивация [ править ]
Журналы сервера Google хранятся в виде больших коллекций записей ( буферов протокола ), которые распределены по множеству дисков внутри GFS . Чтобы выполнять вычисления с использованием журналов, инженеры могут писать программы MapReduce на C++ или Java. Программы MapReduce необходимо компилировать, и они могут быть более подробными, чем необходимо, поэтому написание программы для анализа журналов может занять много времени. Чтобы упростить написание быстрых сценариев, Роб Пайк и др. разработал язык Sawzall. Сценарий Sawzall выполняется на этапе Map в MapReduce и «выдает» значения в таблицы. Затем на этапе сокращения (о котором автору сценария не нужно беспокоиться) таблицы из нескольких запусков объединяются в единый набор таблиц.
В настоящее время с открытым исходным кодом открыта только среда выполнения языка (которая запускает сценарий Sawzall один раз для одного ввода); вспомогательная программа, построенная на MapReduce, не была выпущена. [3]
Особенности [ править ]
Некоторые интересные функции включают в себя:
- Сценарий Sawzall имеет один вход (запись журнала) и может выводить данные только путем отправки в таблицы. Скрипт не может иметь других побочных эффектов.
- Скрипт может определить любое количество выходных таблиц. Типы таблиц включают в себя:
collection
сохраняет каждое выданное значениеsum
сохраняет сумму каждого излучаемого значенияmaximum(n)
сохраняет только самые высокие n значений заданного веса.
- Кроме того, существует несколько типов статистических таблиц, которые дают неточные результаты. Чем выше параметр n, тем точнее оценки.
sample(n)
дает случайную выборку из n значений из всех выданных значенийquantile(n)
вычисляет кумулятивное распределение вероятностей заданных чисел.top(n)
дает n значений, которые, вероятно, являются наиболее частыми из выдаваемых значений.unique(n)
оценивает количество выданных уникальных значений.
В конструкции Sawzall предпочтение отдается эффективности и простоте двигателя, а не мощности:
- Sawzall является статически типизированным, и движок компилирует сценарий в x86 перед его запуском.
- Sawzall поддерживает списки составных типов данных , карты и структуры. Однако нет никаких ссылок или указателей. Все присваивания и аргументы функций создают копии. Это означает, что рекурсивные структуры данных и циклы невозможны.
- Как и C, функции могут изменять глобальные и локальные переменные , но не являются замыканиями.
Код Sawzall [ править ]
Эта полная программа Sawzall прочитает входные данные и выдаст три результата: количество записей, сумму значений, и сумма квадратов значений.
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;
См. также [ править ]
- Pig — аналогичный инструмент и язык для использования с Apache Hadoop.
- Лесопилка (программное обеспечение)
Ссылки [ править ]
- ^ Роб Пайк, Шон Дорвард, Роберт Гриземер, Шон Куинлан. Интерпретация данных: параллельный анализ с Sawzall
- ^ Проект с открытым исходным кодом Sawzall в Google Code .
- ↑ Перейти обратно: Перейти обратно: а б Обсуждение того, какие части Sawzall имеют открытый исходный код .
- ^ «Замена Созалла» . 04.12.2015 . Проверено 18 июня 2018 г.
Дальнейшее чтение [ править ]
- С. Гемават, Х. Гобиофф, С.-Т. Люнг, Файловая система Google, в: 19-й симпозиум ACM по принципам операционных систем, материалы, 17 ACM Press, 2003, стр. 29–43.