如何看待“SnowFlake”和“Hadoop”的对比?
Only Mystery
Shared-Disk是淘汰,Shared-Nothing是主流,基于Shared-Nothing的Hadoop没有将存储和计算分开,以至于发生正规数据库规模扩张时,对于原始数据库是毁灭性的。需要经历新构+迁移,这对于企业运营是耗费大量本不必要的财力和人力的。
而Snowflake从架构上提出Multi-cluster, Shared data的概念则是解决了面向扩容时的大痛点,存储层可以在无关计算资源的情况下进行无限扩容,而不是按照存储节点来计算。其Time travel和Data sharing功能能够实现即使对数据库进行了Clone,在逻辑上有了两个数据库,而存储仍然只有一个版本的能力。
同时解决了存储规模问题和速度问题,接下来的亮点在于,它的粒度计费策略。有点类似于我最近玩的Jelastic方案的PaaS平台,直接给出了计算单位价格,不用不扣钱,只收存储钱,用计算只收当前计算性能产生的算力钱。
喷火的尾巴
SnowFlake和Hadoop对比的文章,不管是中文的还是英文的,都挺多。其实两者定位差别蛮大的,前者是构造了存储与计算分离的数据库平台,后者是一款开源软件;虽然两者关于存储与计算分离的思想是有异曲同工之妙;但两者本身的定位不同,最终展现出的还是差别蛮大,且不说Hadoop的即时性不够强等这些细节,最核心的不同还是另外一位回答者说道的SnowFlake是彻底的存储与计算分离,SnowFlake是基于各大公有云计算平台提供的存储服务,理论上是可以无限扩容的;(题外话,大家可以算一下用对象存储和云硬盘的价格比较,对象存储比云硬盘便宜不知道多少,而且无限扩容、按需计算;其实SnowFlake的存储层就是利用了好几家公有云的存储服务,一来弹性很强,二来省事,这块钱个人觉得还是苦力钱,SnowFlake在云计算平台的基础上做云,这点特巧妙。虽然很巧妙,但是我也有点泻药,公有云平台也有能力去做与SnowFlake一样的事情;就类似主流的CDN平台照样能比融合CDN平台更有市场竞争优势;而且存储计算资源与带宽资源还是有点区别,尤其是中国,带宽资源是稀缺品,而存储与计算资源并不稀缺。)而计算资源,SnowFlake也照样是可以利用公有云的计算资源进行弹性分配,只是未必是那么频繁的创建云主机,我猜想其会把单独的一台云主机甚至是自己托管在公有云平台的机柜中的主机进行算力划分计费。
而Hadoop则是较早期做存储计算分离的,因为google没开源自己的GFS、MapReduce的这些,后来做了一个类似的;Hadoop你要自己配、自己去弄,一次较大的升级,整个就得变。SnowFlake这类直接去用即可,这也就是SnowFlake起来的比较快的地方,充分解决了很多中型以上企业对于海量数据的存储分析的需求。
简而言之,SnowFlake和Hadoop虽然都是做大数据存储分析的数据库,且都是运用了存储与计算分离的思路;但是两者在定位、实现方式、使用方式上还是有本质区别。从市场上来看,我认为逐步会有更多的企业选择SnowFlake这种。