3

无论我是从不同的客户端服务器还是从同一个客户端服务器提交一堆 hadoop 作业,它对资源有任何可衡量的影响吗?我认为不会,因为所有工作都在集群中完成。它是否正确?

4

3 回答 3

6

客户端提交到 Hadoop 集群的唯一资源密集型是输入拆分的计算。当输入数据很大或者从同一个客户端提交太多作业时,由于输入拆分计算,作业提交可能会变得有点慢。

我不记得 Hadoop 版本或参数,但包含一个可配置参数,用于将输入拆分的计算从客户端提交作业转移到 Hadoop 集群。

于 2013-01-21T01:06:34.197 回答
3

从哪里提交工作真的不重要。客户端本身并没有做太多的事情,它使用 RPC 协议来联系服务,然后只是闲置直到工作完成。

此外,最重要的是您使用哪种调度程序来分配资源,这可能会产生最显着的差异并决定将哪些资源分配给哪个作业。更多关于工作安排在这里

于 2013-01-20T05:48:07.900 回答
1

我认为您不能将输入拆分计算移到“经典”版本的 Job Tracker 中。在 YARN 中,您可以使用

“yarn.app.mapreduce.am.compute-splits-in-cluster”

我猜,Hadoop 的人不想通过创建输入拆分来重载 Job tracker。类似于在 HDFS 中不为 Namenode 分配太多工作的设计决策。

在 YARN 中,每个作业都有自己的 Application Master,因此不必担心像作业跟踪器这样的 SPOF/瓶颈主控器过载。

关于原始问题,客户端作业必须联系名称节点以获取块位置(我已经看到块存储类上的部分代码调用数据节点以获取一些元数据......不确定这些是否发生在输入拆分创建或在任务跟踪器节点中)。如果您在同一个客户端节点上处理大量作业,这可能会成为一个问题。如果您使用的是 YARN,如果所有这些通信都发生在集群内,性能将会略有提高。

需要检查 Oozie 如何处理此问题。

希望这会有所帮助!阿伦

于 2014-02-27T16:52:47.377 回答