如何使用flume将数据从本地机器加载到hdfs

时间:2013-05-18 11:17:40

标签: hadoop flume

我是新手,所以请告诉我......如何使用水槽将日志文件从本地计算机存储到本地我的HDFS 我在设置classpath和flume.conf文件时遇到了问题

谢谢你, ajay

3 个答案:

答案 0 :(得分:0)

我们确实需要更多信息来了解事情对您有用的原因。

简短的回答是,您需要一个Source来读取您的数据(可能是假脱机目录源),一个Channel(内存通道,如果您不需要可靠的存储空间)和HDFS接收器。

更新

OP报告收到错误消息“您必须在水槽类路径中包含conf文件”。

您需要提供conf文件作为参数。您可以使用--conf-file参数执行此操作。例如,我在开发中使用的命令行是: bin/flume-ng agent --conf-file /etc/flume-ng/conf/flume.conf --name castellan-indexer --conf /etc/flume-ng/conf

错误消息以这种方式读取,因为bin/flume-ng脚本在运行Flume之前将--conf-file参数的内容添加到类路径中。

答案 1 :(得分:0)

如果要将数据附加到本地文件,则可以使用带有“tail -F”命令的exec源。如果文件是静态的,请使用cat命令将数据传输到hadoop。

整体架构将是:

来源:Exec源读取文件中的数据

频道:内存频道或文件频道

接收器:Hdfs接收数据被转储的地方。

使用用户指南创建配置文件(https://flume.apache.org/FlumeUserGuide.html

准备好conf文件后,可以像这样运行:

bin/flume-ng agent -n $agent_name -c conf -f conf/your-flume-conf.conf

答案 2 :(得分:0)

agent.sources = weblog
agent.channels = memoryChannel
agent.sinks = mycluster

## Sources #########################################################  
agent.sources.weblog.type = exec  
agent.sources.weblog.command = tail -F REPLACE-WITH-PATH2-your.log-FILE  
agent.sources.weblog.batchSize = 1  
agent.sources.weblog.channels =
REPLACE-WITH-
CHANNEL-NAME

## Channels ########################################################  
agent.channels.memoryChannel.type = memory  
agent.channels.memoryChannel.capacity = 100 agent.channels.memoryChannel.transactionCapacity = 100   

## Sinks ###########################################################   
agent.sinks.mycluster.type =REPLACE-WITH-CLUSTER-TYPE  
agent.sinks.mycluster.hdfs.path=/user/root/flumedata  
agent.sinks.mycluster.channel =REPLACE-WITH-CHANNEL-NAME

将此文件另存为logagent.conf并使用以下命令

运行
# flume-ng agent –n agent –f logagent.conf &