Taking inspiration from higher-order functions in functional programming, MapReduce provides an abstraction at the point of these two operations.
the programmer defines a "mapper" and a "reducer" with the following signatures: Key-value pairs form the basic data structure in MapReduce.