Map 配置Hadoop集群时应设置多少映射器/还原器?

Map 配置Hadoop集群时应设置多少映射器/还原器?,map,hadoop,reduce,Map,Hadoop,Reduce,配置Hadoop集群时,设置集群映射器/还原器数量的科学方法是什么?没有公式。这取决于你有多少内核和多少内存。制图器的数量+减速器的数量一般不应超过芯数。请记住,机器还运行任务跟踪器和数据节点守护进程。其中一个普遍的建议是更多的映射器而不是还原器。如果我是你,我会用合理数量的数据来运行我的一个典型工作来尝试它 也许,您还应该看看reducer延迟加载,它允许reducer在需要时稍后启动,因此基本上,可以增加map插槽的数量。虽然对此没有太多想法,但似乎很有用。摘自: 映射器的数量根据前面描述的

配置Hadoop集群时,设置集群映射器/还原器数量的科学方法是什么?

没有公式。这取决于你有多少内核和多少内存。制图器的数量+减速器的数量一般不应超过芯数。请记住,机器还运行任务跟踪器和数据节点守护进程。其中一个普遍的建议是更多的映射器而不是还原器。如果我是你,我会用合理数量的数据来运行我的一个典型工作来尝试它

也许,您还应该看看reducer延迟加载,它允许reducer在需要时稍后启动,因此基本上,可以增加map插槽的数量。虽然对此没有太多想法,但似乎很有用。

摘自:

映射器的数量根据前面描述的数据局部性原则确定。数据局部性原则:Hadoop尽最大努力在数据在本地存在的节点上运行映射任务,以优化网络和节点间通信延迟。由于输入数据被分割成若干块并馈送到不同的映射任务,因此最好将馈送到该映射任务的所有数据都放在一个节点上。因为HDFS只保证在一个节点上存在大小等于其块大小(64M)的数据,建议/提倡将分割大小等于HDFS块大小,以便map任务可以利用此数据本地化。因此,每个映射器需要64M的数据。如果我们看到一些地图绘制者只运行了很短的一段时间,试着减少地图绘制者的数量,让他们运行一分钟左右

减速器的数量应略少于集群中减速器插槽的数量(插槽的概念在配置集群时随作业/任务跟踪器属性中的预配置而来),以便所有减速器在一次浪潮中完成,并充分利用集群资源

引用“Hadoop明确指南,第3版”,第306页

因为MapReduce作业通常是 受I/O限制,有比处理器更多的任务以获得更好的性能是有意义的 利用率

超额订阅量取决于作业的CPU利用率 您可以跑步,但一个好的经验法则是将因子设置为1到2之间 任务(包括映射和减少任务)比处理器多

上面引号中的处理器相当于一个逻辑核


但这只是理论上的,而且很可能每个用例都不同于另一个,需要执行一些测试。但是这个数字可以作为测试的一个良好开端。

谢谢。。在每台机器上使用48 GB RAM,并具有8核机器。假设我们为每个映射任务保留1 GB RAM,那么最佳值是48 GB RAM-DataNode为1 GB-TaskTracker为1 GB=46 GB可用RAM。在这种情况下,我们应该将8作为一台机器的映射器,还是将其增加到46,考虑到所有还原器都是在映射器完成后启动的情况?大多数CPU都带有超线程,默认情况下是启用的。因此,如果您有16个cpu线程,您可能可以进一步增加这些线程的数量。我会关注CPU的数量。对于内存,即使您并没有全部使用它,系统也总能找到一些很好的使用方法,比如缓存。默认情况下,守护进程为1G。我会监控系统并考虑更高的数量。大多数情况下,映射程序与还原程序并行运行。字符数不足。。。所以,如果我是你,我会从10个映射器和4个减速机开始。你有多少磁盘?地图绘制者将并行阅读。您有多个磁盘设备吗?谢谢。到目前为止,我只有1个磁盘,而不是一个用于冗余的RAID。我现在注意到的是,尽管我为每个映射器分配了1GB内存,但当我运行top命令时,我看到它占用了大约1.6GB的虚拟内存和大约0.5GB的实际内存。这种行为正常吗?通常不建议在每个节点上使用冗余。HDFS有自己的冗余。假设您运行10个映射程序,它们将同时读取磁盘。对于普通7200rpm磁盘,2-3个映射器是一个不错的数字。对于您的系统,使用48GMEM和16个cpu线程,I/O很可能是问题所在。我建议您为每个节点获取多个磁盘,并将它们设置为JBOD。关于记忆问题,我不会太担心。通常,如果指定1G,虚拟内存可能超过1G。这将非常依赖于应用程序和硬件。如果数据在映射器端聚合得非常好,那么通过网络传输的数据就会减少。在这种情况下,如果减速器启动得太早,它将只是等待数据处理。如果你有快速的网络,情况也会一样。另一方面,减速器的延迟会延迟工作。我们的目标不是运行更多的mapper,而是更快地完成任务。Root:给了你一个评论!。我不确定,但我只是想澄清一下,比如说我们有一台没有HT的8核机器。比方说,这里我们运行5个并行映射任务和2个并行reduce任务。因此,这里我们为reduce任务保留了2个插槽。如果我们懒洋洋地加载reducer,这两个插槽就可以被map任务使用,这会将并行map任务的数量增加到7个吗?JtheRocker:如果我们将mappers设置为5,reducer设置为2,我们就不能使用reducer的插槽。最多5个地图绘制者可以随时运行。techlad:明白了。那么,懒惰加载对您有效吗?不过我不确定。