gpt4 book ai didi

unit-testing - 使用 MRUnit 进行 Hadoop 测试

转载 作者:可可西里 更新时间:2023-11-01 14:12:45 25 4
gpt4 key购买 nike

我正在将之前在内存集群(使用 MiniMRCluster)中运行的大量现有 Hadoop 单元测试 retrofit 到 MRUnit 中。现有的测试用例本质上是为 Map 阶段提供输入,然后测试 Reduce 阶段的输出。

我有三个问题,其中任何一个的最佳答案都符合条件:

1) 通过使用 MRUnit 而不是内存集群进行单元测试,我在架构上会失去什么?

2) 是否值得将现有测试用例分解为 Map-only 测试和 Reduce-only 测试?在某些情况下我必须将它们分解吗?

3)是否有MRUnit无法覆盖的测试场景?

最佳答案

改造过程教会了我一些可能的答案,我将在此处发布。不过,我还是更愿意听听别人怎么说,所以我不会接受这个答案。

1) 我至少失去了两件事。首先,MR 管道被模拟。因此,某些“模拟”有可能隐藏了 MR 作业中可能存在的问题。其次,MR 作业包括来自文件系统的输入和到文件系统的输出,以及 map 和 reduce 阶段之间的分区和排序。 MRUnit 并没有完全处理 Hadoop 的这些方面,因此如果一个 MR 作业依赖于这些功能,则无法对其进行测试。不过,仍然可以重写测试以仅测试 Map/Reduce 部分。

2) 在大多数情况下,分解现有测试是不值得的。例如,如果现有测试依赖于分区程序,那么分解测试可能是有意义的,这样 Map 和 Reduce 就可以在不涉及分区程序的情况下进行测试。不过,总的来说,“只是为了去做”是不值得的。

3) 是的——一个分区。另一种输出格式。对于某些人来说这可能不是什么大问题,但是我们现有的许多工作都依赖于这两个功能,并且由于单元测试是针对输出格式的最终​​输出,我不得不重写很多测试让他们工作。

[编辑]

只需阅读来自 Cloudera 的一篇博客文章即可找到答案:

http://www.cloudera.com/blog/2009/07/debugging-mapreduce-programs-with-mrunit/

关于unit-testing - 使用 MRUnit 进行 Hadoop 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6118724/

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