如何判断面向GPU的数据库是否适合你的大数据项目?
2016-08-08 51CTO 编辑:布加迪编译
GPU承诺会彻底改变大数据分析领域,但是它并不是适合每种应用的最佳选择。
Hadoop很酷,Spark很快,但有时候你需要经过优化的硬件,处理越来越庞大的数据工作负载。这正是Kinetica基于的前提,这种内存中数据库充分发挥了大规模分布式图形处理单元(GPU)的强大功能:有望将实时分析性能提升100倍至1000倍。
考虑到如今可用的一堆大数据分析方案,这种承诺让人有点犯晕。但它有点乐观了,因为GPU非常擅长处理依赖高度并行化矩阵数学的工作负载,但是未必适合一系列更广泛的大数据应用。
至少现在是这样。
GPU在大数据领域的崛起
Kinetica(前身是GPUdb)问世已有好几个年头了,由于它可以在大规模部署环境取代甲骨文及其他行业巨头,因而屡获奖项。首先,美国政府使用跟踪恐怖分子的数据库来跟踪和击毙恐怖分子。最后,美国邮政服务部门部署了Kinetica,以减少欺诈、简化运营。
取得了什么样的效果?不妨考虑这一点:2015年投递了1500多亿封邮件,行驶里程却减少了7000万英里,因而省下了700万加仑燃油。在这一切的同时,从213000多个扫描设备获取数据,美国各地的邮局和处理中心有15000多个并发用户,另外结合了地理空间数据来预测实时事件。顺便说一下,相比美国邮政服务部门一直使用的关系数据库,这将性能提升了200倍。
虽然看似不一样,但这种工作负载恰恰发挥了GPU的长处,正如MapD公司的创始人兼首席执行官托德·莫斯塔科(Todd Mostak)所写:“GPU擅长处理需要大量数学密集型运算的任务,比如视觉模拟、超快数据库事务、计算视觉和机器学习等任务。”
搞清楚GPU适合的地方
如此说来,关键在于搞清楚将面向GPU的数据库运用在何处,因为它们并不同样适用于所有大数据应用。
正如内存数据库公司MemSQL的首席技术官兼联合创始人尼基塔·沙姆古诺夫(Nikita Shamgunov)告诉我:“毫无疑问,GPU为某些工作负载提供了优势,尤其是深度学习之类的应用。GPU之所以非常适合深度学习,是因为问题可以分解成许多小的操作单位,每一个小小的操作单位可以同时在大批核心上加以执行。”
除此之外,VMware的高级工程主管贾里德·罗索夫(Jared Rosoff)告知我:“单单一个GPU就有上千个针对矩阵数学运算经过优化的核心。深度学习涉及大量的超并行化矩阵数学。”如此一来,“像计算机图形这种深度学习依赖非常适合GPU的大量并行化矩阵数学”,也就不足为奇了。
然而,除了深度学习和数据可视化之类的应用外,久经考验的面向CPU的数据库常常是更好的选择,沙姆古诺夫继续说:
就深度学习之外的领域而言,关于使用GPU相比CPU的总体成本/效益仍存在着争论。英特尔等公司在以低成本封装CPU能力方面非常高效。而围绕CPU的行业基础设施仍让GPU方面的任何相似基础设施相形见绌。
换句话说,利用CPU往往成本更低,生产力开销极小,而且行业对CPU的支持力度要大得多。另外,大数据的一些方面完全更适合CPU。
沙姆古诺夫说:“比如说,数据处理查询的其他方面以join和shuffle等操作为主,比如跨集群根据不同的键对数据重新分区。这些操作在CPU上来得极其高效。”
罗索夫也对此发表了意见,表示“大多数软件无法充分利用这种程度的并行化,也无法用GPU有限的指令集来处理”,因而让它成为非常适合深度学习这类应用的理想解决方案,但是不太适合其他工作负载。
当然,随着时间的推移,我们可能会看到企业结合这两种方法,将GPU用在它擅长的地方,将CPU用在其余每个地方。随着GPU变得更普遍,数据库也可能会开始加大支持GPU的力度。