近日, Linkedin 宣布开源其正在使用的大数据计算引擎 Cubert ,该框架提供了一种新的数据模型来组织数据,并使用诸如MeshJoin 和Cube算法等算法来对组织后的数据进行计算,从而减轻了系统负荷和节省了CPU资源,最终提供给用户一个简单、高效的查询。Cubert比较适合的计 算领域包括统计计算、聚合、时间距离计算、增量计算、图形计算等。
Cubert整个架构可分为三层,第一层是数据流语言层,主要用来实现执行计划,包括 Apache Pig 、 Apache Hive 以及Cubert Script;中间层是执行计划的分布式引擎层,包括Map-Reduce、Tez和Spark以及各个算法实现;最底层是数据存储层,Cubert根据 数据模型以数据分区的形式组织和存储,且数据分区由HDFS提供的文件系统管理。Cubert 架构如下图所示:
LinkedIn把Cubert作为一个关键组件来处理数据,其中 Kafka 负责实时消息传递给hadoop,Hadoop负责数据的存储,Cubert负责处理数据,处理后数据流向 Pinot 进行实时分析。数据流向图如下所示:
另外,LinkedIn还为Cubert创建了一门新语言Cubert Script,该语言为不同的Job明确定义了Mapper、Reducer和Combiner等操作,其目的是使得开发人员无需做任何形式的自定义编码 就能够轻松地使用Cubert。Cubert还提供了一套丰富的数据处理的操作,包括输入/输出操作(如LOAD、STORE、TEE等)、转换操作(如 FROM、GENERATE、FILTER等)、聚合操作(如GROUP BY、CUBE)、数据移动操作(如SHUFFLE、BLOCKGEN、COMBINE等)、字典操作等。接下来Cubert还将实现Tez 执行引擎、Cubert Script v2、增量计算、用于分析的窗函数等。Cubert遵循 Apache License Version 2.0 开源协议发布,读者朋友们如果想尝试或者研究Cubert的话,您可以参考Cubert 使用指导和Javadoc 。
感谢崔康对本文的审校。
给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。