# QoSComm: A Data Flow Allocation Strategy among SDN-Based Data Centers for IoT Big Data Analytics
## 1 Introduction  
In recent years, the Internet of Things (IoT) has evolved as one of the leading technologies which generate a massive amount of data stored in distributed data sources. IoT devices transfer the generated data to big data systems located in distributed data centers for further analysis. Organizations and users can perform all kinds of processing and analysis on the basis of massive IoT data, thus adding to their value [1]. Big data processing and big data applications are shifting the computing paradigms, computing concepts, and treatment of data [2]. Big data analytics (BDA) refers to the strategy of analyzing large volumes of data, or big data. These big data are gathered from a wide variety of sources, including social networks, videos, digital images, sales transaction records, end-user activities, environmental monitoring, sensors (IoT devices), among others. IoT data exhibit four main characteristics, such as large-scale streaming data, heterogeneity, time and space correlation, and high noise data [3]. With the use of BDA, a variety of these IoT data are examined to reveal trends, unseenpatterns, hidden correlations, and new information. BDA in IoT is helping business associations, and other organizations, to achieve a better understanding of data and efficient decision-making [4]. The big data concept is represented by describing its categorization through the three-V model extended to five Vs. (volume, velocity, variety, veracity, and value), with an emphasis on different data generation sources such as IoT devices [5]. The IoT decision-making process uses the BDA results, and the time to get those results becomes a crucial factor in making quick decisions. Therefore, scientists designed and developed BDA to process and analyze large datasets from data centers in the shortest possible time. BDA running jobs in data centers require computing capabilities such as CPU time, storage capacity, RAM, among others, to be able to fulfill their data processing and analysis objective. When working with a large amount of data and running out of resources, they can scale horizontally by adding more computational power from distributed data centers. The MapReduce [6] programming paradigm is one of the most representative BDA. MapReduce provides horizontal scaling to petabytes of data on thousands of compute nodes, a simplified programming model, and a high degree of reliability when failed nodes occur [7]. In MapReduce, the input data are divided into many parts. Each part is then sent to compute nodes that can be located in distributed data centers and finally aggregated according to a specified function. When MapReduce jobs require transferring data between compute nodes located in distributed data centers, the communication network is a factor that can affect the application completion time. Representative BDA running across distributed data centers are:  
1. Intensive computation. Concentrate on data processing and minor communication or fewer data transfers between compute nodes. We consider them a best-effort application. 2. Intensive communication. Need to be in constant communication with compute nodes or at some point will require transferring large volumes of data to compute nodes located in geographically distributed data centers. In this case, the data transfer process is crucial for completion time. We consider them a time-sensitive application. BDA classified as intensive communication are required to have an efficient communication system to be able to complete jobs in the shortest amount of time. Under this scheme, the network architecture used to interconnect data centers becomes critical, and it can impact application performance. In a BDA system, the application scheduler submits jobs to compute nodes that meet their computational requirements without considering adverse network conditions in end-to-end paths unless the network administrator manually configures a QoS policy or specifies a network path per application.