天天看点

flume连接hdfs和kafka

flume连接hdfs和kafka练习

一、flume连接hdfs情况

选型是source端使用taildir

channel端使用file channel

sink端使用hdfs

脚本文件如图:

flume连接hdfs和kafka

运行flume-ng,如下:

flume连接hdfs和kafka

往flume 监控的文件taildir_test.data写入数据:

flume连接hdfs和kafka

等待控制台的输出命令:

flume连接hdfs和kafka

登录HDFS查看,发现已经写入:

flume连接hdfs和kafka

肯定有人要问了:memory channel这么好用 为什么不用啊,我的回答是:我就是练习使用file channel

二、flume连接kafka

类型选择:flume source端使用 taildir

channel端使用file channel

sink端使用kafka

脚本文件如下:

flume连接hdfs和kafka

我的集群是三台机器,node02,node03,node04都已经部署好了zookeeper,接着三个节点启动kafka服务:

./kafka-server-start.sh …/config/server.properties

接着在node03上启动消费者:

./kafka-console-consumer.sh --bootstrap-server node02:9091 node03:9092 \ node04:9092 --topic flume_topic --from-beginning

启动flume-ng :

./flume-ng agent --name a1 --conf …/conf --conf-file …/conf/taildir_fileM_kafka.conf \ -Dflume.root.logger=INFO,console

接下来就是往flume监控的文件下写入数据:

flume连接hdfs和kafka
flume连接hdfs和kafka

接着就能到node03的控制台看到输出的数据了:

flume连接hdfs和kafka

思考

我在create topic的时候,遇到这样的一个错误:

Error while executing topic command : replication factor: 1 larger than available brokers: 0

网上查了很多,众说纷纭,看得我眼花缭乱,好多粘贴复制的都说是kafka服务没起来,可是我的早就起来的。这就很神奇了,解决过程如下:

我创建topic的指令是:

./kafka-topics.sh --create --zookeeper node02:2181/kafka,node03:2181/kafka, node04:2181/kafka --partitions 3 --replication-factor 3 --topic kafka_topic

我跑去官网看了看。它是这样的:

flume连接hdfs和kafka

这我就郁闷了,后来我试着这样改:

/kafka-topics.sh --create --zookeeper node02:2181/kafka node03:2181/kafka node04:2181/kafka --partitions 3 --replication-factor 3 --topic kafka_topic

发现不同了没有?把逗号去掉,这样就成功创建了topic

写在后面的话:还是要多练习才能完全掌握知识

继续阅读