我有一个目录树,其中包含两个目录和同步文件:
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,但根据我的阅读,到目前为止我有以下问题:
这是对的吗?水槽能支持这种情况吗?
答案 0 :(得分:1)
Flume Agent 允许将数据从源移动到接收器。它使用通道在滚入Sink之前保留这些数据。
Flume的其中一个接收器是 HDFS接收器。 HDFS接收器允许根据以下标准将数据滚动到HDFS中。
它根据上述参数组合滚动数据,文件名具有预定义模式。我们还可以使用Sink参数控制文件名。但是这种模式对于由此代理滚动的所有文件都是相同的。我们不能指望单个水槽代理的不同文件路径模式。
agent.sinks.sink.hdfs.path = HDFS://:9000 / <强>图案强>
模式可以是静态或动态路径。
Flume还根据滚动条件生成n个文件。
因此Flume不适合您的要求。 Flume最适合流式数据摄取。
DistCP:它是HDFS中的分布式并行数据加载实用程序。 它是一个Map MapReduce程序,它将在目标目录中生成n个零件文件(= no of maps)。
所以DistCP也不适合旅游要求。
因此最好使用hadoop fs -put
将数据加载到HDFS中。
hadoop fs -put /home/dirMaster/ /home/dirMaster/ /home/