这些Hadoop设置/清理/运行时间是否合理?

时间:2011-01-20 00:08:59

标签: hadoop

我已经设置并正在测试一个伪分布式Hadoop集群(名称节点,作业跟踪器和任务跟踪器/数据节点都在同一台机器上)。我正在运行的盒子大约有4个内存,2个cpus,32位,并且正在运行Red Hat Linux。

我运行了教程中的示例grep程序,其中包含各种文件大小和文件数。我发现grep对于1 mb文件大约需要45秒,对于100 mb文件需要60秒,对于1 gig文件大约需要2分钟。

我还创建了自己的Map Reduce程序,完全删除了所有逻辑; map和reduce函数是空的。该示例程序运行了25秒。

我尝试将datanode移动到第二台机器,并在第二个节点中添加,但我只看到几秒钟的变化。特别是,我注意到无论我给出什么输入,设置和清理时间总是大约3秒。在我看来,这对于设置而言似乎很长一段时间。

我知道这些时间会因我的硬件,配置,输入等而有很大差异,但我只是想知道是否有人可以告诉我这些是我应该期待的时间,还是有重大调整和配置我可以大大降低它(例如,grep总计<5秒)。

2 个答案:

答案 0 :(得分:1)

所以你只有2个CPU,Hadoop将产生(在伪分布式模式下)许多JVM':一个用于Namenode,一个用于Datanode,1个用于Tasktracker,1个用于Jobtracker。对于作业路径中的每个文件,Hadoop都会设置映射器任务,每个任务也会生成一个新的JVM。所以你的两个核心共享4-n个应用程序。所以你的时间不是正常的...

至少Hadoop对于纯文本文件和序列文件的速度不会那么快。要获得REAL加速,你必须将文本带入序列化字节码,并让hadoop流过它。

答案 1 :(得分:1)

一些想法:

  • 每个Hadoop作业运行总是有固定的时间成本来计算拆分并在每个节点上启动JVM以运行映射并减少作业。
  • 除非您开始在包含大量数据的多个节点上运行,否则您将无法在UNIX grep上体验到任何真正的加速。使用100mb-1G文件时,将花费大量时间来设置作业而不是实际的grepping。如果您预计不会处理超过一两个数据,则可能不值得使用Hadoop。