如何使用flume将同步文件复制到hdfs?

ubbxdtey  于 2021-06-03  发布在  Hadoop
关注(0)|答案(1)|浏览(352)

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

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,但根据我目前的阅读,我有以下问题:
flume不会保留我的文件名-因此我丢失了同步
flume不保证源文件与目标文件匹配-例如,源文件可能被拆分为多个目标文件
是这样吗?flume能支持这种情况吗?

djmepvbi

djmepvbi1#

flume代理允许将数据从源移动到接收器。它使用通道在进入接收器之前保存这些数据。
Flume的Flume之一是hdfsFlume。hdfs sink允许根据以下条件将数据滚动到hdfs中。
hdfs.rollsize文件
hdfs.roll间隔
hdfs.rollcount卷数
它根据上述参数组合和文件名来滚动数据,并具有预定义的模式。我们还可以使用sink参数控制文件名。但是这个模式对于这个代理所滚动的所有文件都是相同的。我们不能期望单个flume代理具有不同的文件路径模式。
agent.sinks.sink.hdfs.path=hdfs://:9000/模式
模式可以是静态或动态路径。
flume还根据滚动标准生成n个文件。
所以Flume不适合你的要求。flume最适合流数据接收。
distcp:它是hdfs中的一个分布式并行数据加载实用程序。它是一个仅Map的mapreduce程序,它将在目标目录中生成n个零件文件(=Map数)。
所以distcp也不适合旅游需求。
所以最好用 hadoop fs -put 将数据加载到hdfs中。 hadoop fs -put /home/dirMaster/ /home/dirMaster/ /home/

相关问题