近日, LinkedIn 开源了一款用于复杂大数据分析的高性能计算引擎 Cubert 。这是为分析师和数据科学家编写的一个框架,提供“手动编写 Java 程序的所有效率优势,并提供了一个简单的、类似脚本的用户接口,用于解决各种统计、分析和图论问题”。其目标是,做上述所有工作而又不暴露底层细节。
Cubert 围绕着实现更好的数据处理算法需求而设计。当性能是一个辨别因素时,Cubert 可以提供帮助,正如 LinkedIn 工程师所声称的那样,即使从磁盘置换出数十 TB 大小的数据,其性能也可以超出其它引擎 5 到 60 倍。
Cubert 完全用 Java 开发,并提供一种脚本语言。它是针对报表领域里经常出现的复杂连接和聚合而设计的。Cubert 使用 MeshJoin 算法处理大时间窗口下的大数据集,CPU 和内存利用率显著提升。CUBE 是 Cubert 定义的一个新操作符,可以计算累加和非累加分析维度。非累加维度是计算密集型的,如计算一个时间窗口内不同的用户数,但 CUBE 能加快这些运算,而且还可以计算准确的百分等级,如中位数统计,动态上卷内部维度以及在单个任务中计算多个度量值。
Cubert 最适合于重复的报表工作流程,它利用部分结果缓存和增量处理技术来提高速度。最后,一种新的稀疏矩阵乘法算法可以用于大型图的分析计算。
Pig UDF 支持已经实现,团队计划支持 UDF 以及来自 Pig 和 Hive 的存储层。Cubert 目前运行在 MR 引擎上,不过,对 Tez 和 Spark 的支持正在进行中。Cubert 的文档和代码在GitHub 上提供。
查看英文原文: LinkedIn Open Sources Cubert With an Eye To Big Data Analytics
评论