我最近在研究分布式计算,发现Hadoop Yarn就是其中之一。 所以我想如果我只是建立Hadoop Yarn集群,那么每个应用程序都将分布式运行。
但是现在有人告诉我,HADOOP Yarn 本身不能做任何事情,需要其他的东西,比如mapreduce、spark和hbase。
如果这是正确的,那么这是否意味着只有有限的任务可以使用 Yarn 运行? 或者我可以将 Yarn 的分布式计算应用于我想要的所有应用程序吗?
Hadoop是整个系统的名称。
HDFS是实际的存储系统。可以将其视为 S3 或分布式 Linux 文件系统。
YARN是一个用于调度作业和分配资源的框架。它为你处理这些事情,但你与它互动不多。
Spark和MapReduce由Yarn管理。有了这两个,你实际上可以编写代码/应用程序并为集群提供工作。
HBase使用HDFS存储(基于文件(并提供NoSql存储。
从理论上讲,你可以在 Yarn 上运行的不仅仅是 Spark 和 MapReduce,你还可以使用 Yarn 以外的其他东西(Kubernetes 正在开发中或现在支持(。您甚至可以编写自己的处理工具,队列/资源管理系统,存储...Hadoop有很多部分,你可以使用,也可以不使用,这取决于你的情况。但大多数Hadoop系统使用Yarn和Spark。
例如,如果你想部署Docker容器,那么只有一个Kubernetes集群将是更好的选择。如果需要使用 Spark 进行批处理/实时处理,请使用 Hadoop。
YARN 本身就是一个资源管理器。您将需要编写可以部署到这些资源上的代码,然后可以执行任何操作,因为运行任务的节点本身能够运行作业。例如,如果不先安装该脚本的依赖项,则无法分发 Python 库。Mesos 比 YARN 更通用/更易于访问,如果你想为相同的影响提供更大的灵活性。
YARN主要支持运行JAR文件,shell脚本(至少来自Oozie(或Docker容器也可以部署到其中(参考Apache文档(
您还可以参考 Apache 滑块或斜纹木项目以获取更多信息。