使用Flume将文件从远程节点传输到HDFS

时间:2014-10-02 20:09:01

标签: hadoop hdfs bigdata flume

我有一堆压缩成* gz格式的二进制文件。这些是在远程节点上生成的,必须传输到位于数据中心服务器之一的HDFS。

我正在探索使用Flume发送文件的选项;我探讨了使用假脱机目录配置执行此操作的选项,但显然这只适用于文件目录位于同一HDFS节点本地的情况。

有关如何解决此问题的任何建议吗?

2 个答案:

答案 0 :(得分:7)

为什么不运行两个不同的Flume代理,一个在远程计算机上,另一个在日期节点上。远程计算机上的代理可以读取假脱机目录并将其发送到avro接收器。并且datanode上的代理可以读取avro源并将数据转储到HDFS。

答案 1 :(得分:2)

这种情况没有开箱即用的解决方案。但你可以尝试这些解决方法:

  1. 您可以为此目的创建自己的源实现(通过使用Flume SDK)。例如,this project似乎能够通过ssh连接到远程目录并将其用作源。
  2. 您可以创建自定义计划脚本,定期将远程文件复制到本地假脱机目录,然后将其用作水槽代理的假脱机目录源。
  3. 您可以尝试创建另一个脚本来读取远程数据,然后将其写入其输出并在Exec Source中使用此类脚本。
  4. 您可以在数据所在的机器上找到您的水槽(和代理商)(参见Can Spool Dir of flume be in remote machine?)。