余老师带你学习大数据-Spark快速大数据处理第十章Kafka第八节Kafka-Connect

kafka

Kafka Connect基本概念

1、Kafka Connect是Kafka流式计算的一部分,左侧是数据源包括了数据库、hadoop、文本等等,右侧是数据结果包括了文本、hadoop、数据库,中间上层就是Kafka Connect,它里面会有很多的输入,将输入的内容的读取进来转交给Kafka里,也有可能将kafka里的内容拿出来放到我们的外部数据源中。
在这里插入图片描述

2、Kafka Connect 主要用来与其他中间件建立流式通道

3、Kafka Connect支持流式和批量处理集成

Kafka Connect环境准备

1、在app-11上新建new terminal,以hadoop用户登录,创建存放Kafka Connect依赖包
命令:su – hadoopmkdir /hadoop/plugins在这里插入图片描述

2、进入该目录下
命令:cd /hadoop/plugins/
在这里插入图片描述

3、下载kafka connect依赖包
命令:wget https://d1i4a15mxbxib1.cloudfront.net/api/plugins/confluentinc/kafka-connect-jdbc/versions/10.0.1/confluentinc-kafka-connect-jdbc-10.0.1.zip
在这里插入图片描述

4、下载mysql启动jdbc
命令:wget https://repo1.maven.org/maven2/mysql/mysql-connector-java/8.0.18/mysql-connector-java-8.0.18.jar
在这里插入图片描述

5、解压kafka connect依赖包
命令:unzip confluentinc-kafka-connect-jdbc-10.0.1.zip
在这里插入图片描述

6、删除安装包
命令:rm -rf confluentinc-kafka-connect-jdbc-10.0.1.zip
在这里插入图片描述

7、将mysql的驱动包拷贝到kafka connect中
命令:cp mysql-connector-java-8.0.18.jar confluentinc-kafka-connect-jdbc-10.0.1/lib/
在这里插入图片描述

8、进入kafka修改配置文件
命令:cd /hadoop/Kafka/kafka_2.11-2.2.0/config/
在这里插入图片描述

9、配置文件中connect-distributed.properties是集群版的配置, connect-standalone.properties是配置单机版的,现在配置集群版的。
命令:vi connect-distributed.properties
修改ip地址,连接kafka的服务器
在这里插入图片描述

将rest.port=8083释放出来,这是提供一个rest管理界面,可以动态的使用管理,这个端口号可以自己设置
在这里插入图片描述

支持引入外部依赖
在这里插入图片描述

10、返回上层目录,准备启动connect
命令:cd …
在这里插入图片描述

配置其他机器

11、拷贝
命令:
scp -r -p /hadoop/plugins hadoop@app-12:/hadoop/plugins/scp -r -p /hadoop/plugins hadoop@app-13:/hadoop/plugins/
在这里插入图片描述

12、删除app-12和app-13上之前的配置文件
命令:ssh hadoop@app-12 "rm -rf /hadoop/Kafka/kafka_2.11-2.2.0/config/connect-distributed.properties"
ssh hadoop@app-13 "rm -rf /hadoop/Kafka/kafka_2.11-2.2.0/config/connect-distributed.properties"
在这里插入图片描述

13、拷贝配置文件
命令:scp /hadoop/Kafka/kafka_2.11-2.2.0/config/connect-distributed.properties hadoop@app-12:/hadoop/Kafka/kafka_2.11-2.2.0/config/
scp /hadoop/Kafka/kafka_2.11-2.2.0/config/connect-distributed.properties hadoop@app-13:/hadoop/Kafka/kafka_2.11-2.2.0/config/
在这里插入图片描述

11、分别app-11、app-12、app-13的启动connect
命令:bin/connect-distributed.sh config/connect-distributed.properties
在这里插入图片描述

12、查看是否启动成功,创建一个内部浏览器
在这里插入图片描述

13、在内部浏览器中输入:输入的ip地址是自己机器app-11的ip
http://192.168.138.35:8083/connector-plugins 显示的是confluent中的版本号
(ip地址也可以是app-11)在这里插入图片描述

