BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

FiloDB:用于大数据分析的分布式数据库

| 作者 张天雷 关注 4 他的粉丝 发布于 2015年11月6日. 估计阅读时间: 6 分钟 | Google、Facebook、Pinterest、阿里、腾讯 等顶尖技术团队的上百个可供参考的架构实例!

近期,TupleJump杰出工程师、Spark和Cassandra的用户和贡献者、Spark Job Server的联合创建人和维护者Evan Chan详细介绍了用于大数据分析的分布式数据库FiloDB,对其主要特点和所包含模块进行了分析。

在当今的大数据时代,越来越多的企业需要对结构化的数据进行分析和查询,需要对流数据进行快速处理和更新。以视频分析为例,存储和分析系统可能每天处理的事件超过30亿个,并且要针对实时发生的事件进行统计和分析。如此大规模、高速度的数据处理迫切需要高可扩展性、易于更新和获取新数据、支持快速的分析查询、支持极其灵活查询的系统的支持。

作为一种列存储格式,Apache Parquet很好的实现了节省空间和减少IO的目的,满足了上述问题的部分需求。但是,Parquet是一种读优化的格式,存在不支持幂等写、没有针对小更新的写优化、不适合时间序列和IoT等缺点。因此,很多开发人员转向了Apache Cassandra这种NoSQL数据库。Cassandra很好的实现了水平可扩展、数据建模非常灵活、操作简单、实时和机器数据的获取容易等特性。但是,该数据库支持简单查询,而且是面向OLTP(联机事务处理)的。为了更好的解决上述问题,TupleJump提出了一种开源、分布式、列存储数据库——FiloDB。

作为一种OLAP(联机分析处理),FiloDB可以获取机器数据、事件数据和时间序列数据等各种类型的流数据,然后进行非常快速的分析查询。其主要特点包括:

  • 分布式。FiloDB在设计之初便考虑其底层平台为Apache Cassandra等分布式存储平台。因此,FiloDB支持Apache Spark采用并行查询的方式来加速分析。
  • 列存储。FiloDB通过使用带有字典压缩等节省空间技术的列存储来带来性能的提升。其性能与Parquet不相上下,比运行在Cassandra 2.x上的Spark要快1到2个数量级。
  • 版本化。FiloDB增量的增加一列或者若干行作为一个新的版本。相比于基于文件的技术,FiloDB提供更多的灵活性,使得回滚操作变得简单。

FiloDB使用Apache Cassandra作为其存储引擎,使用Apache Spark作为其计算层。Apache Cassandra作为一套开源分布式Key-Value存储系统,具有分布式、基于column的结构化和高可扩展性等特点。之前,很多用户已经尝试把Apache Spark和Cassandra表结合在一起,进行更加丰富的分析。然而,Cassandra CQL表格面向行的存储方式使得把大量数据导入到Spark非常慢。FiloDB充分利用了列存储的优势和Apache Spark的灵活性和丰富性,使得Cassandra的处理速度实现了100倍的提升。

此外,FiloDB使用Apache Spark SQL和DataFrame作为其主要的查询机制。用户可以使用常见的SQL语法进行查询或者使用Spark的JDBC连接器链接Tableau等工具进行数据查询。同时,Spark的机器学习MLlib库以及图形处理的GraphX都可以用到数据中。通过Spark DataFrame进行数据获取也非常容易。FiloDB支持通过任何JDBC数据源、Parquet和Avro文件、Cassandra表等等进行数据获取。其中,还包括从Spark Streaming和Apache Kafka来插入数据。

在流应用方面,FiloDB可以接受来自Apache Kafka的流事件、时间序列和IoT应用类型数据的一次性获取。而且,FiloDB可以通过简单的SQL语句,完成极快速的特设分析。数据库中的每一行都有一个分割和排列键。使用相同键的写操作是幂等的。幂等写支持事件数据的一次完全存储。

最后,使用Kafka+Spark+Cassandra+FiloDB可以很好的实现整个Lamba架构。不需要Cassandra和Hadoop作为双重获取通道,使用SMACK栈(Spark/Scala,Mesos,Akka,Cassandra和Kafka)可以有效减少架构的资金投入。

目前,该开源项目已经放置在GitHub中。用户通过git clone下载后,可以直接启动filo-cli或者将其作为一个Spark数据源来使用。例如,通过下列命令即可验证数据集中的元数据:

./filo-cli --command list --dataset gdelt 

FiloDB团队表示,非常希望用户能够反馈在Cassandra和Spark使用的案例或者进行代码贡献。这些反馈可能会直接影响到FiloDB下一步的一些特性。


感谢杜小芳对本文的审校。

给InfoQ中文站投稿或者参与内容翻译工作,请邮件至editors@cn.infoq.com。也欢迎大家通过新浪微博(@InfoQ@丁晓昀),微信(微信号:InfoQChina)关注我们,并与我们的编辑和其他读者朋友交流(欢迎加入InfoQ读者交流群InfoQ好读者)。

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

Cassandra CQL与FiloDB区别 by 冯 zhong

为什么说Cassandra CQL表格面向行的存储方式,而FiloDB面向列存储方式,能否说明区别呢?

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

1 讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT