【内网基于docker部署flink1.13.6 CDC、zeppelin0.10.0、flink-sql-cookbook-on-zeppelin】

news2024/11/28 21:37:07

内网基于docker部署flink1.13.6 CDC、zeppelin0.10.1、flink-sql-cookbook-on-zeppelin

  • 1、基础环境
  • 2、部署步骤
    • 2.1 docker安装
    • 2.2 拷贝docker镜像至内网
      • 2.2.1 外网机器下载所有需要镜像
      • 2.2.2 外网机器镜像检查
      • 2.2.3 外网机器镜像打包
      • 2.2.4 拷贝至内网
      • 2.2.5 内网加载镜像
    • 2.3 下载flink-sql-cookbook-on-zeppelin
    • 2.4 docker-compose文件
    • 2.5 内网运行
    • 2.6 访问验证
      • 2.6.1 查看运行的容器
      • 2.6.2 web页面验证
    • 2.7 部署cdc及其依赖的jar包
      • 2.7.1 jar包下载
      • 2.7.2 jar包上传服务器
      • 2.7.3 jar包上传docker
      • 2.7.4 flink的python包拷贝
      • 2.7.5 拷贝flink文件夹至zeppelin
      • 2.7.6 重启docker容器
    • 2.8 zeppelin配置
      • 2.8.1 flink环境配置
    • 2.9 服务可用性验证
      • 2.9.1 flink验证
      • 2.9.2 Cookbook验证
  • 3 结束

本文主要基于centos7单机、docker部署flink cdc和zeppelin,解决了cdc的jar包依赖。

1、基础环境

虚拟化服务器 32GB内存 500GB硬盘 16核
操作系统 centos 7
基础软件 docker

2、部署步骤

包含docker安装(略)、docker-compose文件编写、docker运行、CDC jar包部署、zeppelin运行测试。

2.1 docker安装

请参见互联网相关文献。

2.2 拷贝docker镜像至内网

2.2.1 外网机器下载所有需要镜像

在外网机器运行以下命令

docker pull apache/zeppelin:0.10.1
docker pull flink:1.13.6-scala_2.12-java8

2.2.2 外网机器镜像检查

在外网机器运行以下命令

docker images

应该看到2.2.1中的镜像

2.2.3 外网机器镜像打包

在外网机器运行以下命令

docker save -o apache_zeppelin_0.10.1.tar apache/zeppelin:0.10.1
docker save -o flink_1.13.6-scala_2.12-java8.tar  flink:1.13.6-scala_2.12-java8

2.2.4 拷贝至内网

将2.2.3中的tar包转递至内网服务器

2.2.5 内网加载镜像

在内网服务器执行以下命令

docker load -i  apache_zeppelin_0.10.1.tar
docker load -i  flink_1.13.6-scala_2.12-java8.tar

6.内网镜像查看
在内网服务器执行以下命令

docker images

应看到导入的镜像

顺便执行以下命令,为下边步骤创建相关目录

mkdir /opt/flink1136_cdc/
mkdir /opt/flink1136_cdc/flink
mkdir /opt/flink1136_cdc/jars
echo 'Asia/Shanghai' > /etc/timezone/timezone

2.3 下载flink-sql-cookbook-on-zeppelin

在外网机器执行下面命令,下载cookbook

git clone https://github.com/zjffdu/flink-sql-cookbook-on-zeppelin.git

拷贝flink-sql-cookbook-on-zeppelin文件夹至内网服务器的/opt/flink1136_cdc目录下

2.4 docker-compose文件

将下述代码复制为docker-compose.yml文件,拷贝至内网机器的/opt/flink1136_cdc/目录下。
本文件包含1个flink jobmanager实例、3个flink taskmanager 实例、1个zeppelin示例,并映射了系统的时区,解决docker镜像时区与宿主机器时区不一致的问题。

version: "2.1"
services:
  jobmanager:
    image: flink:1.13.6-scala_2.12-java8
    expose:
      - "6123"
    ports:
      - "8081:8081"
    command: jobmanager
    volumes:
      - /etc/timezone/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager
      - JAVA_OPTS=-XX:MetaspaceSize=128m -XX:MaxM

  taskmanager1:
    image: flink:1.13.6-scala_2.12-java8
    expose:
      - "6121"
      - "6122"
    depends_on:
      - jobmanager
    command: taskmanager
    volumes:
      - /etc/timezone/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    links:
      - "jobmanager:jobmanager"
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager

  taskmanager2:
    image: flink:1.13.6-scala_2.12-java8
    expose:
      - "6121"
      - "6122"
    depends_on:
      - jobmanager
    command: taskmanager
    volumes:
      - /etc/timezone/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    links:
      - "jobmanager:jobmanager"
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager

  taskmanager3:
    image: flink:1.13.6-scala_2.12-java8
    expose:
      - "6121"
      - "6122"
    depends_on:
      - jobmanager
    command: taskmanager
    volumes:
      - /etc/timezone/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
    links:
      - "jobmanager:jobmanager"
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager

  zeppelin:
    image: apache/zeppelin:0.10.1
    ports:
      - "8080:8080"
    depends_on:
      - jobmanager
    volumes:
      - /etc/timezone/timezone:/etc/timezone:ro
      - /etc/localtime:/etc/localtime:ro
      # - /opt/flink1136_cdc/flink-sql-cookbook-on-zeppelin/Flink Sql Cookbook:/opt/zeppelin/notebook
      - /opt/flink1136_cdc/flink:/flink
    links:
      - "jobmanager:jobmanager"

