ABSTRACT

The Internet of Things (IoT) is an upcoming technology that brings ubiquitous connectivity, computing, and communication. Real-time industrial applications utilize IoT for better business solutions. According to IT experts, by 2025, there will be seamless and spontaneous merger of everyday technologies with humans that will fuse the human mind and machine instantly and automatically. IoT should be capable of interconnecting billions or trillions of heterogeneous objects, such as, PCs, smart phones, tablets, Wi-Fi-enabled sensors, wearable devices, and household appliances through the internet. There are many applications such as smart cities, homes, transportation, energy, and smart environment that promise easy, safe, and smart human life. All these applications produce enormous amounts of data every second. The data generated from IoT devices can be used to identify the cause for certain events and to predict the future if analyzed using analytical tools. However, the challenge lies in collection, management, and analysis of huge volume of sensor data. Data that is too big (volume), too fast (velocity), and too diverse (variety) is called big data. Deriving knowledge and insights from big data in the context of IoT is referred to as big data analytics.

The data generated by IoT devices are collected, aggregated, integrated, and analyzed through big data analytical programming models (BDPMs). BDPMs enable programmers to focus on writing data-driven parallel programs that can be executed on large-scale distributed environments. A variety of BDPMs are introduced with different focus and advantages. This chapter discusses big data programming models that are suitable for IoT data. The various programming models explored in this chapter include MapReduce, functional models for programming, SQL-based models for querying, actor models for real-time transaction processing, statistical and analytical models to draw insights from the data, scheduling models to control data flow, computing framework for massive scientific computation and large-scale graph processing, models for complex data transformation and high-level domain-specific language. Thus, the readers of this chapter will gain an understanding of big data programming models and choose appropriate ones for their applications.