在进行数据获取后,就需要把数据保存到平台存储中。在前面的数据平台架构图中,我们看到作者把存储分成了 fast,slow 两块:
这个 slow storage 相对比较好理解,在数仓时代就是 warehouse 系统里的存储部分,在大数据时代就是所谓的数据湖,之前比较流行的是 HDFS 这类分布式文件系统,目前越来越往存算分离的方向发展,主流的存储方式基本都选择了各种对象存储,如 S3,GCS,ABS 等。数据湖的存储形式上比较自由,数据质量,企业管控等方面经常难以得到保证,所以这两年 Databricks 又提出了 lakehouse 的概念,其中存储方面在底层对象存储之上又搭建了相应的元数据和存储协议,能够支持 schema 管理,数据版本,事务支持等特性,我们之前也在 算法平台中的数据湖系统 一文中有过介绍。
这个 fast storage 可能就比较容易误解了。在 Lambda 架构和 a16z 的架构图中,fast storage 一般指对数据消费者提供即席查询,实时分析服务的存储系统,例如我们可以用一些实时性较高的分析型数据库(Presto,ClickHouse),或者针对性的存储服务如 KV 系统,RDBMS 等。而在作者提供的这张图里,fast storage 其实代表的含义更简单,就是流式数据系统的自带存储,如 Kafka,Pulsar 系统存储事件消息的部分。这是不是感觉又回到计算和存储绑定的老路上了?所以现在 Kafka 跟 Pulsar 也都开始支持 tiered storage 了,提升整体的可扩展性,降低成本。
从数据接入层进入的数据,一般会以原始数据的方式直接存放到 slow storage 中,后续再通过其它的处理调度转换成后续需要使用的形式,如 lakehouse 中的表或者对外提供服务的数仓中。流式数据进入到 fast storage 后,实时处理分析组件会来获取和消费其中的数据,最终触发下游的数据更新。同时流式数据一般也会通过一个实时处理流同步把原始数据保存一份到 slow storage 中,以便后续有其它使用需求可以进行灵活的处理操作。实时系统自带的 fast storage 中的消息,一般只会保留一段时间,避免高昂的存储成本。这里可以看出 slow storage 需要存储的基本是全量的数据,其开销会非常大,这也是为何现在一般主流都会选择廉价易扩展的对象存储系统的原因。
对于存储组件,一些重要的特性需求包括:
存储产品方面云厂商的服务应该是主流选择,毕竟自己搭建维护存储集群太复杂了。也有一些开源项目基于这些云厂商的对象存储做了一些附加功能(例如支持 POSIX)和优化,如 lakeFS,JuiceFS 和 SeaseedFS 等(后两个都是国人的项目)。
(文章来源于网络,如侵删)
相关链接:
聊聊云原生大数据平台(一)——数据平台架构 https://www.dtstack.com/bbs/article/428
聊聊云原生大数据平台(二)——数据获取 https://www.dtstack.com/bbs/article/469
聊聊云原生大数据平台(三)——数据存储 https://www.dtstack.com/bbs/article/470
聊聊云原生大数据平台(四)——数据处理 https://www.dtstack.com/bbs/article/471
聊聊云原生大数据平台(五)——元数据 https://www.dtstack.com/bbs/article/472
聊聊云原生大数据平台(六)——数据消费 https://www.dtstack.com/bbs/article/473
聊聊云原生大数据平台(七)——流程编排与 ETL https://www.dtstack.com/bbs/article/474
聊聊云原生大数据平台(八)——数仓最佳实践 https://www.dtstack.com/bbs/article/475
聊聊云原生大数据平台(九)——大数据平台建设 https://www.dtstack.com/bbs/article/476
袋鼠云在大数据领域深耕7年,拥有丰富的大数据平台建设经验和成熟的产品体系,想了解或咨询更多有关袋鼠云大数据产品、行业解决方案、客户案例的朋友,浏览袋鼠云官网:https://www.dtstack.com/?src=bbs
同时,欢迎对大数据开源项目有兴趣的同学加入「袋鼠云开源框架钉钉技术群」,交流最新开源技术信息,群号码:30537511,项目地址:https://github.com/DTStack