2.5 内网运行

在内网机器的/opt/flink1136_cdc/目录执行以下命令

cd /opt/flink1136_cdc
docker-compose up -d

2.6 访问验证

2.6.1 查看运行的容器

docker ps

命令结果应该如下:

flink1136_cdc-taskmanager3-1
flink1136_cdc-zeppelin-1
flink1136_cdc-taskmanager2-1
flink1136_cdc-taskmanager1-1
flink1136_cdc-jobmanager-1

2.6.2 web页面验证

访问 http://127.0.0.1:8080 和 http://127.0.0.1:8081 应看到相应的web页面
备注:127.0.0.1 需要改成docker服务器的ip地址、域名

2.7 部署cdc及其依赖的jar包

2.7.1 jar包下载

需要下载 flink-cdc-2.2、flink_connector包_1.13.6、及其依赖的jar包,本文已经打包为百度云链接,下载地址为
链接:https://pan.baidu.com/s/1j9_TtDm4dZEojK7ADyPy_Q?pwd=raji 提取码:raji

2.7.2 jar包上传服务器

发挥自己的能力,用各种工具上传到服务器的/opt/flink1136_cdc/jars/目录

2.7.3 jar包上传docker

对 2.6.1 中的各个docker容器运行以下命令(除zeppelin外,flink1136_cdc-taskmanager1-1 替换为 2.6.1中的docker容器名称)

