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接口来读取文件。
参考资料: