著者
中田 秀基 井上 辰彦 工藤 智宏
雑誌
情報処理学会論文誌プログラミング(PRO) (ISSN:18827802)
巻号頁・発行日
vol.4, no.3, pp.94-94, 2011-06-29

Sawzallは,Google が 2006 年に発表した大容量データの並列バッチ処理に適した言語である.Sawzall の計算モデルは MapReduce 型の分散演算であるが,リダクション操作を組み込みの Aggregator に限定することで,エンドユーザによる容易な記述を可能にしている.我々は現在開発中の並列データ処理機構上の言語処理系を開発するための 1 ステップとして,Scala 言語による Sawzall 言語のサブセット処理系を実装した.文法やセマンティクスに関しては明確な定義がなかったため,2006 年の論文をベースに推測した.その結果,最近公開された Sawzall 処理系とは機能的に若干の相違がある.構文解析にScala言語の Parser Combinator を用いることで,処理系の記述量が削減できた.現在の実行対象処理系は Hadoop である. Hadoop の Mapper 上で言語インタプリタを動作させ,Reducer 上では我々の提供する Aggregater を動作させる.Scala は Java VM 上で動作することから,Java で記述される Hadoop 上での実行は容易である.本発表では,本処理系の実装について詳しく述べる.さらに,Hadoop で直接記述した場合と,プログラム量および実行速度の点で比較を行う.比較の結果,プログラム量は大幅に小さくなる一方,実行速度の面でも一定のオーバヘッドがあることが確認された.Sawzall is a script language designed for batch processing of large amount of data, which is introduced by Google in 2006. The processing model of Sawzall is the MapReduce. Sawzall allows programmers only to program 'mappers' to ease the burden. Sawzall provides a set of 'built-in aggregaters', from which programmer choose mapping function. We are developing distributed data processing system for large scaled data. As a part of the project, we have iplemented an interpreter for Sawzall subset in Scala language. We employed paser combinator for lexical parsing. Currently, the system is running on Hadoop. In the paper, we provide detailed implementation of the system. We also evaluated the system with naked Hadoop in terms of program size and execution speed. We confirmed that, with Sawzall, program size is much smaller, while there are certain overhead in terms of execution speed.