【问题标题】:How to copy synchronized-files to HDFS using flume?如何使用 Flume 将同步文件复制到 HDFS?
【发布时间】:2015-09-02 22:10:43
【问题描述】:

我有一个目录树,其中包含两个目录和同步文件:

home/dirMaster/file1.txt
home/dirMaster/file2.txt
home/dirSlave/file1-slave.txt
home/dirSlave/file2-slave.txt

根据文件名file1-slave.txt有对应file1.txt的记录

然后我想使用flume转到hdfs,但根据我目前的阅读,我有以下问题:

  1. flume 不会保留我的文件名 - 所以我丢失了 同步
  2. flume 不保证来自源的文件将匹配目标 - 例如。源文件可能会拆分为多个目标文件

这是正确的吗? Flume 可以支持这种情况吗?

【问题讨论】:

    标签: hadoop hdfs flume


    【解决方案1】:

    Flume Agent 允许将数据从源移动到接收器。它在滚入 Sink 之前使用通道来保存这些数据。

    Flume 的接收器之一是 HDFS Sink。 HDFS sink 允许根据以下标准将数据滚动到 HDFS。

    • hdfs.rollSize
    • hdfs.rollInterval
    • hdfs.rollCount

    它根据上述参数组合滚动数据,文件名具有预定义的模式。我们还可以使用 Sink 参数控制文件名。但是这种模式对于由该代理滚动的所有文件都是相同的。我们不能期望单个 Flume 代理有不同的文件路径模式。

    agent.sinks.sink.hdfs.path=hdfs://:9000/pattern

    模式可以是静态动态路径

    Flume 还根据滚动标准生成 n 个文件。

    所以 Flume 不适合你的要求。 Flume 最适合流式数据摄取。

    DistCP:它是 HDFS 中的分布式并行数据加载实用程序。 它是一个仅限 Map 的 MapReduce 程序,它将在目标目录中生成 n 个部分文件(= 没有地图)。

    所以DistCP也不适合旅游需求。

    所以最好使用hadoop fs -put 将数据加载到 HDFS 中。

    hadoop fs -put /home/dirMaster/ /home/dirMaster/ /home/

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-10-01
      • 1970-01-01
      • 2014-11-27
      • 2020-03-23
      • 2019-11-14
      • 1970-01-01
      相关资源
      最近更新 更多