我的 Yarn Map-Reduce 作业花了很长时间。
我的 Yarn Map-Reduce 作业花了很长时间。
输入文件大小: 75GB
Mapper数量: 2273
Reducer数量: 1 (在web UI中显示)
分片数量: 2273
输入文件数量: 867
集群: Apache Hadoop 2.4.0
5个节点的集群,每个节点1TB。
1个主节点和4个数据节点。
现在已经过去4小时,只完成了12%的映射。只是想知道,考虑到我的集群配置,这是否有意义或配置有问题?
yarn-site.xml
yarn.nodemanager.aux-services mapreduce_shuffle yarn.nodemanager.aux- services.mapreduce.shuffle.class org.apache.hadoop.mapred.ShuffleHandler yarn.resourcemanager.resource- tracker.address master:8025 yarn.resourcemanager.scheduler.address master:8030 yarn.resourcemanager.scheduler.address master:8030 yarn.resourcemanager.address master:8040 yarn.resourcemanager.hostname master The hostname of the RM. yarn.scheduler.minimum-allocation-mb 1024 Minimum limit of memory to allocate to each container request at the Resource Manager. yarn.scheduler.maximum-allocation-mb 8192 Maximum limit of memory to allocate to each container request at the Resource Manager. yarn.scheduler.minimum-allocation-vcores 1 The minimum allocation for every container request at the RM, in terms of virtual CPU cores. Requests lower than this won't take effect, and the specified value will get allocated the minimum. yarn.scheduler.maximum-allocation-vcores 32 The maximum allocation for every container request at the RM, in terms of virtual CPU cores. Requests higher than this won't take effect, and will get capped to this value. yarn.nodemanager.resource.memory-mb 8192 Physical memory, in MB, to be made available to running containers yarn.nodemanager.resource.cpu-vcores 4 Number of CPU cores that can be allocated for containers. yarn.nodemanager.vmem-pmem-ratio 4 yarn.nodemanager.vmem-check-enabled false Whether virtual memory limits will be enforced for containers
使用多个输出的Map-Reduce作业。所以Reducer会发出多个文件。每台机器有15GB的RAM。运行的容器是8个。RM Web UI中可用的总内存为32GB。
任何指导都将不胜感激。提前致谢。
有几点需要检查:
-
考虑到你分享的数据,块和拆分大小似乎非常小。请尝试将两者增加到最佳水平。
-
如果未使用,请使用自定义分区程序,将数据均匀分布在还原器之间。
-
考虑使用组合器。
-
考虑在存储映射器结果时使用适当的压缩。
-
使用最佳数目的块副本。
-
根据需要增加还原器的数量。
这些将有助于提高性能。尝试并分享您的发现!!
编辑1:尝试将成功映射任务生成的日志与长时间运行的映射任务尝试生成的日志进行比较。 (12% 表示完成了 272 个映射任务)。你会知道它在哪里卡住了。
编辑2:调整这些参数:yarn.scheduler.minimum-allocation-mb,yarn.scheduler.maximum-allocation-mb,yarn.nodemanager.resource.memory-mb,mapreduce.map.memory.mb,mapreduce.map.java.opts,mapreduce.reduce.memory.mb,mapreduce.reduce.java.opts,mapreduce.task.io.sort.mb,mapreduce.task.io.sort.factor
这些将改善情况。采用试错方法。
另请参阅:容器超出内存限制
编辑3:尝试理解一部分逻辑,将其转换为pig脚本,执行并查看其行为。