无法远程运行Hadoop作业

时间:2014-03-05 07:43:33

标签: hadoop

我想从Windows机器远程运行hadoop作业。群集正在Ubuntu上运行。

基本上,我想做两件事:

  1. 远程执行hadoop作业。
  2. 从hadoop输出目录中检索结果。
  3. 我不知道如何实现这一目标。我正在使用hadoop版本1.1.2

    我尝试在作业配置中传递jobtracker / namenode URL,但它失败了。

    我尝试过以下示例:Running java hadoop job on local/remote cluster

    结果:一致地获取错误,因为无法加载目录。它类似于这篇文章: Exception while submitting a mapreduce job from remote system

1 个答案:

答案 0 :(得分:3)

欢迎来到痛苦的世界。我刚刚实现了这个确切的用例,但是使用了Hadoop 2.2(当前的稳定版本)从源代码修补和编译。

简而言之,我所做的是:

  1. Hadoop 2.2 sources tarball下载到Linux计算机并将其解压缩为临时目录。
  2. 应用these patches解决从Windows客户端连接到Linux服务器的问题。
  3. 使用these instructions从源代码构建它。如果您有64位Linux服务器,它还将确保您具有64位本机库。确保按照post指示修复构建文件,否则构建将失败。请注意,安装protobuf 2.5后,您必须运行sudo ldconfig,请参阅this post
  4. 从服务器节点上的hadoop-2.2.0-src/hadoop-dist/target部署生成的dist tar并进行配置。我无法帮助您,因为您需要将其调整为您的群集拓扑。
  5. 在客户端Windows计算机上安装Java。确保它的路径中没有空格,例如c:\java\jdk1.7
  6. 部署您在Windows客户端上构建的相同Hadoop dist tar。它将包含Windox / Linux连接问题的关键修复。
  7. this Stackoverflow answer中所述编译winutils和Windows本机库。它比在Windows上构建整个Hadoop简单。
  8. 按照these instructions
  9. 中的说明设置JAVA_HOMEHADOOP_HOMEPATH个环境变量
  10. 使用文本编辑器或unix2dos(来自Cygwin或独立版)转换.cmdbin目录中的所有etc\hadoop文件,否则会出现奇怪的错误关于运行它们时的标签。
  11. 在配置XML文件中配置群集的连接属性,即fs.default.namemapreduce.jobtracker.addressyarn.resourcemanager.hostname等。
  12. 添加第2项中的修补程序所需的其余配置。这仅适用于客户端。否则补丁将无效。
  13. 如果您已完成所有这些操作,则可以启动Linux Hadoop群集并从Windows命令提示符连接到该群集。快乐!