通过Flume拉取Kafka数据保存到HDFS

新建一个flume的.properties文件
vim flume-conf-kafka2hdfs.properties


# ------------------- 定义数据流----------------------
# source的名字
flume2HDFS_agent.sources = source_from_kafka  
# channels的名字,建议按照type来命名
flume2HDFS_agent.channels = mem_channel  
# sink的名字,建议按照目标来命名
flume2HDFS_agent.sinks = hdfs_sink  

#auto.commit.enable = true  

## kerberos config ##  
#flume2HDFS_agent.sinks.hdfs_sink.hdfs.kerberosPrincipal = flume/datanode2.hdfs.alpha.com@OMGHADOOP.COM  
#flume2HDFS_agent.sinks.hdfs_sink.hdfs.kerberosKeytab = /root/apache-flume-1.6.0-bin/conf/flume.keytab   


#-------- kafkaSource相关配置-----------------
# 定义消息源类型
# For each one of the sources, the type is defined  
flume2HDFS_agent.sources.source_from_kafka.type = org.apache.flume.source.kafka.KafkaSource  
flume2HDFS_agent.sources.source_from_kafka.channels = mem_channel  
flume2HDFS_agent.sources.source_from_kafka.batchSize = 5000  

# 定义kafka所在的地址  
#flume2HDFS_agent.sources.source_from_kafka.zookeeperConnect = 10.129.142.46:2181,10.166.141.46:2181,10.166.141.47:2181/testkafka  
flume2HDFS_agent.sources.source_from_kafka.kafka.bootstrap.servers = 192.168.2.86:9092,192.168.2.87:9092

# 配置消费的kafka topic
#flume2HDFS_agent.sources.source_from_kafka.topic = itil_topic_4097  
flume2HDFS_agent.sources.source_from_kafka.kafka.topics = mtopic

# 配置消费的kafka groupid
#flume2HDFS_agent.sources.source_from_kafka.groupId = flume4097  
flume2HDFS_agent.sources.source_from_kafka.kafka.consumer.group.id = flumetest

#---------hdfsSink 相关配置------------------
# The channel can be defined as follows.  
flume2HDFS_agent.sinks.hdfs_sink.type = hdfs 
# 指定sink需要使用的channel的名字,注意这里是channel
#Specify the channel the sink should use  
flume2HDFS_agent.sinks.hdfs_sink.channel = mem_channel  
#flume2HDFS_agent.sinks.hdfs_sink.filePrefix = %{host}  
flume2HDFS_agent.sinks.hdfs_sink.hdfs.path = hdfs://192.168.2.xx:8020/tmp/ds=%Y%m%d  

#File size to trigger roll, in bytes (0: never roll based on file size)
flume2HDFS_agent.sinks.hdfs_sink.hdfs.rollSize = 0  
#Number of events written to file before it rolled (0 = never roll based on number of events)   
flume2HDFS_agent.sinks.hdfs_sink.hdfs.rollCount = 0  
flume2HDFS_agent.sinks.hdfs_sink.hdfs.rollInterval = 3600  
flume2HDFS_agent.sinks.hdfs_sink.hdfs.threadsPoolSize = 30
#flume2HDFS_agent.sinks.hdfs_sink.hdfs.codeC = gzip  
#flume2HDFS_agent.sinks.hdfs_sink.hdfs.fileType = CompressedStream  
flume2HDFS_agent.sinks.hdfs_sink.hdfs.fileType=DataStream    
flume2HDFS_agent.sinks.hdfs_sink.hdfs.writeFormat=Text    

#------- memoryChannel相关配置-------------------------
# channel类型
# Each channel's type is defined.  
flume2HDFS_agent.channels.mem_channel.type = memory  
# Other config values specific to each type of channel(sink or source)  
# can be defined as well  
# channel存储的事件容量
# In this case, it specifies the capacity of the memory channel  
flume2HDFS_agent.channels.mem_channel.capacity = 100000  
# 事务容量
flume2HDFS_agent.channels.mem_channel.transactionCapacity = 10000  

修改对应的地址及主题等信息就哦了~

运行:

>flume-ng agent -n flume2HDFS_agent -f flume-conf-kafka2hdfs.properties

控制台打开一个producer发送消息试一下吧:

>kafka-console-producer --broker-list cdh5:9092 --topic mtopic

  • 4
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我可以为您提供一些关于使用FlumeKafka采集数据写入HDFS代理的步骤: 1. 安装FlumeKafka: 您需要在您的机器上安装FlumeKafka。安装过程可以参考官方文档或者网上教程。 2. 配置Flume agent: 您需要配置Flume agent来从Kafka读取数据并写入HDFS代理。以下是一个简单的示例Flume配置文件: ``` agent.sources = kafka-source agent.channels = hdfs-channel agent.sinks = hdfs-sink agent.sources.kafka-source.type = org.apache.flume.source.kafka.KafkaSource agent.sources.kafka-source.kafka.bootstrap.servers = localhost:9092 agent.sources.kafka-source.kafka.topics = my-topic agent.sources.kafka-source.batchSize = 1000 agent.sources.kafka-source.batchDurationMillis = 1000 agent.channels.hdfs-channel.type = memory agent.channels.hdfs-channel.capacity = 10000 agent.channels.hdfs-channel.transactionCapacity = 1000 agent.sinks.hdfs-sink.type = hdfs agent.sinks.hdfs-sink.hdfs.path = /path/to/hdfs agent.sinks.hdfs-sink.hdfs.filePrefix = events- agent.sinks.hdfs-sink.hdfs.fileSuffix = .log agent.sinks.hdfs-sink.hdfs.rollInterval = 3600 agent.sinks.hdfs-sink.hdfs.rollSize = 0 agent.sinks.hdfs-sink.hdfs.rollCount = 10000 agent.sinks.hdfs-sink.channel = hdfs-channel ``` 这个配置文件定义了一个名为kafka-source的source,它从名为my-topic的Kafka主题中读取数据数据被写入一个内存通道(memory channel),并由名为hdfs-sink的sink写入HDFS代理。 3. 运行Flume agent: 在您的机器上运行Flume agent,使用以下命令: ``` $ bin/flume-ng agent -n agent -c conf -f /path/to/flume.conf ``` 其中,/path/to/flume.conf是您的Flume配置文件的路径。 以上是使用FlumeKafka采集数据写入HDFS代理的基本步骤,您可以根据您的需求进行修改和调整。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值