分布式存储和计算

亲爱的Serverfault社区,

在研究了一系列分布式文件系统在生产环境中进行部署,其主要目的是执行批处理和实时分布式计算之后,我确定了以下列表作为潜在候选者,主要是成熟度,许可证和支持:

  • 头孢
  • 光泽
  • GlusterFS
  • HDFS
  • FhGFS
  • MooseFS
  • XtreemFS

我们的系统应该显示的关键属性:

  • 一个开放源代码,开放许可,但生产就绪,例如成熟,可靠,社区和商业支持的解决scheme;
  • 在商品硬件上运行的能力,最好是为它devise的;
  • 提供数据的高可用性,最重视读取;
  • 高可扩展性,因此可能在全球范围内运行在多个数据中心上;
  • 通过使用复制和分配(元数据)来去除单点故障,例如提供容错。

确定的敏感点,并导致了以下问题:

  1. 处理层/应用程序对于数据局部性的透明性,例如知道数据在物理上位于服务器级别的位置,主要用于资源分配和快速处理,高性能,如何实现? 你从经验中知道什么解决scheme提供这种透明度和程度?
  2. 在大多数上述列出的解决scheme的wiki页面上都提到了posix合规性或一致性。 这里的问题主要是,posix标准的支持有多相关? Hadoop的例子是不是posix符合devise,什么是亲和骗局?
  3. 那么分布式文件系统的同步和asynchronous操作之间的区别呢。 尽pipe同步分布式文件系统由于可靠性而具有偏好,但其在可伸缩性方面也施加了一定的限制。 从你的专业知识,到如何去做呢?

我期待着你的回复。 提前致谢! 🙂

亲切的问候,

Tim van Elteren

听起来你已经在这里做了很多的基础工作。 关于您的关键要求,您确定的所有文件系统在某种程度上都符合这些要求。 这些是分布式文件系统通过分布式文件系统所做的事情。

唯一需要进一步讨论的要求是许可证 – 这大概是贵公司的商业考虑因素,并有助于消除因商业原因而不合要求的有效候选人。 这是一套您需要在公司内部咨询时做出的一系列select,听起来您已经知道您想要什么。

我们不能真正告诉你使用什么文件系统(你需要做更多的研究,而且一些实验室testing/模拟肯定会是可取的 – 利用虚拟化和大量免费的虚拟机pipe理程序!),但我可以给你有点洞察你的敏感点“


处理层/应用程序对于数据局部性的透明性,例如,知道数据在物理上位于服务器级别的哪个位置,主要用于资源分配和快速处理,高性能,如何实现? 你从经验中知道什么解决scheme提供这种透明度和程度?

分布式文件系统通常对操作系统的其余部分(在文件系统层之上)是透明的。 文件系统处理将数据分发到各个节点,复制它以实现容错,并将其移动到客户端机器/从客户端机器移出 – 您的操作系统只是将它视为任何其他文件系统。

任何提供这种抽象级别的分布式文件系统在我看来都是非启动器:客户端系统不需要知道分布式FS如何在底层工作,而不需要知道本地磁盘组织NFS服务器。

性能考虑是一个单独的问题 – 上面提到的每个文件系统都可以在一定程度上进行调整。 这里最好的build议是“根据你的工作量做你自己的基准” ,但是你也可以看看已发布的基准testing,看看你能期待什么。


上述大多数解决scheme的wiki页面都提到了POSIX合规性或一致性。 这里的问题主要是,对POSIX标准的支持有多相关?

只有你可以回答相关性的问题(根据你的要求),但作为一个老派的Unix人员,我可以告诉你,我期望Unix / Linux主机上的文件系统符合POSIX规范 – 特别是最明显的区域(文件名限制,权限,ACL)。

最小惊讶原则还规定,在Unix或Linux系统上,文件系统应符合POSIX标准,并通过操作系统的标准工具公开权限和ACL,所以我认为强大的投票赞成使用分布式文件系统与POSIX一致的接口。


那么分布式文件系统的同步和asynchronous操作之间的差异呢? 尽pipe同步分布式文件系统由于可靠性而具有偏好,但它也对可伸缩性施加了一定的限制。 从你的专业知识,到如何去做呢?

再次,只有可以防止森林火灾进行这个电话。

正如您已经正确地确定的那样,同步分布式文件系统有一些可扩展性问题(主要关于写入性能)。 它们也具有一致性强的优点。
asynchronous分布式文件系统几乎总是具有更好的性能,但却带有内在的风险级别 – 通常在群集内数据不一致的可能性更大,或者在数据同步时通过瞬态单点故障来丢失数据/复制。

从我的angular度来看(作为一个老派的Unix家伙),一致性和稳定性胜过性能。 在McKusick关于FFS历史的演讲中,有一段精彩的话,这是“文件系统必须正确的解决问题,因为用户在失去数据的时候非常沮丧” – 在商业/生产环境中的推论是当系统pipe理员丢失价值数百万美元的数据时系统pipe理员被解雇,所以花费额外的几个毫秒来确保通过分布式文件系统正确地复制数据对我来说是很有意义的,而且我会select使用同步DFS,除非那里是不是很好的理由。

你需要多快的速度阅读? 全球可扩展性有多重要?

就在我头顶的时候,Lustre会很快,但是这是你列表中唯一的function。

我知道有两件事符合你的要求。

Xrootd – 非常多只读,全球HA,广泛应用于科学界。

http://xrootd.slac.stanford.edu/

OpenAFS – 在很长一段时间内被广泛应用于高等教育。

http://www.openafs.org/

没有一个适当调整的Lustre系统的读取速度,但都可以扩展到全球部署。 我所知道的清单上的其他软件更适合在单个数据中心访问。