集算器和 Spark 对比

Spark 是最流行的分布式数据计算工具,在当前大数据分析领域占据主导地位。在这一领域发挥的作用,集算器与 Spark 有不少交集,和 Spark 对比有哪些不同?

对于底层使用了不同技术、设计理念不同的产品,不带偏见、有依据的回答这个对比问题是件不容易的事情,本文尽可能说清两者的对比,如有错误还请斧正。

简单的总结

集算器比 Spark 更小、更轻。集算器的功能相比 Spark 要少,依赖很少的 Jar 包就可以独立工作。

语言和接口

  • Spark 是用 scala 实现,部分功能支持直接使用 R、Python、Java
  • 集算器是用 Java 实现,仅支持通过 Jdbc 或 ODBC 接口访问集算器

设计目标

  • Spark 是个 all-in-one 产品,目标是建立自己的生态系统,能与其他 Apache 产品整合。
  • 集算器是个中间件产品,目标是为应用服务提效编程、提高性能。

时间和信任

  • Spark 是 2010 年推出的(其实已经很老了),在大数据计算领域被大家熟知和信任。
  • 集算器是 2016 年正式推向市场的(相对年轻),目前金融、保险等行业已经有不少应用案例。

应用场景

  • Spark 主要聚焦在传统 BI 操作(SQL 查询)和轻量级的机器学习。
  • 集算器主要用于解决传统 BI 操作的痛点(很难用 SQL 实现或 SQL 性能低下)和构建高性能计算型数仓。

内部设计

  • Spark 的内部设计是高级的、不透明的,内部统一采用高级的自动化算法应对外部不同计算目标,很难适应复杂计算或即席查询对算法灵活的需求,计算模型还是基于 Map-Shuffle-Reduce 的拓展。
  • 集算器的内部设计是低级的、透明的,没有高级的自动化调度,基于普通的任务调度,但是能够满足更灵活、复杂、高性能的定制化计算需求。

机器规模

  • Spark 设计目标大集群,互联级海量数据处理,规模从单节点到千节点。
  • 集算器设计目标小集群,企业级大数据处理,规模从单节点到几十节点。

可能是这些原因你会选择 Spark

  • 习惯使用 Scala 或 SQL
  • 采用大家熟知和信任的产品
  • 用它来做轻量级的机器学习
  • 需要个 all-in-one 的解决方案

可能是这些原因你会选择集算器

  • 计算比较复杂,常规 SQL 经常搞不定,学习 Scala 周期太长。
  • 性能要求高,Spark 计算模型不能满足或需要更多的计算资源。
  • 集成性要好,不希望再独立安装一套庞大的系统,仅在现有主程序嵌入一个计算组件就能满足功能实现或性能优化的需求。

结论

Spark 是成熟的、覆盖全面的工具,如果你希望建设一个大数据平台,只是需要常规 ETL+SQL 的操作,Spark 是不错的选择,如果已经熟悉 Scala,那会更好。

集算器是嵌入式计算组件,便于集成到已有的应用,通过灵活应用它的并行、缓存、列存等技术,就能大幅提升性能,特别适合非 SQL 式的过程计算。定制化的底层计算不仅提高了性能,还节约计算资源,在单机应用往往就能取得很好的表现。