An introduction to the theory of lists
Proceedings of the NATO Advanced Study Institute on Logic of programming and calculi of discrete design
Why functional programming matters
The Computer Journal - Special issue on Lazy functional programming
Programming parallel algorithms
Communications of the ACM
Algebra of programming
Haskell: the craft of functional programming
Haskell: the craft of functional programming
Models and languages for parallel computation
ACM Computing Surveys (CSUR)
ICFP '98 Proceedings of the third ACM SIGPLAN international conference on Functional programming
Communications of the ACM
Fast parallel sorting algorithms
Communications of the ACM
The Gamma Database Machine Project
IEEE Transactions on Knowledge and Data Engineering
Information Sciences—Applications: An International Journal
Functional Programming with Bananas, Lenses, Envelopes and Barbed Wire
Proceedings of the 5th ACM Conference on Functional Programming Languages and Computer Architecture
Calculating Functional Programs
Revised Lectures from the International Summer School and Workshop on Algebraic and Coalgebraic Methods in the Mathematics of Program Construction
Parallelizing Conditional Recurrences
Euro-Par '96 Proceedings of the Second International Euro-Par Conference on Parallel Processing - Volume I
Systematic Efficient Parallelization of Scan and Other List Homomorphisms
Euro-Par '96 Proceedings of the Second International Euro-Par Conference on Parallel Processing-Volume II
Routing, merging and sorting on parallel models of computation
STOC '82 Proceedings of the fourteenth annual ACM symposium on Theory of computing
SOSP '03 Proceedings of the nineteenth ACM symposium on Operating systems principles
A tutorial on the universality and expressiveness of fold
Journal of Functional Programming
A pointless derivation of radix sort
Journal of Functional Programming
Common Lisp: The Language
ACM Transactions on Programming Languages and Systems (TOPLAS)
Interpreting the data: Parallel analysis with Sawzall
Scientific Programming - Dynamic Grids and Worldwide Computing
MapReduce: simplified data processing on large clusters
OSDI'04 Proceedings of the 6th conference on Symposium on Opearting Systems Design & Implementation - Volume 6
Towards Efficient MapReduce Using MPI
Proceedings of the 16th European PVM/MPI Users' Group Meeting on Recent Advances in Parallel Virtual Machine and Message Passing Interface
Axel: a heterogeneous cluster with FPGAs and GPUs
Proceedings of the 18th annual ACM/SIGDA international symposium on Field programmable gate arrays
Computer Languages, Systems and Structures
Semi-join computation on distributed file systems using map-reduce-merge model
Proceedings of the 2010 ACM Symposium on Applied Computing
Assigning tasks for efficiency in Hadoop: extended abstract
Proceedings of the twenty-second annual ACM symposium on Parallelism in algorithms and architectures
Parallelizing multiple group-by query in share-nothing environment: a MapReduce study case
Proceedings of the 19th ACM International Symposium on High Performance Distributed Computing
Self-replicating objects for multicore platforms
ECOOP'10 Proceedings of the 24th European conference on Object-oriented programming
Proceedings of the sixth workshop on Declarative aspects of multicore programming
Coordination and concurrency in multi-engine prolog
COORDINATION'11 Proceedings of the 13th international conference on Coordination models and languages
Factorization-based lossless compression of inverted indices
Proceedings of the 20th ACM international conference on Information and knowledge management
Executing multiple group by query using mapreduce approach: implementation and optimization
GPC'10 Proceedings of the 5th international conference on Advances in Grid and Pervasive Computing
A universal calculus for stream processing languages
ESOP'10 Proceedings of the 19th European conference on Programming Languages and Systems
Panacea: towards holistic optimization of MapReduce applications
Proceedings of the Tenth International Symposium on Code Generation and Optimization
Anatomy of a web-scale resale market: a data mining approach
Proceedings of the 22nd international conference on World Wide Web
Hi-index | 0.00 |
Google's MapReduce programming model serves for processing large data sets in a massively parallel manner. We deliver the first rigorous description of the model including its advancement as Google's domain-specific language Sawzall. To this end, we reverse-engineer the seminal papers on MapReduce and Sawzall, and we capture our findings as an executable specification. We also identify and resolve some obscurities in the informal presentation given in the seminal papers. We use typed functional programming (specifically Haskell) as a tool for design recovery and executable specification. Our development comprises three components: (i) the basic program skeleton that underlies MapReduce computations; (ii) the opportunities for parallelism in executing MapReduce computations; (iii) the fundamental characteristics of Sawzall's aggregators as an advancement of the MapReduce approach. Our development does not formalize the more implementational aspects of an actual, distributed execution of MapReduce computations.