Blaze: Simplified High Performance Cluster Computing

Junhao Li, Hang Zhang
2/4/2019
cs.DCcs.AIcs.LG

Official code: junhao12131/blaze (6 stars, GPL-3.0, last commit 2019-02-18).

Abstract

MapReduce and its variants have significantly simplified and accelerated the process of developing parallel programs. However, most MapReduce implementations focus on data-intensive tasks while many real-world tasks are compute intensive and their data can fit distributedly into the memory. For these tasks, the speed of MapReduce programs can be much slower than those hand-optimized ones. We present Blaze, a C++ library that makes it easy to develop high performance parallel programs for such compute intensive tasks. At the core of Blaze is a highly-optimized in-memory MapReduce function, which has three main improvements over conventional MapReduce implementations: eager reduction, fast serialization, and special treatment for a small fixed key range. We also offer additional conveniences that make developing parallel programs similar to developing serial programs. These improvements make Blaze an easy-to-use cluster computing library that approaches the speed of hand-optimized parallel code. We apply Blaze to some common data mining tasks, including word frequency count, PageRank, k-means, expectation maximization (Gaussian mixture model), and k-nearest neighbors. Blaze outperforms Apache Spark by more than 10 times on average for these tasks, and the speed of Blaze scales almost linearly with the number of nodes. In addition, Blaze uses only the MapReduce function and 3 utility functions in its implementation while Spark uses almost 30 different parallel primitives in its official implementation.

View on arXivView PDF

Code Implementations(1)

junhao12131/blazeOfficial100%
GPL-3.0

High Performance MapReduce-First Cluster Computing

61C, C++Jan 4, 20197 years agoGPL-3.0

Similar Papers

Cite this paper

@article{li2019blaze,
  title  = {Blaze: Simplified High Performance Cluster Computing},
  author = {Junhao Li and Hang Zhang},
  year   = {2019},
  eprint = {1902.01437},
  archivePrefix = {arXiv},
  url    = {https://arxiv.org/abs/1902.01437}
}

Add a badge to your README

Shows whether official code is linked for this paper.

Code of Paper badge
[![Code of Paper](https://codeofpaper.com/badge/1902.01437.svg)](https://codeofpaper.com/paper/1902.01437)

Discussion