1. 介绍

本节主要讲解如何使用flume将avro源的数据写入HDFS

2. 配置flume

下载安装flume不说了,比较简单。从flume 官网下载并且在自己的机器上解压即可

执行以下操作创建配置文件

vi flume-conf.properties

按照以下来修改配置文件

# ------------------- 定义数据流----------------------
# source的名字
agent.sources = avroSource
# channels的名字,建议按照type来命名
agent.channels = memoryChannel
# sink的名字,建议按照目标来命名
agent.sinks = hdfsSink

# 指定source使用的channel名字
agent.sources.avroSource.channels = memoryChannel
# 指定sink需要使用的channel的名字
agent.sinks.hdfsSink.channel = memoryChannel

#-------- avroSource相关配置-----------------
# 定义消息源类型
agent.sources.avroSource.type = avro
# 定义消息源所在地址和端口
agent.sources.avroSource.bind=10.45.10.34
agent.sources.avroSource.port=10000

#------- memoryChannel相关配置-------------------------
# channel类型
agent.channels.memoryChannel.type = memory
# channel存储的事件容量
agent.channels.memoryChannel.capacity=1000
# 事务容量
agent.channels.memoryChannel.transactionCapacity=100

#---------hdfsSink 相关配置------------------
agent.sinks.hdfsSink.type = hdfs
# 注意提前在hdfs上提前创建相应的目录
agent.sinks.hdfsSink.hdfs.path = hdfs://10.45.10.33:9000/flume

3. 启动flume服务

#   --name指定了agent的名字,和配置文件保持一致
bin/flume-ng agent --conf-file conf/flume-conf.properties --name agent -Dflume.root.logger=INFO,console

4. 发送avro序列化的数据

bin/flume-ng avro-client -H mysql4 -p 10000 -F /root/Downloads/test_texts/hello.txt 

5. 查看结果

PS:默认写入HDFS的格式是SequenceFile,可以用hadoop提供的IO接口来读取文件。

参考资料:

  1. Flume 1.6.0 User Guide