Abstract
More than a decade ago, startups, companies, research groups or individuals had to purchase hardware and set it up for each task. This approach made sense when the utility and the requirement of the hardware were fixed. However, this does not make sense in today’s growing market, since there is a continuous increase or decrease in hardware’s demands. Often, people require large amounts of resources for short duration of time (like in the case of scientific computation). In other cases, people require the ability to scale up and down the number of systems based on the demand rendering dedicated systems unprofitable. Resources can be of different types such as computation(CPU), storage(distributed file system storage), network, databases, etc.
Cloud computing opens up a whole new paradigm where individuals or companies can rent all the resources they need and dispose them off later after the work is done. In this process, they are charged for exactly what they use and not a penny more. This is therefore a highly flexible model, since one can add or reduce the resources on the fly according to the requirements and be charged accordingly. With data centers spread across the globe and the use of cloud computing, we can now localize resources closer to the end user to improve performance and experience. Cloud Computing is thus highly profitable as it is based on utilization of commodity hardware. The systems are heterogeneous in nature as they have different memory performance, different storage capabilities, different network capabilities etc. In today’s world, we cannot have homogeneous systems as they will not be able to provide the flexibility that we require. For example, if some nodes in the cluster are over-utilized and some disks in the storage cluster are under-utilized, there can be a lot of scenarios where homogeneous systems won’t work due to the dynamic nature of our workloads or tasks. We therefore need to develop systems that are cognizant of this inherent heterogeneity and can adapt to the constantly changing environment.
In our work, we are focused on allocating resources for workloads which are short lived and mainly
used for batch processing. During a computing process, workload is the amount of processing that the computer has been given to do at a given time. So our main focus is to allocate resources from a specific cloud provider for handling these dynamic workloads. These assignments could be on the basis of price, utilization, individual cloud characteristics, efficiency/performance etc. We try to use all these factors to design various techniques for the assignment of different types of heterogeneous scenarios. Below are the three scenarios of heterogeneous cloud systems for which we have designed frameworks/algorithms to assign workloads:
• In the first scenario, we propose MultiStack, which is a big data orchestration platform for deploying big data jobs across the hybrid cloud environment. The specific architecture elaborated in this paper uses Amazon Web Services as the public cloud provider and Openstack as the private cloud framework. The proposed framework aims at reducing the job completion time of workloads along with decreasing the cost using Spot Instance provisioning instead of on-demand provisioning. In this case, we try to assign an optimal number of instances (cluster of computing resources) to the given workload along with cost minimization.
• In the second scenario, we propose a solution for optimal IO Workload assignment with respect to backend storage (Software Defined Storage) using statistical modelling to estimate measures of performance such as Throughput, IOPS, et al in that storage system. The proposed system uses support vector regression to estimate the performance of individual IO Workloads on each available Software Defined Storage(SDS) system for optimal assignment. We demonstrate our solution in a heterogeneous environment comprising of HDFS, GlusterFS, and Ceph. Therefore, in this case, we try to increase the efficiency by choosing/assigning an optimal storage environment for any given type of workload.
• In the third scenario, we try to provide optimal assignment of IO workload with respect to compute and storage for a multi-cloud heterogeneous systems. We try to achieve and represent “optimality” by designing a pipeline model which selects a compute and a storage class for a given workload to maximize efficiency and then apply discount schemes provided by the public cloud providers for cost minimization. We also use some input parameters provided by the user to fine tune the cost minimization procedure. We have designed these methods and algorithms using the following three public cloud providers: Amazon Web Services, Microsoft Azure and Google Cloud Platform.
We expand on these different scenarios and try to build different methods to solve each of them. Through this work, we hope to help individuals, startups, researc