我们是Hadoop的新手,我们认识到hadoop是用于处理大数据,以及笛卡尔产品如何非常昂贵。然而,我们正在进行一些实验,我们正在运行类似于MapReduce设计模式书中的笛卡尔产品工作,除了计算所有中间结果的平均值的简化器(仅包括A * B的上半部分,所以总和为A * B/2)。 我们的设置:3节点簇,块大小= 64M,我们测试了从 5000点(130KB)到10000点(260KB)范围内的不同数据集大小。混乱的hadoop如何分裂工作
观察:
1-所有地图任务在一个奴隶的一个节点上运行,有时主计算机上,其他时间,但它从来没有超过一个machine.Is有没有办法处理迫使hadoop分配分割因此映射任务在机器之间?基于什么因素决定了hadoop决定哪台机器将要处理地图任务(在我们的例子中,一旦它决定了主人,在另一种情况下,它决定了一个奴隶)。 2-在所有我们测试同一作业的不同数据大小的情况下,我们得到4个地图任务。由于我们的数据大小小于块大小,为什么我们有4个分块不是1.
3-有没有办法查看有关正在运行的作业的精确分割的更多信息。
在此先感谢
感谢您的澄清,是的,我们正在使用hadoop 2.0。 关于第二点,尽管我们的数据大小小于块大小,但我们总是得到四个拆分, – user17476
机器是否具有大量内存? YARN实际上会监视群集上的资源,除非有足够的空间来启动JVM,否则它不会启动任务。可以解释一些你在#1中看到的问题。 将一些日志语句添加到CartesianInputFormat代码可能有助于解释正在从作业生成什么输入分割。它只能创建一个小于块大小的输入映射任务。 –