我已经设置并正在测试一个伪分布式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秒)。
答案 0 :(得分:1)
所以你只有2个CPU,Hadoop将产生(在伪分布式模式下)许多JVM':一个用于Namenode,一个用于Datanode,1个用于Tasktracker,1个用于Jobtracker。对于作业路径中的每个文件,Hadoop都会设置映射器任务,每个任务也会生成一个新的JVM。所以你的两个核心共享4-n个应用程序。所以你的时间不是正常的...
至少Hadoop对于纯文本文件和序列文件的速度不会那么快。要获得REAL加速,你必须将文本带入序列化字节码,并让hadoop流过它。
答案 1 :(得分:1)
一些想法: