flume实现jdbc source将mysql数据实时监控导入kafka

一、数据准备

这里我们使用一个极为简单的mysql数据表作为测试使用,如下
在这里插入图片描述

二、flume-ng-sql-source资源下载准备

需要到https://github.com/keedio/flume-ng-sql-source下载源码并且使用maven编译打包程序获得jar包

流程如下:

  1. 下载源码压缩包
    在这里插入图片描述
  2. 上传压缩包并解压
unzip flume-ng-sql-source-develop.zip
  1. 进入pom所在目录编译打包
cd flume-ng-sql-source-develop/
mvn package
  1. 进入target目录将flume-ng-sql-source-1.5.3-SNAPSHOT.jar拷贝到flume目录下的lib目录中
cp flume-ng-sql-source-1.5.3-SNAPSHOT.jar /opt/soft/flume/apache-flume-1.6.0-cdh5.14.2-bin/lib/
  1. 更名flume-ng-sql-source-1.5.3-SNAPSHOT.jarflume-ng-sql-source-1.5.3.jar
mv flume-ng-sql-source-1.5.3-SNAPSHOT.jar flume-ng-sql-source-1.5.3.jar 
  1. 拷贝mysql驱动到flume目录下的lib目录中

  2. 如果不想这么麻烦可以直接下载我已经打包好的jar包放到flume文件下的lib目录下,资源点击链接下载,内容包含打包好的jar包及mysql驱动
    链接:https://pan.baidu.com/s/1oGH5r1-4g_0yDXBEbhn8og
    提取码:07df

三、编辑flume配置

flume配置如下,我这里是直接以kafka作为channel,省去sink操作

# 命名
a1.sources = r1
a1.channels = c1

# source
a1.sources.r1.type = org.keedio.flume.source.SQLSource
a1.sources.r1.hibernate.connection.url = jdbc:mysql://192.168.56.20:3306/mydemo?useUnicode=true&characterEncoding=utf-8&useSSL=false
a1.sources.r1.hibernate.connection.user = root
a1.sources.r1.hibernate.connection.password = 1234
a1.sources.r1.hibernate.connection.autocommit = true
# mysql驱动
a1.sources.r1.hibernate.connection.driver_class = com.mysql.jdbc.Driver
# 查询延迟
a1.sources.r1.hibernate.run.query.delay = 5000
# 存放状态数据
a1.sources.r1.status.file.path = /opt/flumedata/status
a1.sources.r1.status.file.name = sqlSource.status
# 查询表
a1.sources.r1.table = users
a1.sources.r1.columns.to.select = *
a1.sources.r1.batch.size = 1000
a1.sources.r1.max.rows = 1000
a1.sources.r1.hibernate.connection.provider_class = org.hibernate.connection.C3P0ConnectionProvider
a1.sources.r1.hibernate.c3p0.min_size = 1
a1.sources.r1.hibernate.c3p0.max_size = 10

# channel
a1.channels.c1.type = org.apache.flume.channel.kafka.KafkaChannel 
a1.channels.c1.kafka.bootstrap.servers = jzy:9092  
a1.channels.c1.kafka.topic = topic_log
a1.channels.c1.parseAsFlumeEvent = false

# 绑定channel和source关系
a1.sources.r1.channels=c1

四、启动并实现

  1. 启动zookeeper和kafka
zkServer.sh start

kafka-server-start.sh /opt/soft/kafka/kafka_2.11-2.4.0/config/server.properties 
  1. 创建flume配置中的kafka topic
kafka-topics.sh --create --zookeeper jzy:2181 --topic topic_log --replication-factor 1 --partitions 1
  1. 创建flume配置中的存放状态文件目录
mkdir -p /opt/flumedata/status
  1. 启动flume
flume-ng agent -n a1 -c conf -f /opt/flumeconf/mysql-flume01.conf -Dflume.root.logger=INFO,console
  1. 启动kafka消费监控,查看是否实时采集
kafka-console-consumer.sh --bootstrap-server jzy:9092 --from-beginning --topic topic_log

五、结果展示

如下数据已经采集导入到kafka当中
在这里插入图片描述
验证:
在mysql当中插入新的一条数据
在这里插入图片描述
id为3新插入的数据实时更新到kafka当中
在这里插入图片描述

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值