hadoop - hadoop可以做分布式队列服务器吗?

标签 hadoop distributed-computing

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

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

最佳答案

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

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

关于hadoop - hadoop可以做分布式队列服务器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10384204/

相关文章:

hadoop - 在配置单元中生成唯一 ID

apache - 询问 apache zookeeper

hadoop - 如何将文件放在目录名称中有空格的 hdfs 目录中?

python - 基本的hadoop mapreduce作业正在启动,但尚未完成

java - 将值从 Mapper 传递到 Reducer

distributed-computing - 在发布者之后上线时播种订阅者数据

java - 为 Spark 创建 JAR

hadoop - 如何防止由于 reduce task 失败而导致 hadoop 失败

java - 如何使用 java 自定义比较器来订购 Spark RDD

redis - 锁定redis集群