Programming Big Data Applications introduces and discusses models, programming frameworks and algorithms to process and analyze large amounts of data. In particular, the book provides an in-depth description of the properties and mechanisms of the main programming paradigms for big data analysis, including MapReduce, workflow, BSP, message passing, and SQL-like. Through programming examples it also describes the most used frameworks for big data analysis like Hadoop, Spark, MPI, Hive and Storm. Each of the different systems is discussed and compared, highlighting their main features, their diffusion (both within their community of developers and among users), and their main advantages and disadvantages in implementing big data analysis applications.