对于某个Hadoop MapReduce映射器任务,我已经有了mapper任务的完整执行时间。通常,映射器有三个步骤:(1)从HDFS或其他来源(如Amazon S3)读取输入; (2)处理输入数据; (3)将中间结果写入本地磁盘。现在,我想知道是否可以知道每一步花费的时间。
我的目的是获得(1)映射器从HDFS或S3读取输入需要多长时间的结果。结果只表明映射器可以读取的速度。它更像是映射器的I / O性能; (2)映射器处理这些数据需要多长时间,它更像是任务的计算能力。
任何人都知道如何获得这些结果?
感谢。
答案 0 :(得分:0)
只需实现一个不发出任何内容的只读映射器。然后,这将指示每个拆分被读取(但未处理)所需的时间。
您可以进一步定义在运行时传递给作业的变量(通过作业属性),它允许您只执行以下操作之一(例如,通过针对Enum对象解析变量,然后打开值) ):
这当然假设您可以访问映射器代码。