hadoop可以用作分布式队列服务器吗?

hadoop可以用作分布式队列服务器吗?,hadoop,distributed-computing,Hadoop,Distributed Computing,我正在考虑学习hadoop,但不确定它是否能解决我的问题。基本上,我的工作是排队和一群工人。每个工作人员只做少量工作,然后保存结果(如果成功)或将其发送回队列以进行进一步处理。我的问题是可扩展的,受到网络带宽(ec2)的限制,它永远跟不上多个cpu处理数据的速度。我想也许我可以在hadoop集群中用Java运行我的作业,并让hadoop通过队列分发工作。这是一个更好的方法吗?我正确地假设hadoop可以创建一个队列,并尽可能在本地运行作业,以最大限度地减少带宽使用和cpu使用?我的程序非常受cp

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


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

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


有很多工具可以解决这个问题,看起来你正试图解决这个问题。我建议看一看。如果您使用python,这非常棒。

@PurplePilot我现在实际上正在使用rabbitmq。但是我的工作量很小(但很多),我注意到通过网络传输工作会延迟我的工作(获得最大200-300mb/s的吞吐量,我的CPU处理工作的速度比网络发送的速度快)。我想看看是否有什么东西可以让这项工作尽可能地本地化。谢谢你的回答。我目前正在使用rabbitmq(它很棒,但因为我有几十亿个小工作项,由于带宽有限,网络开销越来越高)。问题是延迟通过网络传输数据以完成工作。我的工作是一个批处理作业,但它可以非常快速地完成每一项工作,我正在尝试查看我的程序是否创建了一个工作项,它是否会保持在本地进行处理,还是会通过网络传输?基本上,Rabbitmq解决了我的问题,但我正在尝试获得一个类似类型的功能,以减少网络IO。该文件仍需要摄取到Hadoop中,它将在网络上移动3倍以进行复制。然后,它将在本地对其进行处理。在这个过程中,有足够的开销,您可能仍然会过得更好。基本上,如果你想在Hadoop中快速完成任何事情,你会玩得很不开心。很抱歉,听起来不像一个有害生物,但如果它不是一个文件,那么这个过程仍然是一样的。基本上,我的队列中只有经过计算的数字数据(它不是一个文件或任何东西,它还会被复制吗?)。使用rabbitmq,我可以很容易地向外扩展,但我不能向上扩展(因为如果每个核心可以处理100 mb/s,而我的限制是200 mb/s,那么我就浪费了超过2个核心的资源)。我的想法是(现在我认为这是错误的)让hadoop分发初始工作,然后每个节点将新任务提交给自己的本地任务调度器。祝你好运,如果不难的话,那就不值得这么做!祝你的问题好运。