I/O 在 Hadoop 中从 HDFS 读取的时间
I/O time when reading from HDFS in Hadoop
我想测量在 Hadoop 中执行 I/O(从 HDFS 读取)时 map 和 reduce 所花费的时间。我正在使用纱线。
Hadoop 2.6.0。
有哪些选择?
一个粗略的估计可能是创建自定义计数器。对于映射器和缩减器,您可以收集映射器(或缩减器)开始处理和结束的时间戳。从开始和结束时间戳开始,计算并将其添加到自定义计数器,即映射器添加到 MAPPER_RUNNING_TIME
和缩减器添加到 REDUCER_RUNNING_TIME
(或者你想给它的任何名称)。执行完成后,分别从 MILLIS_MAPS
和 MILLIS_REDUCES
中减去计数器的总值。您可能需要查看 Hadoop 源代码以确认暂存时间是否包含在 MILLIS_MAPS
和 MILLIS_REDUCES
中。有了这个估计,你需要考虑到任务是同时执行的,所以时间将是相当总的(或所有映射器和缩减器的总时间)。
我个人没有这样做过,但我认为除非您找到更好的解决方案,否则此解决方案可行。
如果您需要精确测量 - 您可以使用 btrace, add it as a javaagent to your tasks via mapreduce.{map,reduce}.java.opts
- and then write script which measures whatever you like. Sample of btrace scripts are here。
还有 HTrace - 这可能也有帮助。
我想测量在 Hadoop 中执行 I/O(从 HDFS 读取)时 map 和 reduce 所花费的时间。我正在使用纱线。 Hadoop 2.6.0。 有哪些选择?
一个粗略的估计可能是创建自定义计数器。对于映射器和缩减器,您可以收集映射器(或缩减器)开始处理和结束的时间戳。从开始和结束时间戳开始,计算并将其添加到自定义计数器,即映射器添加到 MAPPER_RUNNING_TIME
和缩减器添加到 REDUCER_RUNNING_TIME
(或者你想给它的任何名称)。执行完成后,分别从 MILLIS_MAPS
和 MILLIS_REDUCES
中减去计数器的总值。您可能需要查看 Hadoop 源代码以确认暂存时间是否包含在 MILLIS_MAPS
和 MILLIS_REDUCES
中。有了这个估计,你需要考虑到任务是同时执行的,所以时间将是相当总的(或所有映射器和缩减器的总时间)。
我个人没有这样做过,但我认为除非您找到更好的解决方案,否则此解决方案可行。
如果您需要精确测量 - 您可以使用 btrace, add it as a javaagent to your tasks via mapreduce.{map,reduce}.java.opts
- and then write script which measures whatever you like. Sample of btrace scripts are here。
还有 HTrace - 这可能也有帮助。