我打算开发一个Web服务,它可以与Hadoop主节点对话执行一些任务。 这些任务包括: 1.启动和停止hadoop集群 2.在hadoop集群中添加和删除从节点 3.从Web服务调用一些API,例如指标一。
我不希望你们告诉我一切(请不要!),但只要告诉我如何从我的 Web 服务调用 Hadoop API 即可。在类路径中包含 Hadoop jar 就足够了吗?我想我也需要一些配置。请指导我在 Web 服务和 Hadoop 集群之间设置一个简单的调用流程。
最佳答案
由于启动和停止是 shell 脚本,因此您将无法从 Hadoop jar 内重新启动集群。
快速列出您必须为任务执行的操作:
- 启动和停止是 shellscript,您需要使用 Runtime.getRuntime().exec("YOUR SHELL SCRIPT") 并让 shellscript 启动和停止集群。
- 添加和删除节点是很不寻常的,因为 Hadoop 会自行管理。要停用,您必须编辑排除文件并刷新节点。这根本不是 Hadoop API 可以管理的任务。您可以在这里进一步阅读:I want to make a large cluster smaller by taking out a bunch of nodes simultaneously. How can this be done?
但是,您可以使用DFSAdmin
类刷新节点。文件本身必须在主机上进行编辑。请参阅下一点如何设置。 - 这正是你所说的,你可以简单地把 jar 和你需要的东西放在一起。但是您必须设置一个包含
fs.default.name
和mapred.job.tracker
属性的Configuration
对象。这些属性的值是 namenode 和 jobtracker 的主机名。您可以在 master 上的配置 xml 中找到它。 然后,您可以将此对象提供给FileSystem.get(YOURCONFIGURATION)
例如并使用 API。
我希望这不是太多文字:) 祝你好运!
关于java - 我可以从 Axis2 Web 服务调用 Hadoop API 吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5130499/