Alp*_*lps 6 benchmarking hadoop timing
恐怕我不理解Map-Reduce工作的时间结果.例如,我正在运行的作业从作业跟踪器中获得以下结果.
完成时间:1分钟,39秒
花费的CPU时间(毫秒)150,460 152,030 302,490
CPU时间(ms)中的条目分别用于Map,Reduce和Total.但是,那么如何测量"CPU花费的时间"以及它意味着什么?这是分配给该工作的每个映射器和减速器所花费的总累计时间吗?是否有可能从框架中测量其他时间,例如洗牌,排序,分区等时间?如果是这样,怎么样?
困扰我的第二个问题.我在这里看到了一些帖子(Link1,Link2),建议在驱动程序类中使用getTime():
long start = new Date().getTime();
boolean status = job.waitForCompletion(true);
long end = new Date().getTime();
System.out.println("Job took "+(end-start) + "milliseconds");
Run Code Online (Sandbox Code Playgroud)
这不是Job Tracker输出中第一个条目提供的吗?这有必要吗?什么是为hadoop工作计时的最佳方式,特别是当我想要计算IO时间,计算每个节点/每个阶段的时间时?
Don*_*ner 14
地图阶段包括:记录阅读器,地图,组合器和分区器.
reduce阶段包括:shuffle,sort,reduce,output.
您看到的CPU时间是整个映射阶段和整个还原阶段......而不仅仅是函数本身.这是一种令人困惑的术语,因为你有map函数和reduce函数,它们只是map 阶段的一部分并且减少了阶段.这是群集中所有节点的总CPU时间.
CPU时间与实时大不相同.CPU时间是在CPU上花费的时间,而实时是你和我作为人类所经历的.想一想:假设您在相同的数据上运行相同的作业,但是在一个20节点集群上运行,然后是200节点集群.总的来说,两个集群将使用相同数量的CPU时间,但200节点集群的实时运行速度将提高10倍.当您的共享系统同时在其上运行大量作业时,CPU时间是一个有用的指标.
我不知道你会如何深入挖掘每个阶段的CPU时间.使用日期计时器可能不是你想要的.
| 归档时间: |
|
| 查看次数: |
7152 次 |
| 最近记录: |