Alluxio如何百倍加速云端元数据操作
极客时间编辑部
讲述:杜力大小:2.51M时长:02:45
Alluxio 的主要功能之一是提供简单而统一的接口,用来管理不同底层存储系统内的文件和目录。即使底层存储系统可能是具有不同接口类型的对象存储,Alluxio 也可以充当中间层,并提供一个统一的文件接口供应用程序与多个底层存储系统进行交互。
与其他底层存储系统相比,对象存储通常是远程部署的,访问速度较慢。用户在使用 Alluxio 的文件系统接口时,可能会无意间频繁触发对这些对象储存的远程访问。本文关注了最近在 Alluxio 中针对加速这些元数据操作所做的一些优化。
自从 Alluxio v1.7 问世以来,指纹串技术已经被用来检测文件或目录是否已经改变。这可以让 Alluxio 快速确定 Alluxio 中的文件与 S3 存储中的文件或其他对象存储中的文件是否同步。1.8 版本通过将指纹划分为两个组件(元数据组件和内容组件)改进了这一特性,从而进一步减少了 Alluxio 和底层存储之间所需的同步次数。
在此使用双组件指纹技术之前,如果底层文件系统(UFS)中文件 / 对象(所有者、模式等)的元数据发生更改,那么 Alluxio 则认为整个文件都不再同步,并认为对应的整个文件将无效。这可能会导致不必要的文件失效和数据的重新加载,从而增加大规模元数据操作的成本。
通过将文件元数据指纹和文件内容指纹分离开来,当文件只有元数据发生更改时,只有文件元数据的指纹是不同的,而文件内容的指纹并没有发生变化。因此,Alluxio 不需要从底层存储重新加载数据,而是可以直接在内存中更新元数据。
最近,Alluxio 引入了两个特性,改善了 listStatus 调用的性能。首先,Alluxio v1.8 开始利用一些对象存储支持递归 listStatus 调用这一特性。通过一次 API 调用,Alluxio 可以获得整个文件和目录列表及其元数据。此外,Alluxio 可以缓存从这个递归调用中获得的信息以用于其他场合,如指纹生成和验证。
此外,1.8.1 版本的 Alluxio 还包含了另一项优化:当由于从底层存储系统加载元数据而在 Alluxio 空间中创建了一个文件时,因为文件是从底层存储系统端开始创建的,因此文件应该已经存在于底层存储系统中了,Alluxio 将不会把文件信息持久化到底层存储系统中。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
该免费文章来自《极客视点》,如需阅读全部文章,
请先领取课程
请先领取课程
免费领取
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
精选留言
由作者筛选后的优质留言将会公开显示,欢迎踊跃留言。
收起评论