Oozie 运行 shell 随机节点上的脚本

Oozie run shell scripts on random nodes

我写了类似自定义 oozie FTP 操作的 smth("Professional Hadoop Solutions By: Boris Lublinsky; Kevin T. Smith; Alexey Yakubovich" 中描述的简单示例)。我们在 node1 上有 HDFS,在 node2 上有 Oozie 服务器。 Node2 也有 HDFS 客户端。

我的问题:

  1. Oozie 作业从节点 1 开始(所有需要的文件都位于节点 1 上的 HDFS 上)。
  2. Oozie 自定义 FTP 操作已成功从节点 2(位于 oozie 服务器)上的 FTP 下载 CSV 文件
  3. 我应该将文件传递到 HDFS 并从节点 1 上的 CSV 创建外部 table。 我尝试使用 Java 操作并调用 fileSystem.moveFromLocalFile(...) 方法。我也尝试使用 Shell 像 /usr/bin/hadoop fs -moveFromLocal /tmp\import_folder/filename.csv /user/user_for_import/imported/filename.csv 这样的动作,但我没有效果。所有操作似乎都试图查看 node1 上的文件。如果我从 node2.
  4. 启动 oozie 作业,结果相同

问题:我可以为 FTP 操作设置节点以从节点 1 上的 FTP 加载文件吗?或者我可以用任何其他方式在 HDFS 中传递下载的文件而不是描述吗?

Oozie 运行将其所有操作作为 MR 作业在已配置的 Map Reduce 集群的节点上进行。无法使 Oozie 运行 在特定节点上执行某些操作。

基本上,您应该使用 Flume 将文件提取到 HDFS 中。在您的 FTP 节点上设置 Flume 代理。

Ozzie 允许用户通过 oozie sssh shell 扩展在特定节点上 运行 一个 shell 脚本。 https://oozie.apache.org/docs/4.2.0/DG_SshActionExtension.html