##拷贝jar文件至flink的lib目录
for f in /opt/flink1136_cdc/jars/*jar; do docker cp $f  flink1136_cdc-taskmanager1-1:/opt/flink/lib/; done
for f in /opt/flink1136_cdc/jars/*jar; do docker cp $f  flink1136_cdc-taskmanager2-1:/opt/flink/lib/; done
for f in /opt/flink1136_cdc/jars/*jar; do docker cp $f  flink1136_cdc-taskmanager3-1:/opt/flink/lib/; done
for f in /opt/flink1136_cdc/jars/*jar; do docker cp $f  flink1136_cdc-jobmanager-1:/opt/flink/lib/; done

2.7.4 flink的python包拷贝

对 2.6.1 中的各个docker容器运行以下命令(除zeppelin外,flink1136-taskmanager3-1 替换为 2.6.1中的docker容器名称)

##拷贝python文件至flink的lib目录
docker exec -it flink1136_cdc-taskmanager1-1 /bin/bash
cp /opt/flink/opt/flink-python_2.12-1.13.6.jar /opt/flink/lib/
cp -r /opt/flink/opt/python  /opt/flink/lib/python/
exit

docker exec -it flink1136_cdc-taskmanager2-1 /bin/bash
cp /opt/flink/opt/flink-python_2.12-1.13.6.jar /opt/flink/lib/
cp -r /opt/flink/opt/python  /opt/flink/lib/python/
exit

docker exec -it flink1136_cdc-taskmanager3-1 /bin/bash
cp /opt/flink/opt/flink-python_2.12-1.13.6.jar /opt/flink/lib/
cp -r /opt/flink/opt/python  /opt/flink/lib/python/
exit

docker exec -it  flink1136_cdc-jobmanager-1 /bin/bash
cp /opt/flink/opt/flink-python_2.12-1.13.6.jar /opt/flink/lib/
cp -r /opt/flink/opt/python  /opt/flink/lib/python/
exit

2.7.5 拷贝flink文件夹至zeppelin

在服务器中运行以下命令

##拷贝flink目录到zeppelin
docker cp  flink1136_cdc-jobmanager-1:/opt/flink/   /opt/flink1136_cdc

拷贝cookbook到zeppelin

docker cp  /opt/flink1136_cdc/flink-sql-cookbook-on-zeppelin/'Flink Sql Cookbook'   flink1136_cdc-zeppelin-1:/opt/zeppelin/notebook/'Flink Sql Cookbook'

拷贝 flink-python-*.jar 到zeppelin的lib文件夹下

##拷贝 flink-python-*.jar 到zeppelin的lib文件夹下
docker exec -it  -u root flink1136_cdc-zeppelin-1  /bin/bash
cp /flink/lib/flink-python_2.12-1.13.6.jar /opt/zeppelin/lib  
cd notebook
chmod 777 *** -R
exit
docker restart flink1136_cdc-zeppelin-1

2.7.6 重启docker容器

docker-compose -f /opt/flink1136_cdc/docker-compose.yml  restart

2.8 zeppelin配置

打开web页面 http://127.0.0.1:8080 即可看到zeppelin页面(启动需要时间,如未打开,可稍等2-3分钟)

2.8.1 flink环境配置

按照下图,配置flink的相关参数
在这里插入图片描述

2.9 服务可用性验证

2.9.1 flink验证

打开web页面 http://127.0.0.1:8080,最上主菜单栏选择“Notebook”>“Flink Tutorial”>“1.Flink Basics”,点击“Batch WordCount”的运行按钮,稍等可正常得到结果,则flink配置成功。

2.9.2 Cookbook验证

打开web页面 http://127.0.0.1:8080,最上主菜单栏选择“Notebook”>“Flink Sql Cookbook”>“Aggregations …”>“01 Aggregating …”,点击“Batch WordCount”的运行按钮,点击运行本页的全部代码,稍等可正常得到结果,则Cookbook配置成功。

3 结束

到此结束,有问题请留言。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/142621.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

(剖面图全网唯一教程)如何利用EDEM制作剖面图 (自己琢磨出)

EDEM制作剖面图是一件非常重要的工作,本篇文章的方法是自己琢磨出来的,不一定完全精准,但是有效果,剖面图是可以制作出来的。方法在文末。

如何在图片上添加贴图?试试这几种方法

你平时在拍照的时候,有没有遇到过这样的情况:当你拍照后,发现背景不是很符合你的心意出现了一些你不想分享的物品,这个时候你会怎么办呢?一般情况下,有的小伙伴会选择使用马赛克来遮住这些物品,…

js如何引用同级元素

具体效果示例效果,可点击文末左下角阅读原文https://coder.itclan.cn/fontend/js/17-yinyong-tongji-elem/具体描述在网页中,同级(兄弟)元素,指的是拥有相同的直接父级元素的元素,并且往往指的是同类的元素,同类元素在实际开发中遇到的比较多比如:列表li,并列的按钮等,当需要做…

SpringBoot集成xxl-job分布式定时任务

一、xxl-job定时任务搭建下面这篇文章介绍了xxl-job平台搭建过程https://blog.csdn.net/xrq1995/article/details/126282290二、spring boot项目搭建1.创建项目2.pom文件引入<!-- xxl-job-core --><dependency><groupId>com.xuxueli</groupId><arti…

【文档】利用readthedoc来写一个在线文档

使用readthedoc快速创建在线文档 分为两步走 本地创建文档部署到网络 本地创建文档 先安装sphinx pip install sphinx然后在你的文件夹内 sphinx-quickstart一系列默认回车即可 最后编译 make html会产生_build文件夹之类的。 用浏览器打开_build/html/index.html 以…

详细流程——安装并启动Jupyter notebook

安装并启动使用Jupyter notebook一、安装*step1:*切换路径*step2:*下载*step3:*启动Juypter Notebook*step4:*配置Jupyter Notebook*step5(可不配置):* 添加代码自动补全功能二、启动三、初步使用一、安装 注意&#xff1a;我是没有安装Anaconda&#xff0c;中途觉得需要Jupyt…

LeetCode:16. 最接近的三数之和

16. 最接近的三数之和1&#xff09;题目2&#xff09;思路3&#xff09;代码4&#xff09;结果1&#xff09;题目 给你一个长度为 n 的整数数组 nums 和 一个目标值 target。请你从 nums 中选出三个整数&#xff0c;使它们的和与 target 最接近。 返回这三个数的和。 假定每组…

全网最全ssh:远程连接服务器学习,教你十分钟学会

远程连接服务器简介 SSH是如何工作的&#xff1f; 认证阶段 ssh修改配置文件 配置文件注释 练习 试验1 实验2 测试 远程连接服务器简介 1、什么是远程连接服务器 远程连接服务器通过文字或图形接口方式来远程登录系统&#xff0c;让你在远程终端前登录linux主机以取得可…

JSP学习笔记一

✅作者简介&#xff1a;热爱国学的Java后端开发者&#xff0c;修心和技术同步精进。 &#x1f34e;个人主页&#xff1a;Java Fans的博客 &#x1f34a;个人信条&#xff1a;不迁怒&#xff0c;不贰过。小知识&#xff0c;大智慧。 &#x1f49e;当前专栏&#xff1a;JAVA开发者…

shell第七天作业——awk(上)

题目 1、获取根分区剩余大小 2、获取当前机器ip地址 3、统计出apache的/var/log/httpd/access_log文件中访问量最多的前3个IP 4、打印/etc/passwd中UID大于500的用户名和uid 5、/etc/passwd 中匹配包含root或sys或tcp的任意行 6、请打印出/etc/passwd 第一个域&#xff0…

STM32MP157驱动开发——Regmap API

STM32MP157驱动开发——Regmap API0.前言一、Regmap API 简介1.Regmap 驱动框架2.regmap 结构体3.regmap_config 结构体4.Regmap 操作函数①Regmap 申请与初始化②Regmap释放③regmap 设备访问 API 函数5. regmap_config 掩码设置二、驱动开发1.修改设备结构体&#xff0c;添加…

RxJava VS kotlin flow

1.基础概念介绍 1.1 观察者模式 观察者模式&#xff0c;其实对于Android开发者而言&#xff0c;并不陌生&#xff0c;button的setOnClickListener&#xff0c;就是一个典型的观察者模式。控件button是被观察者&#xff0c;它产生一个事件(点击)&#xff0c;观察者OnClickList…

量化策略——准备2 量化技能树量化术语

文章目录量化技能树量化/金融术语1. 俗语2. 持仓术语3. 资金术语4. 策略术语5. 股票软件界面实用术语量化必然用到的核心价格数据其他数据/指标含义6. 委托单术语量化技能树 首先&#xff0c;量化金融&#xff08;Quantitative Finance&#xff0c;简称“量化”&#xff0c;Qu…

《小猫猫大课堂》三轮1——深度解析数据在内存中的存储

宝子&#xff0c;你不点个赞吗&#xff1f;不评个论吗&#xff1f;不收个藏吗&#xff1f; 最后的最后&#xff0c;关注我&#xff0c;关注我&#xff0c;关注我&#xff0c;你会看到更多有趣的博客哦&#xff01;&#xff01;&#xff01; 喵喵喵&#xff0c;你对我真的很重…

学习网络协议

概述 先从知乎盗个图&#xff1a;怎么开始学习网络协议&#xff1f; - 知乎 1、应用层 作用&#xff1a;定义数据格式并按照对应的格式解读数据。 2、传输层 作用&#xff1a;定义端口&#xff0c;标识应用程序身份&#xff0c;实现端口到端口的通信。 3、网络层 作用&…

5个技巧提高项目领导技能

作为项目经理&#xff0c;一个典型的工作日涉及处理许多任务。监督不同的时间表和里程碑。解决问题&#xff0c;主动解决瓶颈。 这些后勤工作很重要&#xff0c;但您也知道成功的项目管理比协调这些细节要多得多。为了做好你的工作&#xff08;并且把它做好&#xff09;&am…

C语言模拟QT的信号与槽功能

文章目录前言一、Qt信号与槽的实现机理二、简化后的实现步骤1. 定义一些必要的宏2. 实现声明信号的宏3. 实现发射信号的宏4. 取代QObject类5. 实现connect函数6. 可有可无的slots三、完整的代码实现四、使用方法与QT中的区别1. SIG_SLOT_OBJ取代QObject2. 定义信号不同3. 发射信…

【NI Multisim 14.0原理图环境设置——原理图的组成】

目录 序言 一、原理图的组成 &#x1f46c; 1. 元器件 &#x1f46c;2. 仪表 &#x1f46c;3.导线 &#x1f46c;4.丝印层 &#x1f46c;5. 端口 &#x1f46c;6.网络标号 &#x1f46c;7.电源符号 序言 NI Multisim最突出的特点之一就是用户界面友好。它可以使电路设…

为iframe正名,你可能并不需要微前端

作者&#xff1a;刘显安(码怪) 任何新技术、新产品都是有一定适用场景的&#xff0c;它可能在当下很流行&#xff0c;但它不一定在任何时候都是最优解。 前言 最近几年微前端很火&#xff0c;火到有时候项目里面用到了iframe还要偷偷摸摸地藏起来生怕被别人知道了&#xff0c;…

Linux学习笔记——Tomcat安装部署

5.2、Tomcat安装部署 5.2.1、简介 Tomcat是由Apache开发的一个Servlet容器&#xff0c;实现了对Servlet和JSP的支持&#xff0c;并提供了作为Web服务器的一些特有功能&#xff0c;如Tomcat管理和控制平台、安全域管理和Tomcat阀等。 简单来说&#xff0c;Tomcat是一个WEB应用…