Hadoop的:基于簇大小
读通过的Hadoop所产生的日志,我可以看到类似这样的行可用的地图插槽数..Hadoop的:基于簇大小
2013-05-06 16:32:45,118 INFO org.apache.hadoop.mapred.JobClient (main): Setting default number of map tasks based on cluster size to : 84
有谁知道这个值是如何计算的? 如何在我的程序中获得此值?
所以这是根据您的输入大小默认设置的。 http://wiki.apache.org/hadoop/HowManyMapsAndReduces。您可以指定更多的映射器,但不能少于hadoop定义的数量。
您应该可以通过获取配置选项“mapred.map.tasks”来访问此编号。如果你使用旧的API,你也可以从这个函数中获取它。
conf.getNumMapTasks();
这个前面的问题,How to set the number of map tasks in hadoop 0.20?,有一些很好的答案,以及
这主要是InputFormat
的责任找到了没有。的映射器,它是基于由您的InputFormat类的getSplits(JobContext context)
方法编写的逻辑创建的InputSplits
完成的。指定no。通过Job或配置文件映射器或通过shell指定它只是提示框架,并不能保证你总能得到指定的no。的mappers。
我不认为这个问题是关于否。工作需要的mappers。问题是关于一个集群可以处理的同时映射器的数量。 – ernesto 2014-11-11 11:51:39
我grepped Hadoop的源代码,并没有找到字符串Setting default number of map tasks based on cluster size to
在所有(但我发现其他字符串,正在打印时运行MR作业)。此外,这个字符串不会被打印在本地安装的任何地方。谷歌搜索它列出了AWS与EMR的问题。 如您所确认的,您实际上使用Amazon Elastic MapReduce。我相信EMR对类Hadoop有一些自己的修改,它会输出这个特定的行。
就计算这个数字而言,我怀疑它是根据像total number of (active) nodes in cluster (N)
和number of map slots per node (M)
这样的特征,即N*M
来计算的。但是,也可能会考虑其他AWS特定的资源(内存)限制。您必须在EMR相关论坛中询问确切的公式。另外,JobClient
公开了关于集群的一组信息。使用方法JobClient#getClusterStatus()可以访问如下信息:
- 集群的大小。
- 追踪器的名称。
- 列入黑名单/活动跟踪器的数量。
- 群集的任务容量。
- 当前正在运行的地图数&减少任务。
通过ClusterStatus类对象,因此您可以尝试手动计算您的程序中所需的数字。
这似乎很有用,但'JobClient'属于旧包'org.apache.hadoop.mapred',我试图弄清楚如何从org.apache.hadoop.mapreduce中获得'JobClient'。工作'对象。 我也发现'org.apache.hadoop.mapred.JobTracker'类有'getClusterMetrics()'方法。它返回我需要的信息..但又没有找到一种方法来获取此对象的一个实例。 – Matteo 2013-05-07 11:46:08
我认为你在这里使用'JobClient'。或者,您可以尝试通过JMX访问JobTracker。不过,我不确定它是否会提供所有需要的指标。在hadoop 2.0中检索更容易。看看[示例](https://github.com/apache/hadoop-common/blob/trunk/hadoop-mapreduce-project/hadoop-mapreduce-examples/src/main/java/org/apache/hadoop /examples/pi/DistSum.java)附带hadoop的源代码(第391,405行)。它使用Cluster#getClusterStatus()来获取一个'ClusterMetrics'实例。 'Cluster'实例是通过像JobClient这样的URL来构造的。 – harpun 2013-05-07 20:43:54
您正在使用哪种Hadoop版本?您是否在AWS上使用Amazon Elastic MapReduce? – harpun 2013-05-06 17:59:45
是的,我在AWS上使用Amazon Elastic MapReduce。 Hadoop版本1.0.4 – Matteo 2013-05-06 18:32:25