Hadoop 使用Flume将文件从本地文件系统复制到HDFS

Hadoop 使用Flume将文件从本地文件系统复制到HDFS,hadoop,hdfs,flume,flume-ng,Hadoop,Hdfs,Flume,Flume Ng,使用java中的文件生成器,我将在本地文件系统中有一个目录和文件流,需要在HDFS中移动这些目录和文件。我在互联网上搜索,发现我可以使用Flume,但我没有找到任何资源来解释如何使用Flume。你知道如何实现这一点吗 谢谢我从未在同一台机器上进行过此操作(正如您在评论中提到的,关于环境),因此您可能需要进行一些测试和调整,以使以下配置正常工作 在您的情况下,由于文件将在一个(或多个)目录中动态创建,我建议配置(每个目录)和。在Flume安装文件夹的conf目录中创建一个文件test.conf,并

使用java中的文件生成器,我将在本地文件系统中有一个目录和文件流,需要在HDFS中移动这些目录和文件。我在互联网上搜索,发现我可以使用Flume,但我没有找到任何资源来解释如何使用Flume。你知道如何实现这一点吗


谢谢

我从未在同一台机器上进行过此操作(正如您在评论中提到的,关于环境),因此您可能需要进行一些测试和调整,以使以下配置正常工作

在您的情况下,由于文件将在一个(或多个)目录中动态创建,我建议配置(每个目录)和。在Flume安装文件夹的
conf
目录中创建一个文件
test.conf
,并放置类似的配置:

# Name the components on this agent
agent.sources = file-source
agent.sinks = hdfs-sink
agent.channels = mem-channel

# Associate channel with source and sink
agent.sources.file-source.channels = mem-channel
agent.sinks.hdfs-sink.channel = mem-channel

# Configure the source
agent.sources.file-source.type = spooldir
agent.sources.file-source.spoolDir = /tmp/spool/
agent.sources.file-source.fileHeader = true

# Configure the sink
agent.sinks.hdfs-sink.type = hdfs
agent.sinks.hdfs-sink.hdfs.path = /tmp/log.log
agent.sinks.hdfs-sink.hdfs.fileType = DataStream
agent.sinks.hdfs-sink.hdfs.path = /flume/test/

# Use a channel which buffers events in memory
agent.channels.mem-channel.type = memory
agent.channels.mem-channel.capacity = 1000
agent.channels.mem-channel.transactionCapacity = 100
要运行代理,请在Flume安装目录中执行以下命令:

bin/flume-ng agent -n agent -c conf -f conf/test.conf
开始将文件放入
/tmp/spool/
并检查它们是否出现在HDFS中


当您打算在客户端和服务器上分发我建议使用的系统时,您将在那里得到它。

需要更多详细信息才能给您一些点击率。首先,您有多台机器,或者您在同一个节点上执行所有操作(例如测试)。这些文件的性质是什么:这些静态文件是您将一次读取的,还是那些日志文件(例如,它们是不时创建的)?目前,我正在使用同一个节点进行测试。它将是用户创建的日志文件,每次创建之间的间隔可以从分钟到小时不等。但是现在我正在生成随机文件,以查看HDFS将如何响应小文件流。