随着5g、ai、iot等技术越来越普及,企业数据量增大,新的数据业务层出不穷,企业对数据分析的灵活性、性能、成本要求越来越高,基于传统大数据hadoop系统搭建的数据分析平台已无法满足企业多方面的要求。
近年来随着云计算技术发展,越来越多企业选择了以数据湖为中心构建大数据处理平台,数据湖最明显的特征就是存储和计算分离,一方面可以使成本下降;另一方面,可以获得更好的系统可扩展性。
采用数据湖架构,随着企业业务增长,可以在一份数据上不断增加新业务,而不是像传统数据平台那样,每拓展一个新业务就要做一次数据拷贝。
每个硬币都有两面,数据湖方案除了低成本、易扩展的优点外,同时也有一些缺点:
1、无事务能力,数据入库难!
传统数据湖依赖云存储,但云存储一般都没有acid(atomicity, consistency, isolation, durability)事务能力,导致在此之上构建的hive表格、spark表格等不支持基于事务的数据入库,更不用说数据更新了。
这个弊端极大制约了数据湖的使用场景,企业无法将不断变化的数据快速注入到数据湖内。常常需要在业务层做大量预处理后,才能进入数据湖做分析,处理时延往往在一天以上。
2、分析性能依赖于暴力扫描,即费资源又太慢!
传统数据湖存储依赖云存储,极大降低成本,但做数据分析时属于暴力扫描方式,完全依靠云存储自身的吞吐能力,这种方式只适用于etl、批量计算等对时延不敏感的应用,无法支撑如秒级数据检索、时序数据分析等低时延分析场景。
+ carbondata,让华为云智能数据湖真正成为企业数据架构的底座
为了解决这些问题,华为云基于云存储+carbondata构建的新一代数据湖,实现了 “实时数据接入”、“db数据同步”、“高性能查询和分析”等能力,填补了业界能力空白,使云化数据湖可以真正成为企业数据架构的底座。
基于carbondata的华为云数据湖方案如上图描述,kafka完成数据收集,由flink、spark streaming等流计算引擎完成数据清洗、预处理等业务逻辑,将处理后的数据注入到carbondata表格中;
继而,用户可使用spark、hive、presto等大数据引擎对carbondata表格进行交互分析、详单查询和etl等业务;也可以使用tensorflow、pytorch等ai引擎进行ai模型训练、推理等。
下面进一步阐述,加持carbondata后,华为云智能数据湖的三大特点:
1、实时数据入库
carbondata增加了对 flink 的支持,50行代码轻松实现对接 flink 以carbondata的格式实现实时数据入库。同时,carbondata支持acid事务能力,确保入库操作的原子性和一致性。这使得carbondata成为唯一一款兼具速度、灵活性和支持 acid 事务特性的全场景数据湖。
2、db数据同步
carbondata支持delta增量同步,相比hive使用的数据重写策略,数据同步性能提升10倍。基于carbondata的数据快速同步能力,企业可以轻松实现关系型数据库到数据湖的数据实时同步,缩短数据入湖可见周期,将数据可见时间从t+1优化为t+0,消除数据入湖壁垒。
3、高性能查询和分析
carbondata支持对云存储的数据构建索引和物化视图,实现10倍以上的查询性能提升。根据业务需求,用户可选择多种索引和物化视图加速能力,包括主索引、二级索引、时空索引、多值列索引、时间序列rollup、多表join预聚合等。
carbondata在构建这些索引的时候,同样遵循acid事务性,确保索引构建过程中不会对业务查询造成影响。并可以利用云计算的按需扩展能力,加速索引和物化视图的构建性能。
基于carbondata最新版本的异步索引构建能力,在数据入库实时性要求较高的业务场景,用户可通过“先入库再建索引”的方式,平衡数据入库延迟和查询性能。实现数据入库后即可被查询,并使用周期任务或等到业务闲时再对数据建立索引,大幅提升查询性能。
典型场景分析
某互联网行业用户使用carbondata构建全场景数据湖,借助“db数据同步”、“实时数据入库”和“高性能查询和分析”功能轻松构建pb级别、甚至eb级别大数据处理平台。
对于一个日活千万级别的app应用来说,平均每天约产生500亿条用户行为数据,一年的数据存储量约10pb。在使用carbondata之前,该用户曾做过如下性能和成本分析:
1、传统nosql数据库虽然具有较好的数据索引机制,但是“太贵”:
因为要查询快,用户通常会首先考虑hbase, elasticsearch等自带索引的nosql数据库。
以hbase为例,每pb存储的云硬盘成本为70万/月;单台regionserver可维护不超过10tb的数据, 每pb的数据存储需100台计算节点来部署regionserver,每台计算节点500元/月,部署的硬件成本为500*100=5万/月,每pb总成本=75万/月。
2、基于云存储+文件虽然具有较好的成本优势,但是“太慢”:
使用parquet, orc等列存,可以将数据存储在对象存储中,成本大大降低,每pb存储的对象存储成本约为8万/月;100台计算节点假设每天开机8小时,计算成本5/3=1.67万/月,每pb总成本约9.67万/月,成本大幅下降。
但是由于无索引,只能通过暴力扫描的方式进行查询和计算,在暴力计算时系统往往受限于对象存储带宽,假设对象存储带宽为20gb/s,对10pb全量数据查询一次通常需要4~5个小时(视业务查询条件而定)。
3、云存储+carbondata, 实现“又快又便宜”的任性:
carbondata兼具nosql的索引性能优势,和parquet、orc等文件存储的成本优势,又快又便宜:
1) 利用carbondata的索引、物化视图、缓存等查询优化技术,查询时间从4个小时下降到30秒内,查询性能提升480倍;
2) 支持acid事务和db数据同步能力,缩短数据入湖可见周期从t+1到t+0;
3) 基于存算分离架构,使用云存储+100计算节点按需启停,每pb总成本约9.67万/月,成本降低近10倍。
展望
apache carbondata是一个高性能eb级别原生hadoop分析型数据仓库,提供面向对象存储上eb级数据的高性能明细查询能力、交互式查询能力,提供流数据接入、db数据实时同步和更新能力,提供对主要etl业务的支持和加速,以及机器学习、深度学习等ai引擎的对接和优化,生态发展越来越完善。