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

时间:2016-05-01 07:30:10

标签: hadoop mapreduce replication-factor

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

1 个答案:

答案 0 :(得分:1)

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

现在进行一些讨论。从我最近的实验中我得出结论,处理时间与你想要处理的数据量有很大关系(有意义)。在我们的集群上,Mapper平均需要7-8秒才能读取128MB的块。现在,为了预测总体执行时间,您需要考虑几个因素:

  1. Mapper产生多少数据,这将决定Hadoop执行Shuffling所需的时间
  2. Reducer在做什么?它是否进行了一些迭代处理? (可能很慢!)
  3. 资源的配置是什么? (允许在同一台机器上运行多少Mapper和Reducers)
  4. 最后还有其他工作同时进行吗? (这可能会大大减慢作业速度,因为您的Reducer插槽可以占用等待数据而不是做有用的事情。)
  5. 对于一台机器来说,您已经看到了预测作业执行时间的复杂性。基本上在我的研究期间,我能够得出结论,平均一台机器能够处理20-50 MB /秒(该速率根据以下公式计算:总输入大小/总作业运行时间)。处理速率包括暂存时间(例如,当您的应用程序启动并将所需文件上载到群集时)。不同用例的处理速度是不同的,并且受输入大小的影响很大,更重要的是Mappers生成的数据量(这些值再次用于我们的基础架构和不同的机器配置,您将看到完全不同的执行时间)。

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

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

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