Cubert:LinkedIn开源的大数据计算引擎

近日,Linkedin宣布开源其正在使用的大数据计算引擎Cubert,该框架提供了一种新的数据模型来组织数据,并使用诸如MeshJoin 和Cube算法等算法来对组织后的数据进行计算,从而减轻了系统负荷和节省了CPU资源,最终提供给用户一个简单、高效的查询。Cubert比较适合的计算领域包括统计计算、聚合、时间距离计算、增量计算、图形计算等。

Cubert整个架构可分为三层,第一层是数据流语言层,主要用来实现执行计划,包括Apache Pig、Apache Hive以及Cubert Script;中间层是执行计划的分布式引擎层,包括Map-Reduce、Tez和Spark以及各个算法实现;最底层是数据存储层,Cubert根据数据模型以数据分区的形式组织和存储,且数据分区由HDFS提供的文件系统管理。Cubert 架构如下图所示:

Cubert:LinkedIn开源的大数据计算引擎_第1张图片

LinkedIn把Cubert作为一个关键组件来处理数据,其中Kafka负责实时消息传递给Hadoop,Hadoop负责数据的存储,Cubert负责处理数据,处理后数据流向Pinot进行实时分析。数据流向图如下所示:

Cubert:LinkedIn开源的大数据计算引擎_第2张图片

另外,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中文站投稿或者参与内容翻译工作,请邮件至[email protected]。也欢迎大家通过新浪微博(@InfoQ)或者腾讯微博(@InfoQ)关注我们,并与我们的编辑和其他读者朋友交流。

你可能感兴趣的:(Cubert:LinkedIn开源的大数据计算引擎)