基于C++11的分布式实时处理系统Hurricane

“在分布式计算系统中,最早也是最有名的就是Hadoop。Hadoop利用MapReduce模型让我们开始有能力将大量的数据分布在不同的廉价机器集群中完成运算。但是Hadoop的致命问题是必须将所有数据处理完成后才能得到最后的输出,但如果是在视频流这种处理场景下,实时性非常重要,Hadoop完全无法满足要求,因为我们无法将所有数据处理完然后返回结果。”

这种情况下Storm应运而生。Apache Storm采用了类似的计算模型,将所有的处理流程划分成一个个的组件,然后将这些组件组合成一台永不停息的网络机器,随时等待数据流入,处理完数据马上返回对应的结果,有效地解决了大部分问题。而最近开源的Twitter Heron则是Apache Storm的后继者(或者说是强有力的改进版),采用了和Storm一样模型和接口,但在平台架构、易用性和性能上都做出了非常大的改进,相信不久之后就能成为Storm的有力竞争者。

但这些计算系统基本都局限在一个通用的计算平台上,在应付某些特定问题上需要开发者做出相当多的工作,比如机器学习。目前机器学习技术得到了越来越广泛的应用,在图像处理、模式识别、决策支持等领域发挥了很大作用,已经成为了最重要的计算机技术之一。近几年非常火的深度学习(Deep Learning)更将机器学习提高了一个层次,而深度学习对浮点数的运算性能提出了非常高的要求。这么冷不丁的把深度学习这个概念摆上来,可能有些突兀,我们这里就先了解一下不久之前大热的Google AlphaGo,AlphaGo使用了大量的机器学习算法,包括传统的机器学习算法和深度学习,其中深度学习是提高AlphaGo机器学习能力的关键。因此,分布式的多机多GPU运算很可能会成为一个新趋势。而就目前来说,除了这些通用计算系统以外,在深度学习中,大家会使用特殊的机器学习框架来完成训练等计算任务,但大多数此类框架在分布式上还并不成熟(比如Caffe和MXNet等),要不就是难以将训练结果直接用到产品中,往往需要大量的裁剪和移植工作。而许多框架也与CUDA完全耦合,完全没有CPU和AMD显卡的市场,而在某些特定应用场景,这是不切实际的。

Hurricane实时处理系统(目前还处于原型和初期开发阶段,最新版本号为0.5)是一个使用C++开发的分布式实时计算系统,其架构上仿效了Apache Storm,保持了接口的高度一致,并期望能够在实时数据处理、机器学习训练预处理和高性能运算方面做些工作。同时,为了应付新的应用场景,比如VR的云渲染问题,正计划开发一个Hurricane的子项目——sewedBLAS——这是一个BLAS(Basic Linear Algebra Subprograms,即基础线性代数子程序)库的高层抽象,希望整合现有BLAS库,比如使用CPU的MKL/OpenBLAS,使用GPU的CUDA(来自于NVIDIA)和ACML,构建一个易于使用、跨平台的高性能线性代数库,并与Hurricane进行原生C++层级的深度整合,期望能够在分布式和科学计算、深度学习、VR渲染中找到一个切合点,减少从科研到产品的转换难度。与此同时,还希望能够帮助开发者更轻松地提高工作单元的运算能力。

Hurricane实时处理系统v0.5的源码可以访问http://github.com/samblg/hurricane,其中的设计细节、架构设计以及思想可以看书《分布式实时处理系统:原理、架构和实现》,由机械工业出版社华章于2016年7月上市。本书由多位大数据专家联袂推荐,资深研发工程师撰写,参透大规模分布式实时处理系统。抽丝剥茧,从概念、原理到分布式实时计算框架实现,兼顾理论与实践,带领读者逐步实现一个高性能、基于C++11的分布式实时处理系统Hurricane。

你可能感兴趣的:(基于C++11的分布式实时处理系统Hurricane)