IndexR架构介绍
系统结构
IndexR参考和使用了很多优秀的开源产品,充分发挥了各个组件的优势,并填补了缺失的模块,组成一个非常简洁、可靠、高效的数据库系统。
IndexR系统主要涉及几个组件
IndexR - 负责文件存储格式,包括索引和数据,数据的实时导入、表定义操作,查询优化,以及数据缓存等。
分布式计算框架(Drill/Spark)-负责在IndexR数据上的具体查询操作,以及其他计算任务。
Hadoop以及周边工具 - 提供分布式文件存储,离线批量计算,离线数据管理,以及各种离线ETL任务。IndexR与Hadoop完美结合,可以作为一个高度压缩、自带索引的文件格式,兼容Hive的所有操作。
Kafka - 消息队列,数据经过kafka流入IndexR。
Zookeeper - 集群状态管理。
部署架构
IndexR数据库系统部署非常简单,没有复杂依赖,没有难以理解的不同类型的节点,如果你已经拥有一个Hadoop系统,即使没有任何经验,在现有集群上部署IndexR通常可以在半小时之内完成。只需要在所有Hadoop的DataNode(和NameNode)节点上部署一份带有IndexR插件的Drill节点,只有几项必须配置项,并且所有节点的配置都是一样的。
IndexR的服务逻辑嵌入了Drillbit进程,无需额外启动服务。
存储结构
IndexR以列式存储数据,并分片存储,分片称为Segment,每一个Segment都是自解释的,包括Schema,数据以及索引。Segment通常是固定不变的,这极大简化了数据管理,便于分布式处理。
实时模块
IndexR的一大特点是可以极高效率的导入实时数据,并且数据可以立刻被查询,可以多节点同时导入。
实时导入的数据叫做Realtime Segment,在达到一定阀值后,IndexR会将它们合并成历史Segment,并上传到HDFS,之后数据就可以被离线分析工具所使用和管理。
Realtime Segment具体实现参考了 LSM-Tree。通过在磁盘上的commitlog文件保存所有更新操作,最新数据放在内存中以快速入库和索引,周期性将内存数据dump到磁盘。IndexR进程可以随时被重启,或者直接杀死,不用担心数据丢失。
性能标准
测试硬件标准:每个节点 12核(24线程)CPU, 60G内存, SATA接口7200转机械硬盘。
实时导入速度- 超过 30K 消息/秒/节点/表。即,假如有10个节点,每个节点拥有10个表,可以在一秒钟之内消费3M条消息。一天轻松实时导入千亿数据。
扫描速度- 通常一行内通常会读取多个字段,在现代CPU和计算框架的帮助下,可以同时对多个字段进行运算,从而获得比以下数据更好的性能。
冷数据 - 30M字段/秒/节点。
热数据 - 100M字段/秒/节点。
扫描速度约为Parquet的2.5倍。
OLAP查询- 在我们的实际业务中,我们发现95%的查询延时在3s内,数据量规模为千亿级别,20个节点。
相同的Drill环境下约为Parquet格式的3~8倍。
压缩率- 在我们的实际业务中,相对于CSV格式,压缩率约为10:1,有些表甚至达到20:1。
压缩后大小约为ORC格式的75%。
关于作者
笔者(Flow Wei)目前任职于舜飞科技数据中心部门,主要负责数据平台建设,主导开发了IndexR项目。
近几年数字营销以及相关行业在国内可谓发展迅速,包括各种PC、移动媒体,各大 ADX,DSP,SSP,DMP,以及网站和APP监控平台,深刻的影响着广告主的宣传策略和消费者的消费体验,精准、高效、低成本的营销方式越来越获得市场的认可,特别是品牌广告主的大力支持使得这个领域显得热闹非凡。 舜飞科技 作为国内顶级的DSP服务提供商,拥有覆盖全行业的产品线,发展迅速,技术主导,成绩斐然。
目前公司发展迅速,高级数据开发,数据分析、挖掘,平台架构,高性能服务器等职位虚位以待。我们青睐对自身领域有深入了解,有强烈求知欲,喜欢正面解决问题的你。快发送简历至 [email protected] ,使用暗号IndexR可走快速通道哦。