Pig is a data flow language and execution environment for exploring very large datasets on Hadoop clusters. Pig scripts are written using a scripting language that allows for rapid prototyping without compilation. Pig provides high-level operations like FILTER, FOREACH, GROUP, and JOIN that allow users to analyze data without writing MapReduce programs directly. The core abstraction in Pig is the relation, which is analogous to a table. Relations can be nested using complex data types like tuples and bags. Users can extend Pig's functionality using User Defined Functions. Key operations in Pig like GROUP and JOIN introduce "map-reduce barriers" that require a MapReduce job to be executed.