docker 安装kafka_kettle-循环抽取,插入kafka

最近,在docker环境下,使用kettle 8循环查询数据库数据后,插入kafka集群中。特此记录。

docker配置kettle

  1. 准备安装介质 ,需要自行下载。
  • pdi-ce-8.2.0.0-342.zip
  • jdk-8u161-linux-x64.tar.gz
  1. 自定义dockerfile

由于kettle需要用图形化界面进行配置,所以需要对centos镜像进行初步配置。dockerfile文件内容为:

FROM centos:7RUN rm -rf /etc/localtime && ln -s /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && yum -y install webkitgtk4 redhat-lsb bzip2 wget kde-l10n-Chinese glibc-common && yum groupinstall "fonts" -y &&localedef -c -f UTF-8 -i zh_CN zh_CN.utf8 && yum clean all && wget http://ftp.mozilla.org/pub/mozilla.org/xulrunner/nightly/2012/03/2012-03-02-03-32-11-mozilla-1.9.2/xulrunner-1.9.2.28pre.en-US.linux-x86_64.tar.bz2 && tar -jxf xulrunner-1.9.2.28pre.en-US.linux-x86_64.tar.bz2 && rm -f  xulrunner-1.9.2.28pre.en-US.linux-x86_64.tar.bz2 && cd xulrunner/ && ./xulrunner -register-globalENV LC_ALL zh_CN.UTF-8ENV JAVA_HOME /opt/jdk1.8.0_161ENV PATH $JAVA_HOME/bin:$PATH
  1. 编写docker-comose.yml文件

将安装介质解压后,将安装介质解压后目录映射到docker容器中。

映射jdk到容器: ./resource/jdk1.8.0_161:/opt/jdk1.8.0_161

映射kettle到容器:./resource/data-integration:/opt/kettle

映射kettle配置后生成的文件:- ./resource/kettle_files:/opt/kettle_files

version: '3.7'networks:  net_docker:    external: trueservices:  kettle8.2:    image: kettle8:0.1    container_name: kettle8.2    networks:      - net_docker # 安装介质目录映射    volumes:      - ./resource/jdk1.8.0_161:/opt/jdk1.8.0_161      - ./resource/data-integration:/opt/kettle      - ./resource/kettle_files:/opt/kettle_files    command: [/bin/bash]    tty: true    stdin_open: true
  1. 启动kettle
  • 首先运行构建dockerfile(注意目录路径)
[root@jk-s-monitor dockerFile]# pwd/opt/business/kettle8.2/dockerFile[root@jk-s-monitor dockerFile]# docker build . -t kettle8:0.1
  • 将安装介质拷贝到指定目录后解压
[root@jk-s-monitor resource]# pwd/opt/business/kettle8.2/resource[root@jk-s-monitor resource]# lsdata-integration  jdk1.8.0_161  jdk-8u161-linux-x64.tar.gz  kettle_files  pdi-ce-8.2.0.0-342.zip
  • 启动docker容器
[root@jk-s-monitor kettle8.2]# lsdocker-compose.yml  dockerFile  resource[root@jk-s-monitor kettle8.2]# docker-compose up
  • 进入容器后启动kettle
[root@jk-s-monitor kettle8.2]# docker exec -it kettle8.2 /bin/bash[root@62e156d9cf1c /]# export DISPLAY=192.168.157.126:0.0[root@62e156d9cf1c /]# /opt/kettle/spoon.sh....

在终端打开xmanager-passive

b0f6b17a76a1faf7af29833f0c3f381e.png

x-passive

打开kettle

407e04407b2ac195ec3570f4b406601f.png

kettle8

循环实现

  • 需求描述

需要采集2个数据库中数据。2个数据库的表结构相同。

分析:

有2个数据库配置,使用变量灵活代替配置。

需要执行2次数据采集,使用循环解决重复劳动。

  • 需求实现
  1. 创建配置表

因为数据还有其他的计算需求,这里,笔者使用数据库表的方式,进行数据库配置信息存储,(简单一点,也可以使用配置文件,如json 、yml等)。

