3

我正在考虑学习hadoop,但不确定它是否能解决我的问题。基本上我有一份工作,有一个队列和一群工人。每个工作人员完成少量工作,然后保存结果(如果成功)或将其发送回队列以进行进一步处理。我的问题是可扩展的,受到网络带宽(ec2)的限制,它永远无法跟上多个 CPU 处理数据的速度。我想也许我可以在 hadoop 集群中用 Java 运行我的工作,并让 hadoop 通过队列分配工作。这会是更好的方法吗?我假设hadoop可以排队并尝试尽可能在本地运行作业以最小化带宽使用并最大化cpu使用率是正确的?我的程序非常受 cpu 限制,但我最近的大多数性能问题都与通过网络传递工作有关(我希望尽可能地将工作保持在本地),但我看到的 hadoop 教程和我的问题之间的区别是在教程中,所有的工作都是提前知道的,而我的程序不断地为自己生成新的工作(直到它最终完成)。这会起作用吗?它会帮助我减少通过网络传递消息的影响吗?但是我看到的hadoop教程和我的问题之间的区别在于,在教程中所有的工作都是预先知道的,而我的程序不断地为自己生成新的工作(直到它最终完成)。这会起作用吗?它会帮助我减少通过网络传递消息的影响吗?但是我看到的hadoop教程和我的问题之间的区别在于,在教程中所有的工作都是预先知道的,而我的程序不断地为自己生成新的工作(直到它最终完成)。这会起作用吗?它会帮助我减少通过网络传递消息的影响吗?

抱歉,我是 hadoop 新手,想知道它是否可以解决我的问题。

4

1 回答 1

1

Hadoop 就是在大型数据集上以类似批处理的模式运行作业。很难让它具有某种类似队列的行为,但并非不可能。有 Apache ZooKeeper,如果您需要,它会为您提供同步以构建队列。

有很多工具可以解决看起来您正在尝试解决的问题。我建议看看RabbitMQ。如果你使用 python,Celery非常棒。

于 2012-04-30T13:15:52.700 回答