加入收藏 | 设为首页 | 会员中心 | 我要投稿 财气旺网 - 财气网 (https://www.caiqiwang.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 大数据 > 正文

IndexR:最快的开源大数据存储格式

发布时间:2022-11-18 18:31:37 所属栏目:大数据 来源:网络
导读: IndexR:速度最快的开源大数据存储格式
IndexR项目包括存储格式,实时入库模块,管理工具和对接其他系统如Hive,Drill等的插件。其中IndexR的存储格式是目前查询速度最快的开源大数据格式,

IndexR:速度最快的开源大数据存储格式

IndexR项目包括存储格式,实时入库模块,管理工具和对接其他系统如Hive,Drill等的插件。其中IndexR的存储格式是目前查询速度最快的开源大数据格式,扫描速度是Parquet的2~4倍,在添加索引之后查询速度普遍提升十几倍以上。适合于大数据的各种场景,包括离线和在线的各种统计分析,和快速过滤查询。

它最早是为了解决互联网广告业务产生的海量数据进行实时、在线分析而研发的分析型数据库,目前使用十几台一般配置服务器,支撑了舜飞科技包含多条业务线,每日近千亿数据的实时入库、在线多维分析系统。

IndexR开源至今,获得了国内外的许多团队的认可,从调研、测试到最后部署于生产环境,包括广告、电商、AI等领域的大型互联网公司和创业团队,以及政府,咨询,物流等有超大数据集,对数据质量有极高要求的行业。

开源地址:shunfei/indexr

架构

IndexR可与Hadoop生态的各个系统互相配合,以下是一个典型系统的示意图。

大数据存储_大数据怎么存储_大数据存储难点

IndexR的特点

具体查询的时候,IndexR先进行粗糙集索引过滤,再对剩下的数据集进行倒排索引过滤。然后把命中的Pack直接加载入内存,对其进行高效的细致查询。这种方式解决了分布式架构、海量数据场景下索引困难的问题,避免了随机读问题,不管是在需要大范围扫描还是少量数据查询,效率都很高。

两种存储模式,适应不同场景

支持流式导入,实时分析

目前的Hadoop生态对于实时的数据分析还是比较困难。比如Storm、Spark Streaming,这类型属于对数据进行预计算,在业务频繁改动大数据存储,或者需要对原始数据进行启发式分析(Ad-hoc)的情况下没法满足需求。而Druid,Kudu等系统虽然支持实时写入,但是属于自成体系的,在我们的实际运用中遇到部署、整合甚至性能方面的问题。

IndexR支持实时数据写入,比如从Kafka导入,并且数据到达系统之后可以立刻被分析,它与Hadoop生态的无缝整合,使得对于业务设计非常灵活。目前IndexR单表单节点入库速度每秒超过3w条数据,入库速度随着节点数量线性增加,每个表使用一个单独的线程,互不影响。对于OLAP型多维分析场景,IndexR还支持实时、离线预聚合,让分析速度飞起!

速度超快

IndexR使用深度优化的编码方式,大大加快数据解析,甚至可以媲美一些内存数据库。它的数据组织形式根据向量化执行的特点定制,把全部数据存放于堆外内存,并且优化到个byte的组织方式,把JVM的GC和虚函数开销降到最低。

IndexR是基于Hadoop的数据格式,意味着文件存放于HDFS,这样可以非常方便的利用HDFS本身的高可用特性保证数据安全,并且可以方便的使用Hadoop生态上的所有分析工具。我们对基于HDFS的文件读取做了大量的优化工作,把计算尽量分发到离数据最近的本地节点,HDFS层的开销基本被剔除,与直接读取本地数据无异。

以下是使用TPC-H数据集,IndexR与Parquet格式在相同的Drill集群上做的一个性能对比。

最大表lineitem数据总量6亿,5个节点,节点配置 [Intel(R) Xeon(R) CPU E5-2620 v2 @ 2.10GHz] x 2, RAM 64G(实际使用约12G), HDD SATA with 7200RPM。

大数据怎么存储_大数据存储难点_大数据存储

柱状图:

大数据怎么存储_大数据存储_大数据存储难点

大数据怎么存储_大数据存储难点_大数据存储

柱状图:

大数据存储_大数据存储难点_大数据怎么存储

省资源

IndexR的数据结构经过精心设计,绝不多浪费任何内存空间。为了避免Java中对象和抽象的开销,IndexR的代码大量使用了Code C In Java的编程风格(调侃),通过内存结构而非接口进行解耦。紧凑的内存结构减少了寻址开销,且非常利于JVM的运行时优化。结果是IndexR保证了高性能、有效索引的同时非常省内存,与使用Parquet格式查询时的内存使用量差不多,不会出现CarbonData需要配置超大堆内存的情况。但是为什么不直接使用C或者C++呢?因为目前Hadoop生态最适合的开发语言还是基于JVM的语言,可与其他系统无缝集成,在工具链支持方面也是最全面的。

IndexR通过与Hadoop生态的深度整合,非常适合用来搭建海量数据场景下的数据仓库。

典型使用场景

IndexR从开源至今,经过不同的团队实践,积累了很多使用案例,下面介绍我们了解到的IndexR在不同公司的几个常见使用方式。

IndexR的未来方向

IndexR项目由舜飞科技开源并快速推进,目前已经发布0.5.0版本。IndexR立志于成为Hadoop生态下快速分析查询的标准存储格式。希望它可以获得业界更多的关注和使用,和社区的更多积极参与。

(编辑:财气旺网 - 财气网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!