14、在内部浏览器中输入:http://192.168.138.35:8083/connectors 因为是实时接收动态,现在还是空的。 (ip地址也可以是app-11)
在这里插入图片描述

添加任务

15、创建数据库,在app-12上,新建new terminal,启动mysql数据库
命令:mysql -uroot -p
在这里插入图片描述

16、创建数据库
命令:create database kafka;
在这里插入图片描述

17、进入数据库创建表
命令:

use kafka;
create table `user`(
   `id` int primary key,
  `name` varchar(20),
`age` int);

在这里插入图片描述

18、在app-11上,新建new terminal,以hadoop用户登录,直接连接任务
命令:连接的ip地址是要看自己机器的,是连接该机器得到kafka;” songshu-upload-mysql”是任务的名字,连接的是app-12的mysql;每次增加是需要更新的,根据id的标识符增加.

curl -X POST -H 'Content-Type: application/json' -i 'http://192.168.30.163:8083/connectors' \
--data \
'{"name":"songshu-upload-mysql","config":{
"connector.class":"io.confluent.connect.jdbc.JdbcSourceConnector",
"connection.url":"jdbc:mysql://app-14:3306/kafka?user=root&password=Yhf_1018",
"table.whitelist":"user",
"incrementing.column.name": "id",
"mode":"incrementing",
"topic.prefix": "songshu-mysql-"}}'

在这里插入图片描述

19、刷新内部浏览器,http://192.168.138.35:8083/connectors,出现名字证明连接成功。
在这里插入图片描述

20、在数据库中添加数据
命令:insert into user values (1,'aaa',18);
insert into user values (2,'bbb',10);
在这里插入图片描述

21、返回app-11的new terminal,查看connect
命令:cd /hadoop/Kafka/kafka_2.11-2.2.0/
bin/kafka-console-consumer.sh --bootstrap-server 192.168.30.157:9092 --topic songshu-mysql-user --from-beginning
显示的就是刚才插入的数据,这部分是从mysql写入connect
在这里插入图片描述

22、演示从connect读取到mysql,先创建一个读出存放数据的表
命令:

create table `user_bck`(
`id` int primary key,
`name` varchar(20),
`age` int);

在这里插入图片描述

23、在app-11的new terminal的中连接任务,注意这两个任务的名不能一样

curl -X POST -H 'Content-Type: application/json' -i 'http://192.168.30.157:8083/connectors' \
--data \
'{"name":"songshu-download-mysql","config":{
"connector.class":"io.confluent.connect.jdbc.JdbcSinkConnector",
"connection.url":"jdbc:mysql://app-14:3306/kafka?user=root&password=Yhf_1018",
"topics":"songshu-mysql-user",
"auto.create":"false",
"insert.mode": "upsert",
"pk.mode":"record_value",
"pk.fields":"id",
"table.name.format": "user_bck"}}'

在这里插入图片描述

24、刷新内部浏览器
在这里插入图片描述

25、查看刚才创建的表user_bck
命令:select * from user_bck;
在这里插入图片描述

Kafka Connect 关键词

1、Work 是connect分为两种模式,一种是Standalone是单机的,另一种的Distributed是分布式,在生产环境中一般是以分布式的为准。这两个的配置还是比较类似的。图是task和instance平衡关系的。
在这里插入图片描述

2、Connect和Task,connect是类似于任务调度,connect在处理任务的过程将工作交给具体的Task去做。Task的具体操作流程在Source Data中获取到紧接着做converter,做完之后产生offset紧接着提交,
在这里插入图片描述

3、Task Rebalance,connect会尽量平衡task的工作,当task的工作过大或者不饱和时会触发Task Rebalance,Task会重新组织工作量处理。但是有例外,就是当Task失败的时候,就不会重新安排,挂掉了就挂掉了,把失败的Task的任务分配给其他的。
在这里插入图片描述

4、AvroConverter是处理数据转换的,
在这里插入图片描述

详细学习内容可观看Spark快速大数据处理扫一扫~~~或者引擎搜索Spark余海峰
在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/weixin_45810046/article/details/113112345
今日推荐