i/o时间

umuewwlo  于 2021-05-29  发布在  Hadoop
关注(0)|答案(2)|浏览(462)

我想测量在hadoop中执行i/o(从hdfs读取)时map和reduce所花费的时间。我用的是Yarn。hadoop 2.6.0版。有什么选择?

zlwx9yxi

zlwx9yxi1#

一个粗略的估计可能是创建自定义计数器。对于mapper和reducer,可以在mapper(或reducer)开始处理和结束时收集时间戳。从起始时间戳和结束时间戳开始,计算并将其添加到自定义计数器,即Map器添加到 MAPPER_RUNNING_TIME 异径管 REDUCER_RUNNING_TIME (或者你想给它起什么名字)。执行完成后,从中减去计数器的聚合值 MILLIS_MAPS 以及 MILLIS_REDUCES 分别。不过,您可能需要查看hadoop源代码,以确认转移时间是否包含在hadoop中 MILLIS_MAPS 以及 MILLIS_REDUCES . 根据这个估计,您需要考虑到任务是并发执行的,因此时间相当总(或者为所有Map器和还原器聚合)。
我个人没有这么做,但我认为这个解决方案可以工作,除非你找到更好的。

gwbalxhn

gwbalxhn2#

如果您需要精确的度量,可以使用btrace,通过将它作为javaagent添加到您的任务中 mapreduce.{map,reduce}.java.opts -然后写一个剧本来衡量你喜欢的东西。这里有btrace脚本的示例。
还有htrace——这可能也会有所帮助。

相关问题