在配置数据库(oracle)中创建配置信息表

create table kettle_db_info(  db_name VARCHAR2(10),  ip      VARCHAR2(16),  username VARCHAR2(44),  passwd  VARCHAR2(530),  port    VARCHAR2(5));INSERT INTO kettle_db_info VALUES('orcl','10.0.0.0','username0','passwd0','1521');INSERT INTO kettle_db_info VALUES('orcl','10.0.0.1','username1','passwd1','1521');COMMIT;
  1. kettl中创建输入转换

在左边菜单中选择 输入》表输入,配置表输入转换如下图:

aff4eb0527c5ee73d294df238ce11278.png

在左边菜单中选择 作业》复制记录到结果,配置完成后如下图:

f593879a4c1216dba7055fa41848118f.png
  1. 配置数据插入kafka 转换

选择表输入、需要新建数据库连接,配置的时候需要用变量代替。

da6ece3c96273afdc5aafde587371017.png

source_db_config

根据业务逻辑编写sql,这里笔者将数据进行json格式包装:

2feb7fb2b81535e55b763e2f3a8282eb.png

分别选择 输出》JSON output 和 Streaming》Kafka producer,选择后如下图:

4a499dcab24983fa993d0cf00aded28b.png
  • 配置 输出》JSON output
4fe79c85de945c5cb599401aa0ed613b.png

配置字段

71e5bbf7e3c41eaa634143b1d2fbd963.png
  • 配置 Streaming》Kafka producer
fc3cf8863591db9b5008c9f803a652f5.png
  1. 创建循环执行的job

新建job如下图:

70c864db00dc4df3d5fe856fca8cf6e3.png

其中 转换(in_data) 的配置为:

5494b5dd1e07f45d9c214c02a13281b7.png

其中 转换(in_kafka)配置为:

e804aa6e3f3576586f9619296674d878.png

选项 执行每一个输入行 必须要选择才能循环执行。


a8f765b9083da41e0d2d50882f66e4c0.png

需要将变量名称进行映射,才能使用变量。

执行job 并 验证kafka数据

执行job:

9f201fb112cb8657da831d3f1fe679a7.png

在kafka中验证数据

# docker exec -it 8829606db8f8 /opt/kafka/bin/kafka-console-consumer.sh --bootstrap-server kafka1:9092,kafka2:9093,kafka3:9094 --topic kettle_kafka --from-beginning{"tb_name":"XXARTMENTDX","tbs_name":"xxx"}{"tb_name":"XXMPANYDEFIX","tbs_name":"xxx"}
要在Docker安装kafka-eagle和kafka,你可以按照以下步骤进行操作: 1. 首,克隆kafka-eagle的GitHub仓库并进入该目录: ``` mkdir /opt/kafka & cd git clone https://github.com/nick-zh/docker-kafka-eagle.git cd docker-kafka-eagle ```\[1\] 2. 接下来,使用docker-compose来安装kafka-eagle和kafka。你可以在docker-compose.yml文件中配置kafkakafka-eagle的相关参数,然后运行以下命令启动容器: ``` docker-compose up -d ```\[2\] 3. 等待一段时间,容器将会启动并运行kafkakafka-eagle。 现在,你已经成功在Docker安装kafka-eagle和kafka。你可以通过访问kafka-eagle的Web界面来监控和管理kafka集群。请确保你已经按照上述步骤正确配置了docker-compose.yml文件中的参数。\[3\] #### 引用[.reference_title] - *1* *2* [利用docker安装kafkakafka-eagle](https://blog.csdn.net/weixin_43848469/article/details/124505415)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] - *3* [(一)docker镜像制作案例——关于kafka-eagle-2.0.8(EFAK)版本的kafka管理工具实现镜像制作及发布](https://blog.csdn.net/yprufeng/article/details/121236167)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v91^insert_down28v1,239^v3^insert_chatgpt"}} ] [.reference_item] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值