Sawzall(프로그래밍 언어)

Sawzall (programming language)
쏘우잘
개발자구글
처음 등장한2003년; 19년 전(2003년)
면허증.Apache 라이센스 2.0
웹 사이트code.google.com/archive/p/szl/

Sawzall은 절차 도메인별 프로그래밍 언어로, Google에서 다수개별 로그 레코드를 처리하는 데 사용됩니다.Sawzall은 2003년에 [1]처음 기술되었으며, szl 런타임은 2010년 [2]8월에 오픈 소스되었습니다.그러나 MapReduce 테이블 애그리게이터는 [3]출시되지 않았기 때문에 오픈 소스 런타임은 기성 여러 로그 파일의 대규모 데이터 분석에는 유용하지 않습니다.소잘은 구글 [4]내에서 대부분의 목적을 위해 Lingo(로그인고)로 대체되었다.

동기

Google의 서버 로그는 GFS 의 여러 디스크에 분할된 대규모 레코드 모음(프로토콜 버퍼)으로 저장됩니다.로그와 관련된 계산을 수행하기 위해 엔지니어는 C++ 또는 Java에서 MapReduce 프로그램을 작성할 수 있습니다.MapReduce 프로그램을 컴파일해야 하며 필요 이상으로 상세할 수 있습니다.따라서 로그를 분석하기 위한 프로그램을 작성하는 것은 시간이 걸릴 수 있습니다.빠른 스크립트 작성을 용이하게 하기 위해 Rob Pike 은 Sawzall 언어를 개발했습니다.Sawzall 스크립트는 MapReduce의 Map 단계 내에서 실행되며 값을 테이블에 "emit"합니다.다음으로 Reduce 단계(스크립트 작성자가 걱정할 필요가 없음)에서는 여러 실행의 테이블을 단일 테이블세트로 집약합니다.

현재 언어 런타임(Sawzall 스크립트를 한 번 입력으로 실행)[3]만 오픈 소싱되어 있으며 MapReduce에 구축된 지원 프로그램은 출시되지 않았습니다.

특징들

몇 가지 흥미로운 기능은 다음과 같습니다.

  • Sawzall 스크립트에는 단일 입력(로그 레코드)이 있어 테이블에 송신하는 것만으로 출력할 수 있습니다.스크립트에는 다른 부작용이 없습니다.
  • 스크립트는 임의의 수의 출력 테이블을 정의할 수 있습니다.테이블 유형은 다음과 같습니다.
    • collection방출되는 모든 값 저장
    • sum방출된 모든 값의 합계를 저장합니다.
    • maximum(n)는 소정의 무게에 대해 상위n개의 값만 저장합니다.
  • 또한 부정확한 결과를 제공하는 몇 가지 통계 테이블 유형이 있습니다.모수 n이 클수록 추정치가 더 정확합니다.
    • sample(n)방출된 모든 값에서 n개의 값의 랜덤샘플을 제공합니다.
    • quantile(n)지정된 숫자의 누적 확률 분포를 계산합니다.
    • top(n)는 아마도 방출된 값 중 가장 빈도가 높은n개의 값을 나타냅니다.
    • unique(n)는, 방출되는 일의의 값의 수를 추정합니다.

Sawzall의 디자인은 동력보다 효율성과 엔진의 단순성을 선호합니다.

  • Sawzall은 정적으로 입력되며 엔진은 스크립트를 실행하기 전에 x86으로 컴파일합니다.
  • Sawzall은 복합 데이터 유형 목록, 맵 및 구조를 지원합니다.그러나 참조나 포인터는 없습니다.모든 할당 및 함수 인수에 의해 복사본이 생성됩니다., 재귀적인 데이터 구조 및 주기는 불가능합니다.
  • C와 마찬가지로 함수도 전역 변수와 로컬 변수를 수정할 수 있지만 폐쇄는 아닙니다.

소잘 코드

이 완전한 Sawzall 프로그램은 입력을 읽고 세 가지 결과를 생성합니다. 레코드 수, 값의 합계, 값의 제곱합입니다.

카운트: 표합 int; 합계: 표합 플로트; 표합_of_float: 표합 플로트; x: 플로트= 입력; 방출 카운트<- x; 방출 합계<- x;

「 」를 참조해 주세요.

레퍼런스

  1. ^ 롭 파이크, 숀 도워드, 로버트 그리시머, 숀 퀸랜입니다데이터 해석: Sawzall을 사용한 병렬 분석
  2. ^ 구글 코드에 있는 쏘잘의 오픈 소스 프로젝트.
  3. ^ a b Sawzall의 어떤 부분이 오픈 소스인지에 대한 논의.
  4. ^ "Replacing Sawzall". 2015-12-04. Retrieved 2018-06-18.

추가 정보

  • S. Ghemawat, H. Gobioff, S.-T. Leung, Google 파일 시스템, 운영체제 원리, 절차, 17 ACM Press, 2003, 페이지 29~43에 수록되어 있습니다.

외부 링크