简介:Fluid 是 CNCF 基金会旗下云原生环境中数据密集型利用的高效撑持平台,由南京大学、阿里云云原生团队以及 Alluxio 开源社区联结发动。我的项目自开源公布以来吸引了泛滥相干方向领域专家和工程师的关注,在大家的踊跃反馈下社区一直演进。近期 Fluid 0.6 版本正式公布,在该版本中,Fluid 次要新增改善三个方面的内容。
作者 | 顾荣 Fluid 开源社区主席 南京大学 PASALab
Fluid 是 CNCF 基金会旗下云原生环境中数据密集型利用的高效撑持平台,由南京大学、阿里云云原生团队以及 Alluxio 开源社区联结发动。我的项目自开源公布以来吸引了泛滥相干方向领域专家和工程师的关注,在大家的踊跃反馈下社区一直演进。近期 Fluid 0.6 版本正式公布,在该版本中,Fluid 次要新增改善以下三个方面内容:
- 数据感知的 Pod 调度,反对数据与利用协同调度,增强生态交融, 适配更多开源调度器。
- 丰盛数据集操作性能,反对数据集主动弹性扩缩容、挂载点动静更新。
- 缓存引擎新增与加强,反对缓存引擎高可用并新增私有云缓存引擎。
Fluid 开源我的项目地址:https://github.com/fluid-cloudnative/fluid
Fluid 我的项目全新官网:https://fluid-cloudnative.github.io/
这三大次要性能的开发需要来自泛滥社区用户的理论生产反馈,此外 Fluid v0.6 还进行了一些 bug 修复和文档更新,欢送应用体验 Fluid v0.6!
Fluid v0.6 下载链接:https://github.com/fluid-cloudnative/fluid/releases
下文是本次新版本公布性能的进一步介绍。
数据感知到 Pod 调度优化
Fluid 始终致力于利用云原生资源调度能力满足云上数据密集利用高效运行的需要。在上个版本 Fluid v0.5 中,咱们曾经针对数据集编排不足架构感知的问题,在数据集编排调度方面进行了一系列优化。在 Fluid v0.6 中,咱们进一步针对容器编排不足数据感知的问题,设计实现了对 Pod 调度的优化。
咱们目前思考到的优化场景问题包含:
- 应用非 K8s 原生调度器时,不能与 Fluid 很好的兼容
- 应用数据集的 Pod 调度时,短少思考缓存散布思考
- 不应用数据集的 Pod,可能调度到有缓存的节点,影响其它 Pod 应用缓存
咱们依据数据集缓存地位信息制订 Pod 调度策略,通过 webhook 机制将生成的调度信息注入到 Pod,最终实现了以下性能:
- 在默认 Fuse 模式(Fuse 和缓存引擎同节点部署)下,反对 K8s 原生调度器,以及 Volcano,Yunikorn 等第三方调度器,实现 Pod 数据亲和性调度
- 在全局 Fuse 模式下,将 Pod 优先调度到有数据缓存能力的节点
- 当 Pod 不应用数据集时,尽量避免将 Pod 调度到有缓存的节点
对于 Pod 调度优化性能的开启与配置形式,请参考 Github 上的示例文档。
丰盛数据集操作性能
1. 数据集在线弹性缓存扩缩容
Fluid v0.5 开启了在线弹性扩缩容之路,过后提供了在线手动扩缩容的能力。然而,在实在的生产环境中,手工操作扩缩具备较大的复杂度和提早性。主动弹性伸缩是 Kubernetes 的外围能力之一,此前始终是围绕这无状态的利用负载开展。当初,有状态的数据密集型利用也能够利用 Fluid 提供的分布式缓存的弹性伸缩能力,从而实现灵便裁减和膨胀数据缓存。Fluid 基于 Runtime 提供了缓存空间、现有缓存比例等性能指标, 联合本身对于 Runtime 资源的扩缩容能力,从而达到数据缓存按需伸缩能力。
进一步,咱们发现依据数据缓存量比例触发主动的数据缓存能力弹性扩缩容具备十分多的劣势,但也有一个缺点,就是须要依据资源压力计算出正当的值后调整,这就存在肯定的水平滞后性。因而 Fluid v0.6 通过联合 CronHPA 提供了定时扩缩容的能力,从而依据利用本身应用数据的工夫特点,实现数据缓存的按时扩缩容,充分利用了集群计算和存储资源减速利用的数据拜访性能。以后,应用主动扩容 + 定时缩容能够最大化的使 Fluid 平台在 K8s 集群内变成一种可控的弹性缓存资源。目前,Fluid 的 Alluxio Runtime 在这方面提供了残缺的反对。
2. 数据集挂载点动静更新性能
在 Fluid 的每个数据集中,都申明了若干挂载点(mountPoint)。例如,如下名为 test 的数据集中,申明了 hbase 和 spark 两个挂载点:
apiVersion: data.fluid.io/v1alpha1kind: Datasetmetadata:name: testspec:mounts: - mountPoint: https://mirrors.tuna.tsinghua.edu.cn/apache/hbase/stable/ name: hbase- mountPoint: https://mirrors.tuna.tsinghua.edu.cn/apache/spark/ name: spark
之前的版本中,只有数据集创立时,才会把数据集中申明的那些挂载点挂载到虚构文件系统中。一旦数据集创立实现,即便再批改挂载点也不会失效,若要批改则只能删除重建,这在理论应用中具备很多不便。在 Fluid v0.6 中,咱们新增了数据集挂载点动静增减性能。一旦批改数据集的挂载点,数据集将临时进入 Updating 状态。直到挂载 / 卸载实现,数据集才会从新回到 Bound 状态。
缓存引擎新增与加强
1. 新增数据缓存引擎实现
Fluid 默认应用的分布式缓存 Runtime 是 AlluxioRuntime,为了满足不同环境用户对缓存零碎的需要,在之前的版本中 Fluid 曾经将分布式缓存 Runtime 接入框架设计成了可插拔的架构。在 Fluid v0.6 中,来自腾讯云的社区贡献者基于该框架开发了 GooseFSRuntime,新增了一种撑持 Fluid Dataset 数据管理和缓存的执行引擎实现。
2. 数据缓存引擎高可用运行时
Fluid 目前反对的缓存引擎 Alluxio、JindoFS、GooseFS 均为分布式文件系统,Alluxio、GooseFS、JindoFS Cache 模式均为 Master-Worker 架构。在分布式文件系统中,高可用性蕴含两个方面:一是整个文件系统的可用性,二是数据的残缺和一致性。Master 作为全局元数据管理组件,通过 Master High-Availability 保障文件系统的高可用;通过 Raft 算法实现选主、状态机同步等操作保障日志和元数据的残缺和一致性。在 Fluid v0.6 中,来自腾讯云的社区贡献者设计实现高可用运行时性能,用户只须要指定冀望 master 个数,如果个数为大于 1 的奇数,将主动应用高可用模式。
总结
Fluid v0.6 次要解决和满足社区用户在理论生产环境中反馈的问题和需要。在调度方面,反对数据感知的 Pod 调度,从而满足多场景数据与利用协同调度的需要。在数据集操作方面,进一步丰盛了相干性能,反对数据集主动弹性扩缩容、挂载点动静更新。在缓存引擎方面,进行新增缓存引擎新增并加强性能,反对了缓存引擎高可用并新增私有云缓存引擎。
理解更多:
https://fluid-cloudnative.github.io/
鸣谢
Fluid v0.6 的开发失去了诸多单位的奉献,这里列出本版本提供的几个重要性能的开发者的名字,感激他们的付出奉献!
● 杨丽(北京奇虎科技有限公司)数据集挂载点动静更新性能;
● 仇伶玮(中国电信)数据缓存感知的 Pod 调度优化;
● 谢远东(腾讯云)缓存引擎高可用性、GooseFSRuntime 反对;
作者简介
顾荣 博士,南京大学计算机系副研究员,Fluid 开源社区主席、Alluxio 开源我的项目 PMC 成员,钻研方向大数据处理系统,已在 TPDS、ICDE、JPDC、IPDPS、ICPP 等畛域前沿期刊会议发表论文 30 余篇,主持国家自然科学基金面上我的项目 / 青年我的项目、中国博士后科学基金特地赞助我的项目多项,研究成果落地利用于阿里巴巴、百度、字节跳动、中国石化、华泰证券等公司和开源我的项目 Apache Spark、Alluxio,获 2018 年度江苏省科学技术一等奖、2019 年度江苏省计算机学会青年科技奖、腾讯云最具价值专家奖项,负责中国计算机学会系统软件专委会委员 / 大数据专委会通信委员、江苏省计算机学会大数据专委会秘书长。
版权申明: 本文内容由阿里云实名注册用户自发奉献,版权归原作者所有,阿里云开发者社区不领有其著作权,亦不承当相应法律责任。具体规定请查看《阿里云开发者社区用户服务协定》和《阿里云开发者社区知识产权爱护指引》。如果您发现本社区中有涉嫌剽窃的内容,填写侵权投诉表单进行举报,一经查实,本社区将立即删除涉嫌侵权内容。