如果我只有一个工作节点,处理文件需要多长时间?

sshcrbum  于 2021-05-29  发布在  Hadoop
关注(0)|答案(1)|浏览(576)

假设我有一个25块的数据,复制因子是1。Map程序需要大约5分钟来读取和处理单个数据块。那么如何计算一个工作节点的时间呢?那15个节点呢?如果我们把复制因子改为3,时间会变吗?我真的需要帮助。

cuxqih21

cuxqih211#

首先,我建议阅读一些关于这个问题的科学论文(googlescholar是一个很好的起点)。
现在讨论一下。从我最近的实验中我得出结论,处理时间与你想要处理的数据量有很强的关系。在我们的集群上,Map器读取128MB的数据块平均需要7-8秒。现在,您需要考虑几个因素来预测总体执行时间:
Map器产生多少数据,这将决定hadoop执行洗牌所需的时间
你在干什么?它会做一些迭代处理吗(可能很慢!)
资源的配置是什么(允许在同一台机器上运行多少Map器和减速器)
最后,是否有其他作业同时运行(这可能会大大降低作业的速度,因为您的减速机插槽可能会被占用,等待数据而不是做有用的事情)。
因此,对于一台机器,您已经看到了预测作业执行时间的任务的复杂性。基本上在我的研究中,我能够得出这样的结论:平均来说,一台机器能够处理20-50兆字节/秒的数据(速率是根据以下公式计算的:总输入大小/总作业运行时间)。处理速率包括转移时间(例如,当应用程序启动并将所需文件上载到集群时)。对于不同的用例,处理速度是不同的,并且很大程度上受输入大小的影响,更重要的是受Map器生成的数据量的影响(这个值同样适用于我们的基础结构,并且在不同的机器配置上,您将看到完全不同的执行时间)。
当你开始扩展你的实验时,你会看到平均性能的提高,但从我的研究中,我可以再次得出结论,它不是线性的,你需要自己去适应,对于你自己的基础设施,模型中有各自的变量,这些变量将近似于作业执行时间。
为了给你一个想法,我将分享一些结果。在1个节点上执行determine用例时的速率约为46MB/秒,2个节点为73MB/秒,3个节点为85MB/秒(在我的示例中,复制因子等于节点数)。
这个问题很复杂,需要时间、耐心和一些分析技巧来解决。玩得高兴!

相关问题