如何在hadoop环境中实现负载平衡。我刚刚开始阅读有关hadoop的资料。想知道负载平衡在整个生态系统中是如何工作的吗
iyr7buue1#
hadoop将mapreduce作业的输入分割成固定大小的片段,称为输入分割,或仅分割。hadoop为每个分割创建一个Map任务,为分割中的每个记录运行用户定义的Map函数。有许多分割意味着处理每个分割所花费的时间与处理整个输入所花费的时间相比是很小的。因此,如果我们并行处理分割,如果分割较小,则处理的负载均衡性更好,因为更快的机器能够在作业过程中按比例处理比较慢的机器更多的分割。即使机器是相同的,失败的进程或并发运行的其他作业也会使负载平衡变得更理想,并且随着拆分变得更细粒度,负载平衡的质量也会提高。另一方面,如果拆分太小,那么管理拆分和创建Map任务的开销将开始主导整个作业执行时间。对于大多数作业,一个好的分割大小往往是hdfs块的大小,默认情况下为64 mb,尽管这可以为集群更改(对于所有新创建的文件),或者在创建每个文件时指定。
1条答案
按热度按时间iyr7buue1#
hadoop将mapreduce作业的输入分割成固定大小的片段,称为输入分割,或仅分割。hadoop为每个分割创建一个Map任务,为分割中的每个记录运行用户定义的Map函数。有许多分割意味着处理每个分割所花费的时间与处理整个输入所花费的时间相比是很小的。因此,如果我们并行处理分割,如果分割较小,则处理的负载均衡性更好,因为更快的机器能够在作业过程中按比例处理比较慢的机器更多的分割。即使机器是相同的,失败的进程或并发运行的其他作业也会使负载平衡变得更理想,并且随着拆分变得更细粒度,负载平衡的质量也会提高。另一方面,如果拆分太小,那么管理拆分和创建Map任务的开销将开始主导整个作业执行时间。对于大多数作业,一个好的分割大小往往是hdfs块的大小,默认情况下为64 mb,尽管这可以为集群更改(对于所有新创建的文件),或者在创建每个文件时指定。