Runtime Optimizations for Large-Scale Data Analytics
MetadataShow full item record
Large-scale data analytics is key to modern science, technology, and business development. Big data systems have emerged rapidly in recent years, but modern data analytics remains challenging due to application requirements. First, users need to analyze vasts amount of data generated from various sources; Second, analysis efficiency is critical in many scenarios; Third, most big data systems are built on top of new operating environments, such as clusters and cloud services, where resource management is important; Fourth, high-level, feature-rich programming interfaces are required to support a high variety of data and workload types. In this dissertation, we present methods to improve system efficiency for large-scale data analytics. We investigate the problem in the context of three research projects, which address the same key problem: optimization of analytical query execution, in different ways. Specifically, these projects focus on runtime optimzation, which considers not only static information that is available prior to the actual execution, but more importantly, runtime information. We demonstrate, from these projects, that runtime optimzation can significantly improve overall system performance: it can lower query execution times, improve resource utilization, and reduce application failures. We first present a full-stack solution for recursive relational query evaluation in shared-nothing engines. Users express their analysis using a high-level declarative language (a subset of Datalog with aggregate functions). Queries are then compiled into distributed query plans with termination guarantee. Multiple execution models for iterative queries are supported, including synchronous, asynchronous, and different processing priorities. Our evaluation shows that application properties determine which model yields the fastest query execution time. Next, we present ElasticMem, an approach for automatic and elastic memory management for cloud data analytics applications. In clouds or clusters, a resource manager schedules applications in containers with hard memory limits, which requires accurate application memory usage estimation before launching containers. However, memory estimation for large-scale analytical applications is difficult, and inappropriate estimate can lead to failures and performance degredation. ElasticMem avoids pre-execution memory usage estimation by elastically allocating memory across containers during runtime. Experiments show that ElasticMem outperforms static memory allocation, leading to fewer query failures, lower garbage collection overheads, and lower query times. Lastly, we present Deluceva, a system that dynamically optimizes neural network inference for video analytics. Many video analysis approaches apply neural network models trained on images directly to each video frame. While being easy to develop, these approaches do not leverage the rich temporal redundancy in videos, which can be used to further reduce model inference time. Deluceva accelerates model inference by dynamically selecting sufficiently significant temporal deltas to process for each video frame. Evaluation on three models and six videos shows that it can achieve significant performance gains with low errors.