最近公司大数据集群要迁移到腾讯云,由原来的HDP版本+物理机的模式,要切换到EMR+COS(对象存储)存算分离模式,那么存算分离到底是什么呢?
Hadoop一出生就是存储与计算在一起的,前几年面试题中都问,Hadoop怎么保证高性能呢?其中一个原因是数据不动,计算(code)动。如今,到了计算与存储分离的阶段。存储计算分离是一种分层架构思想,即将存储能力和计算能力分开,各自服务化,通过高速网络连接
**
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。COS 提供网页端管理界面、多种主流开发语言的 SDK、API 以及命令行和图形化工具,并且兼容 S3 的 API 接口,方便用户直接使用社区工具和插件。其底层采用腾讯自研存储引擎YottaStore,能够实现单集群理论管理百万级节点,并且做到真正的按需扩容,磁盘利用率达到 90% 以上
为什么要存算分离
以Hadoop为例说明,在传统Hadoop的使用中,存储与计算密不可分,而随着业务的发展,常常会因为为了扩存储而带来额外的计算扩容,这其实就是一种浪费;同理,只为了提升计算能力,也会带来一段时期的存储浪费,将计算和存储分离,可以更好地应对单方面的不足。
存储与计算分离的趋势
在2009年做大规模计算的核心词是“Locality”:让计算尽量靠近数据以提升效率。当时一个公认的模型是:构建一个足够大的资源池,把数据和计算融合在里面发挥规模效应。
但最近几年以来,生态和环境都悄然发生了一些变化:
- 计算模式:全量数据计算模式,逐步被Impala、Presto等更高效计算模式赶上
- 存储格式:ORC/Parquet/Kudu等列存、索引技术诞生,使得计算不需要Scan全量数据
- 网络架构:25G网络开始上线,FPGA等技术也加快了网络体验
- 存储介质:SSD、AliFlash、3D X-Point 大量混合技术使得存储可以“既快又猛”
- 计算平台:GPU、FGPA、甚至是未来的TPU等改变计算形态
从这些变化使得我们发现:
通过一款机型通吃存储+计算方案,已经演变成存储+计算各自服务化,通过高速网络进行连接的趋势
这种方式可以使得存储、计算不用再被”机型“,”机柜“,”电力“等方案束缚,在各自最擅长的领域进行创新。
注:关于25G网络,请看 https://cloud.tencent.com/developer/news/235145
基本架构
架构其实比较简单,OSS作为默认的存储(对象存储),Hadoop、Spark可以作为计算引擎直接分析OSS存储的数据。
以上比较了计算与存储分离的优缺点。
**
灵活:在《E-MapReduce(Hadoop)10大类问题之集群规划》 一文中分析了集群规划问题,关键是匹配计算量与存储量,如果把计算与存储分离后,则集群规划则变得简单很多,基本不需要估算未来业务的规模了,真正做到按需使用。
**
成本:存储与计算分离后,按照1 master 8cpu32g 6 slave 8cpu32g 10T数据量,大致成本下降一倍,在ecs自建的磁盘选择高效云盘。
**
**
性能:随着EMR和OSS的兼容做的越来越好和云计算网络环境的提升,OSS作为存储会越来越多得体现出其优势。对比两种方案,OSS方案最大的缺点是在读数据的时候性能低于HDFS,可以把数据的最初读取和最终的结果使用OSS,中间的临时计算变量放到HDFS上,可以一定程度上缓解这个问题。当然具体使用什么方案还需要根据实际情况选择最合适自己的才是最好的方案。性能大约下降10%以内,对于一般的应用是可以接受的
分析
我们可以看到,emr+oss后,成本节约了一半,但是性能下降基本可以忽略不计。从性能图上看,emr+oss对比ecs自建hadoop对比:
也就是整体来讲,emr+oss比自建使用更少的资源,如果提高emr+oss的并发度,则时间上有可能超过ecs自建hadoop集群的。