可以在没有 HDFS 的情况下使用 Apache YARN 吗?

Can Apache YARN be used without HDFS?

我想将 Apache YARN 用作 运行 框架的集群和资源管理器,在该框架中,资源将在同一框架的不同任务之间共享。我想使用我自己的分布式堆外文件系统。

  1. 是否可以将任何其他分布式文件系统与 YARN 一起使用 除了 HDFS?

  2. 如果是,需要实现哪些HDFS API?

  3. 运行 YARN 需要哪些 Hadoop 组件?

Yarn 不仅仅是分布式集群的资源管理器。 Apache Mesos 是类似于 yarn 的资源管理器(但内部技术不同。)。而且它不依赖于 hadoop 组件。在企业云基础设施中,已经有很多用途,例如dc/os(由mesos、docker等组成)

Here's the interface you have to implement, keep an eye on the guarantees that you have to support. There's a utility to test the contracts. 如果您需要示例,Hadoop 中有大量不同文件系统的实现,例如 S3/AzureBlobs/FTP 可以作为一个很好的起点。

您可以通过 class 配置文件系统实现,所有组件都应遵循 fs.defaultFS as the configuration key

是的,您可以提供支持 HDFS 的文件存储实现 API。

例如您可以使用 AWS S3(s3n:// 或 s3a://)代替 HDFS。很少有其他文件系统支持 HDFS API.

YARN 可以在没有 HDFS 的情况下使用。您不必配置和启动 HDFS 服务,因此它会 运行 没有 HDFS。

但是没有Hadoop就无法安装YARN。您必须下载 Hadoop 并仅配置 YARN(以及您要使用的其他服务)。

这里有一些不同的问题

您可以使用 YARN 部署应用程序,使用类似 S3 的东西来传播二进制文件吗?

是的:LinkedIn 过去就是这样部署 Samza 的,使用 http:// 下载。 Samza 不需要集群文件系统,因此集群中没有 hdfs 运行,只有本地 file:// 文件系统,每个主机一个。

需要集群文件系统的应用程序无法在这样的集群中运行。

你能用替代文件系统建立一个 YARN 集群吗?

是的。

"filesystem"是什么,请看Filesystem Specification。您需要跨文件系统的一致视图:新创建的文件列表(),未找到已删除的文件,更新立即可见。文件和目录的 rename() 必须是原子操作,理想情况下为 O(1)。它用于工作的原子提交、检查点……哦,对于 HBase,需要 append()。

MapR 这样做,Redhat 和 GlusterFS; IBM 和 EMC 的。请记住,几乎所有内容都在 HDFS 上进行了测试;你最好希望其他集群 FS 已经完成测试(或者有人已经为他们完成了,例如 Hortonworks 或 Cloudera)。

能否使用对象存储作为底层 FS 来启动 YARN 集群。

这取决于 FS 是否提供一致的文件系统视图,而不是某种最终一致性的世界观。 HBase 才是真正的考验。

  1. Microsoft Azure Storage 是一致的,具有获得对 FS 位的独占访问权的租约,并且 rename()s 非常快。在 Azure 中它完全取代了 HDFS。
  2. Google 云存储于 2017 年 3 月 1 日宣布 GCS 提供一致性。也许现在可以作为替代品使用;没有经验。
  3. Amazon EMR 确实提供了 s3 作为替代品,使用 (a) dynamo 来获得一致的元数据,以及 (b) 做一些可怕的事情来让 HBase 工作。
  4. ASF自带的S3客户端,S3a,不能替代。我们团队的工作人员一直专注于将读写性能作为数据的来源和最终目的地;在 s3guard 中添加 dynamo 层和在 s3guard committer 中,关于能够将其用作高性能工作目标(在避免重命名()的同时对故障具有弹性)。

您正在编写的新分布式文件系统可以用作 HDFS 的替代品吗?

嗯,你当然可以试试!

首先让所有文件系统合同测试正常工作,这些测试衡量基本的 API 合规性。然后看看所有的 Apache Bigtop 测试,都是做系统集成的。我建议你最初避免使用 HBase 和 Accumulo,重点关注:Mapreduce、Hive、spark、Flink。

不要害怕进入 Hadoop common-dev 和 bigtop 列表并提出问题。