gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 15:29:34 26 4
gpt4 key购买 nike

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

最佳答案

首先,我建议阅读一些有关该问题的科学论文(Google 学术搜索是一个很好的起点)。

现在讨论一下。从我最近的实验中我得出结论,处理时间与您要处理的数据量有很强的关系(有道理)。在我们的集群上,Mapper 读取一个 128MBytes 的 block 平均需要大约 7-8 秒。现在,为了预测整体执行时间,您需要考虑几个因素:

  1. Mapper产生多少数据,这将决定Hadoop执行Shuffling所需的时间
  2. Reducer 在做什么?它会做一些迭代处理吗? (可能会很慢!)
  3. 资源的配置是什么? (允许在同一台机器上运行多少个Mappers和Reducers)
  4. 最后还有其他作业同时运行吗? (这可能会显着降低作业速度,因为您的 Reducer 插槽可能会被占用等待数据而不是做有用的事情)。

因此对于一台机器,您已经看到预测作业执行时间的任务的复杂性。基本上在我的研究期间,我能够得出结论,平均一台机器能够处理 20-50 兆字节/秒(速率根据以下公式计算:总输入大小/总作业运行时间)。处理速率包括暂存时间(例如,当您的应用程序启动并将所需文件上传到集群时)。不同用例的处理速率不同,并且受输入大小的影响很大,更重要的是受映射器生成的数据量的影响(同样,这个值是针对我们的基础设施的,在不同的机器配置上你会看到完全不同的执行时间)。

当你开始扩展你的实验时,你会发现平均性能有所提高,但我再次从我的研究中得出结论,它不是线性的,你需要自己适应,对于你自己的基础设施,模型具有各自的变量这将近似于作业执行时间。

为了给你一个想法,我将分享部分结果。在 1 个节点上执行确定用例时的速率为 ~46MBytes/second,对于 2 个节点为~73MBytes/second,对于 3 个节点为~85MBytes/second(在我的例子中,复制因子等于节点数) .

问题很复杂,需要时间、耐心和一些分析技巧才能解决。玩得开心!

关于hadoop - 如果我只有一个工作节点,处理文件需要多长时间?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36964214/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com