假设我有一个包含25个块的数据,复制因子为1.映射器需要大约5分钟来读取和处理单个数据块。那么如何计算一个工作节点的时间?那15个节点呢?如果我们将复制因子更改为3,时间会改变吗? 我真的需要帮助。
答案 0 :(得分:1)
首先,我建议阅读一些有关该问题的科学论文(Google学术搜索是一个很好的起点)。
现在进行一些讨论。从我最近的实验中我得出结论,处理时间与你想要处理的数据量有很大关系(有意义)。在我们的集群上,Mapper平均需要7-8秒才能读取128MB的块。现在,为了预测总体执行时间,您需要考虑几个因素:
对于一台机器来说,您已经看到了预测作业执行时间的复杂性。基本上在我的研究期间,我能够得出结论,平均一台机器能够处理20-50 MB /秒(该速率根据以下公式计算:总输入大小/总作业运行时间)。处理速率包括暂存时间(例如,当您的应用程序启动并将所需文件上载到群集时)。不同用例的处理速度是不同的,并且受输入大小的影响很大,更重要的是Mappers生成的数据量(这些值再次用于我们的基础架构和不同的机器配置,您将看到完全不同的执行时间)。
当你开始扩展你的实验时,你会看到平均提高的性能,但是再次从我的研究中我可以得出结论,它不是线性的,你需要自己适合,对于你自己的基础设施,模型与各自的变量这将近似于作业执行时间。
为了给你一个想法,我将分享部分结果。执行时确定1节点用例的速率为~46MBytes /秒,2个节点为~73MBytes /秒,3个节点为~85MBytes /秒(在我的情况下,复制因子等于节点数)
问题很复杂需要时间,耐心和一些分析技能来解决它。玩得开心!