Finding the k nearest neighbors (k-nns) of a given vertex in a graph has many applications such as link prediction, keyword search, and image tagging. An established measure of vertex-proximity in graphs is the Personalized Page Rank (ppr) score based on random walk with restarts. Since ppr scores have long-range correlations, computing them accurately and efficiently is challenging when the graph is too large to fit in main memory, especially when it also changes over time. In this work, we propose an efficient algorithm to answer ppr-based k-nn queries in large time-evolving graphs. Our key approach is to use a divide-and-conquer framework and efficiently compute answers in a distributed fashion. We represent a given graph as a collection of dense vertex-clusters with their inter connections. Each vertex-cluster maintains certain information related to internal random walks and updates this information as the graph changes. At query time, we combine this information from a small set of relevant clusters and compute ppr scores efficiently. We validate the effectiveness of our method on large real-world graphs from diverse domains. To the best of our knowledge, this is one of the few works that simultaneously addresses answering k-nn queries in possibly disk-resident and time-evolving graphs.
We consider a distributed stream processing application, expressed as a data-flow graph with operators as vertices connected by streams and deployed over a cluster of compute nodes, where a small subset of the operators are often the performance bottlenecks for the entire application. In cases where a bottleneck operator is stateless, it is obvious that parallelization by splitting the incoming stream among multiple parallel operators deployed on different nodes can help improve performance. However, it is not so obvious when the bottleneck operator is stateful. In such a case, parallelization is much more challenging as it often requires a state sharing mechanism for the parallel operators. Moreover, it incurs additional overheads of required accesses by the parallel operators to shared state and synchronization constructs. In this paper, we propose a parallelization framework for stateful stream processing operators. The framework not only addresses issues related to the system model and support for operator parallelization, but also delves into the theoretical details that model the suitability of parallelization and the optimal degree of parallelism. We have implemented and evaluated our framework in the context of IBM's System S distributed stream processing middleware. While microbenchmarks are used to validate the proposed theoretical model, a parallelized implementation of a moving KNN application is used for the purpose of evaluation.
A call detail record (CDR), is a data record produced by a telephone exchange or other telecommunications equipment documenting the details of a phone call that passed through the exchange or equipment. Telecommunications companies (or "telcos") use CDRs for purposes of billing, extracting business intelligence, fraud detection, etc. However, they face a Big Data challenge -- many telcos get billions of CDRs per day, and are unable to keep up with these data rates. In this paper, we describe a stream processing solution for processing CDRs that allows scaling the processing to handle 6 billion CDRs per day for a certain telco. We describe the stream processing application (running on the IBM InfoSphere Streams platform) that performs CDR mediation and analysis in real-time. We also describe various business and operational constraints and the legacy software ecosystem - seldom discussed in academic gatherings - that make the problem more challenging than originally meets the eye. The outcome of our work is a highly configurable and scalable CDR processing stream with several functional and performance capabilities that are a first for the telecommunication industry.
Stream processing applications are deployed as continuous queries that run from the time of their submission until their cancellation. This deployment mode limits developers who need their applications to perform runtime adaptation, such as algorithmic adjustments, incremental job deployment, and application-specific failure recovery. Currently, developers do runtime adaptation by using external scripts and/or by inserting operators into the stream processing graph that are unrelated to the data processing logic. In this paper, we describe a component called orchestrator that allows users to write routines for automatically adapting the application to runtime conditions. Developers build an orchestrator by registering and handling events as well as specifying actuations. Events can be generated due to changes in the system state (e.g., application component failures), built-in system metrics (e.g., throughput of a connection), or custom application metrics (e.g., quality score). Once the orchestrator receives an event, users can take adaptation actions by using the orchestrator actuation APIs. We demonstrate the use of the orchestrator in IBM's System S in the context of three different applications, illustrating application adaptation to changes on the incoming data distribution, to application failures, and on-demand dynamic composition.
A call detail record (CDR), is a data record produced by a telephone exchange or other telecommunications equipment documenting the details of a phone call that passed through the exchange or equipment. Telecommunications companies (or "telcos") use CDRs for purposes of billing, extracting business intelligence, fraud detection, etc. However, they face a Big Data challenge -- many telcos get billions of CDRs per day, and are unable to keep up with these data rates. In this paper, we describe a stream processing solution for processing CDRs that allows scaling the processing to handle 6 billion CDRs per day for a certain telco. We describe the stream processing application (running on the IBM InfoSphere Streams platform) that performs CDR mediation and analysis in real-time. We also describe various business and operational constraints and the legacy software ecosystem - seldom discussed in academic gatherings - that make the problem more challenging than originally meets the eye. The outcome of our work is a highly configurable and scalable CDR processing stream with several functional and performance capabilities that are a first for the telecommunication industry.
Data stream processing applications are often expressed as data flow graphs, composed of operators connected via streams. This structured representation provides a simple yet powerful paradigm for building large-scale, distributed, high-performance applications. However, there are many tasks that require sharing data across operators, and across operators and the runtime using a less structured mechanism than point-to-point data flows. Examples include updating control variables, sending notifications, collecting metrics, building collective models, etc. In this paper we describe CAPSULE, which fills this gap. CAPSULE is a code generation and runtime framework that offers an easy to use and highly flexible framework for developers to realize shared variables (CAPSULE term for shared state) by specifying a data structure (at the programming-language level), and a few associated configuration parameters that qualify the expected usage scenario. Besides the easy of use and flexibility, CAPSULE offers the following important benefits: (1) Custom Code Generation - CAPSULE makes use of user-specified configuration parameters and information from the runtime to generate shared variable servers that are tailored for the specific usage scenario, (2) Composability - CAPSULE supports deployment time composition of the shared variable servers to achieve desired levels of scalability, performance and fault-tolerance, and (3) Extensibility - CAPSULE provides simple interfaces for extending the CAPSULE framework with more protocols, transports, caching mechanisms, etc. We describe the motivation for CAPSULE and its design, report on its implementation status, and then present experimental results.
Management is an important challenge for future enterprises. Previous work has addressed platform management (e.g., power and thermal management) separately from virtualization management (e.g., virtual machine (VM) provisioning, application performance). Coordinating the actions taken by these different management layers is important and beneficial, for reasons of performance, stability, and efficiency. Such coordination, in addition to working well with existing multi-vendor solutions, also needs to be extensible to support future management solutions potentially operating on different sensors and actuators. In response to these requirements, this paper proposes vManage, a solution to loosely couple platform and virtualization management and facilitate coordination between them in data centers. Our solution is comprised of registry and proxy mechanisms that provide unified monitoring and actuation across platform and virtualization domains, and coordinators that provide policy execution for better VM placement and runtime management, including a formal approach to ensure system stability from inefficient management actions. The solution is instantiated in a Xen environment through a platform-aware virtualization manager at a cluster management node, and a virtualization-aware platform manager on each server. Experimental evaluations using enterprise benchmarks show that compared to traditional solutions, vManage can achieve additional power savings (10% lower power) with significantly improved service-level guarantees (71% less violations) and stability (54% fewer VM migrations), at low overhead.
Kun-Lung Wu合作论文数Thomas J. Watson Research Center, IBM Research17
Greg Eisenhauer合作论文数Center for Experimental Research in Computer Systems, College of Computing, Georgia Institute of Technology;School of Computer Science, College of Computing, Georgia Institute of Technology10
R. Khandekar合作论文数the department of Data Intensive Systems and Analytics at IBM T.J. Watson research center4