我必须记录几个基准变量。不幸的是,有些变量需要我在hadoop代码(map()、reduce()、InputFormat等)中执行测量。我想知道什么是"正确"的方法。我可以使用全局变量来存储我的基准变量,并在Tool.run()完成前将其转储,但我认为有更好的方法可以做到这一点。有人知道怎么做吗,或者有什么想法吗?
更新
由于一些限制,基准测试代码必须嵌入hadoop中。我有一个"测试者"应用程序,它运行许多hadoop作业并收集基准测试结果。其想法是在单个"测试程序"运行中运行作业并从作业执行中收集基准数据。
没有什么能阻止您独立于MapReduce对这些方法进行基准测试。M/R并不是魔术——只是一个JVM在服务器上为您运行一些代码。
我们一直针对单独的Map和Reduce函数运行JUnit测试。对它们进行剖析没有什么实质性的不同。