我在一台服务器上启动了1-3个并发的hadoop实例(v.1.2.1) 这些是完全独立的,其中:
我已采取措施消除任何潜在的瓶颈:
tmpfs上挂载整个hadoop文件系统; 这包括hadoop.tmp.dir (在core-site.xml )以及dfs.name.dir和dfs.data.dir (在hdfs-site.xml )。 因此,HDFS和映射器的中间数据都直接写在tmpfs 。 这已经完成,以消除任何潜在的硬盘瓶颈。 我试图解决的问题是:当这1-3个并行实例同时执行相同的数据集时,执行时间会更长。 每个执行都被configuration为尽可能less的任务资源:每个执行产生11个映射器和1个reducer。
我已经测量了各种潜在的瓶颈,但是我没有能够拿出令人信服的解释。 我的本能告诉我这是在CPU上,但是我的测量结果certificate了我的不然。 特别是:(数字如下)
tmpfs 。 还使用PCM工具测量。 tmpfs 。 iotop -bot测量。 htop视觉检查; 没有使用交换空间。 我的瓶颈在哪里,或者我应该测量什么? 此外,我是否正确解释CPU测量 ? 很明显,在一个活动周期内,我们的利用率在80-100%之间,但这只影响一次执行的执行时间。 由于我们有足够的核心,理论上可以在不影响性能的情况下维持多次执行,总体利用率的提高表明了这一点。 我错了吗?
由于映射器需要更多的时间来执行,我怀疑有一个CPU问题,但是我的测量显示,否则。
以下是我的测量数据。 这些在物理机器上被采取,测量总时间/利用率/吞吐量。 例如,CPU利用率显示了正在运行1个执行(红色),正在运行2个并发执行(绿色)和正在运行3个并发执行(蓝色)时的利用率。