2015-12-08 58 views
1

我写了像定制oozie FTP动作(简单示例在“Professional Hadoop Solutions By:Boris Lublinsky; Kevin T. Smith; Alexey Yakubovich”中描述的简单示例)。我们在节点1上有HDFS,在节点2上有Oozie服务器。 Node2也有HDFS客户端。Oozie在随机节点上运行shell脚本

我的问题:

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

问题:我可以设置FTP操作的节点来从节点1上的FTP加载文件吗?或者我可以使用其他方式在HDFS中传递下载的文件吗?

回答

0

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

基本上,您应该使用Flume将文件摄入HDFS。在FTP节点上设置Flume代理。