大数据平台是一个发展非常迅速的方向。本周Apache撤回了13个和Hadoop相关的项目,也给还在鼔吹Hadoop大数据生态的可以说是当头一棒。这几年社区里开始出现很多公司使用ClickHouse替换Hadoop生态的现象,让ClickHouse成为大数据的新宠。这一块我也对ClickHouse这个方向及大数据存储方向做一个反思,给大家一些参考。
首先我们看一下ClickHouse的集群架构:
官方的ClickHouse集群采用的shared nothing架构,该架构如果写入时直接写分布式表,对Zk的压力非常大。所以在该架构下主要还是写入local table,在海量数据写入时对于数据加载也是一个非常有挑战的工作。
该架构有以下优点:
-
结构清晰,由以前的使用昂贵的共享存储转变成为了PC结构的存储
-
每个table可以跨节点进行水平分区,每个节点有自已本地存储
-
高可用架构简洁,非常方便运维
-
对于“星型”模型有良好的扩展性
-
成就了当代很多分布式Data Warehouse的基本架构
该架构也有以下缺点:
-
节点融合了计算和存储,在扩容方面必然会带来较高的成本。例如从节点,较少担任计算,但也需要提供较强的计算能力。
-
“弹性”不足集群扩容和缩容必然面临数据分布的调整。
-
从节点的计算资源大部分是闲置的。
-
数据高速写入时对Zk及网络数据同步都有较大的压力。
-
该结构升级或是运维中如果出现性能或是故障问题,很容易导致整体服务不可用。
由于以上的原因ClickHouse在原始结构下不好直接应用到海量数据存储架构下,主要就是存储和计算成本非常高。但在单体可用情况下ClickHouse非常的简单,特别是Clikchouse和MySQL结合的HTAP场景;或是提供一些简单无join的环境非常方便。业界也有把ClickHouse的存储放到HDFS实现计算和存储分离的模型(快手),但这种架构对于运维及公司的研发成本都比较高。
那么新一代的大数据或是数据平台存储方面有什么改善呢?
说到新一代的大数据平台,不得不提当前的明星产品Snowflake。Snowflake俨然进一步定义了现代数据仓库发展的方向。Snowflake提出了data-warehouse-as-service(DaaS)基于云原生的数据仓库Saas服务(No hardware, no software, and completely maintained on cloud)
Snowflake提出一个Mutli-Clusetr Shared Data架构,下面我们看一下Snowflake的架构:
从Snowflake的架构可以看出底层使用了Shared Data架构即云厂商提供的S3类的对象存储能力,S3本身是云厂商提供的跨数据中心及一个近似于无限扩容机制,所以用户在数据存储及安全方面基本无需担心。
再说Snowflake的计算层即计算集群,计算集群在同一个数据中心内,只要保障网络传输的性能,就可以把查询解析后分发到计算层集群执行从Shared Data中获取数据。在这个环节上利用了云上基础资源减少了私有构建方面的IT麻烦。
再往上是官方提出的cloud service或是元数据管理层,这一层是无状态的,可以非常方便解决高可用问题。
最上层是负载均衡器,可以进行服务的冗余和负载处理,连接保持等。
从架构及分层上看Snowflake也是完全按Cloud Native Database架实现,但Cloud Service层更加复杂。
该架构优点:
-
数据统一存储,没有数据孤岛的概念,利用S3存储,把存储和计算进行分离。
-
基于S3类对象存储可以去存储结构化和非结构化数据,基于S3类的存储基本可以无限扩展。
-
集群的计算节点是无状态,可以快速弹性扩展收缩。支持多种规格选择。
-
最上层提供一个数据湖管理服务,一个完整的SaaS平台,可以用于管理存储、计算、机器学习等管理角色。
-
所有分层相对独立,按需扩展, 易于管理。
-
开箱即用,随时关闭不需要的计算资源。
-
每个计算资源可以访问全部数据。
-
可以实现对用户透明的升级管理。
该架构缺点:
1. 基于云上的架构开发,比较难于私有部署。
2. 目前没有开源 (强加一个缺点)。
可以说目前大数据平台,数据平台都在从shared nothing架构向Shared Data在进行过渡,由传统的OS Database模型向计算和存储分离过渡。慢慢向SaaS化的应用过渡(云公司也会向着更加专业的IT设备提供商转型,越来越多的SaaS服务商也会出现)。
国内的情况可能慢一点,现在国内上云的情况还是比较少,大多数公司还停留在什么事都想自已干,更多的公司现在还在寄希望于自研,然后干出来一个AWS的生意。但可以看到全球目前这块成功的也就:AWS, Google, Aliyun, Tencent。其他的公司能满足自身公司的业务就不错了。但现在可以说是基于云原生创业的最佳时期。
总结:
-
适用ClickHouse的环境,数据量不大,没有上规模,对于机器的成本不敏感,实现大于成本阶段。ClickHouse非常优秀,一般的环境利用单机都已获得非常不错的性能。
-
新一代的大数据平台计算和存储分离已经成为趋势。
-
短时间个人自研的存储很难达到云厂家提供的S3类对象存储 ,S3类对象存储也将会成为新一代数据库,数据平台的存储架构。