利用docker-compose来搭建flink集群

1.前期准备

(1)把docker,docker-compose,kafka集群安装配置好
参考文章:

利用docker搭建kafka集群并且进行相应的实践-CSDN博客

这篇文章里面有另外两篇文章的链接,点进去就能够看到

(2)最好把Finalshell也下载好,具体下载教程详见如下文章:

保姆级教程下载finalshell以及连接云服务器基础的使用教程_finalshell下载安装-CSDN博客

(3)最好把docker的镜像源换一下

vi /etc/docker/daemon.json 

把里面原来的镜像源全部删掉,换成下面的镜像源(何驰给我的)

{"registry-mirrors": ["http://hub-mirror.c.163.com","https://mirror.ccs.tencentyun.com","https://docker-proxy.741001.xyz","https://registry.docker-cn.com"]
}

 保存并且退出,查看一下

docker info
[root@node1 ~]# docker info
Client: Docker Engine - CommunityVersion:    26.1.4Context:    defaultDebug Mode: falsePlugins:buildx: Docker Buildx (Docker Inc.)Version:  v0.14.1Path:     /usr/libexec/docker/cli-plugins/docker-buildxcompose: Docker Compose (Docker Inc.)Version:  v2.27.1Path:     /usr/libexec/docker/cli-plugins/docker-composeServer:Containers: 3Running: 0Paused: 0Stopped: 3Images: 2Server Version: 26.1.4Storage Driver: overlay2Backing Filesystem: xfsSupports d_type: trueUsing metacopy: falseNative Overlay Diff: trueuserxattr: falseLogging Driver: json-fileCgroup Driver: cgroupfsCgroup Version: 1Plugins:Volume: localNetwork: bridge host ipvlan macvlan null overlayLog: awslogs fluentd gcplogs gelf journald json-file local splunk syslogSwarm: inactiveRuntimes: io.containerd.runc.v2 runcDefault Runtime: runcInit Binary: docker-initcontainerd version: d2d58213f83a351ca8f528a95fbd145f5654e957runc version: v1.1.12-0-g51d5e94init version: de40ad0Security Options:seccompProfile: builtinKernel Version: 3.10.0-1160.el7.x86_64Operating System: CentOS Linux 7 (Core)OSType: linuxArchitecture: x86_64CPUs: 1Total Memory: 3.682GiBName: node1ID: eb6f4510-9e84-4973-aad6-39e9ecce6034Docker Root Dir: /var/lib/dockerDebug Mode: falseExperimental: falseInsecure Registries:127.0.0.0/8Registry Mirrors:http://hub-mirror.c.163.com/https://mirror.ccs.tencentyun.com/https://docker-proxy.741001.xyz/https://registry.docker-cn.com/Live Restore Enabled: false

2.利用docker-compose配置flink集群 (一直在node1的root用户下进行)

(1)编写flink.yml文件,输入以下代码

mkdir -p /export/server
cd /export/server
vi flink.yml

添加以下内容

version: '3'
services:jobmanager:image: flink:latestcontainer_name: jobmanagerhostname: jobmanagerports:- "8081:8081"command: jobmanagerenvironment:- JOB_MANAGER_RPC_ADDRESS=jobmanagernetworks:- flink_networktaskmanager:image: flink:latestdepends_on:- jobmanagerports:- "8082-8084:8081"  # 确保端口范围足够command: taskmanagerscale: 3  # 设置TaskManager的数量为3environment:- JOB_MANAGER_RPC_ADDRESS=jobmanagernetworks:- flink_network
networks: #注意这里,要跟services配置项目对齐(即平级的意思)flink_network:driver: bridge

(2)使用如下命令启动集群(记得先启动docker),同时查看集群运行状态:

systemctl start docker
docker-compose -f flink.yml up -d
docker ps

效果如下

[root@node1 server]# systemctl start docker
[root@node1 server]# docker-compose -f flink.yml up -d
/usr/local/lib/python3.6/site-packages/paramiko/transport.py:32: CryptographyDeprecationWarning: Python 3.6 is no longer supported by the Python core team. Therefore, support for it is deprecated in cryptography. The next release of cryptography will remove support for Python 3.6.from cryptography.hazmat.backends import default_backend
Creating network "server_flink_network" with driver "bridge"
WARNING: Found orphan containers (kafka2, kafka1, kafka3) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
Pulling jobmanager (flink:latest)...
latest: Pulling from library/flink
6414378b6477: Pull complete
2c9f253e30bf: Pull complete
65c8233e39bf: Pull complete
b59d22db63f3: Pull complete
b80a9c727cee: Pull complete
da3337ead35a: Pull complete
53e543b721f9: Pull complete
ecebf073acfb: Pull complete
21be4ec89742: Pull complete
f71629a01e27: Pull complete
cc4f5f48c9f1: Pull complete
Digest: sha256:2ec7f6d5591444334f63b66ddd49c7ae02551cb0a27c0988790fa43caa49716f
Status: Downloaded newer image for flink:latest
Creating jobmanager ... done
WARNING: The "taskmanager" service specifies a port on the host. If multiple containers for this service are created on a single host, the port will clash.
Creating server_taskmanager_1 ... done
Creating server_taskmanager_2 ... done
Creating server_taskmanager_3 ... done
[root@node1 server]# docker ps
CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS         PORTS                                                 NAMES
e908f25d0df5   flink:latest   "/docker-entrypoint.…"   6 seconds ago   Up 2 seconds   6123/tcp, 0.0.0.0:8084->8081/tcp, :::8084->8081/tcp   server_taskmanager_1
8ebe74a4481a   flink:latest   "/docker-entrypoint.…"   6 seconds ago   Up 2 seconds   6123/tcp, 0.0.0.0:8083->8081/tcp, :::8083->8081/tcp   server_taskmanager_2
11936734f5cf   flink:latest   "/docker-entrypoint.…"   6 seconds ago   Up 3 seconds   6123/tcp, 0.0.0.0:8082->8081/tcp, :::8082->8081/tcp   server_taskmanager_3
e053c7560ee9   flink:latest   "/docker-entrypoint.…"   8 seconds ago   Up 6 seconds   6123/tcp, 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp   jobmanager
[root@node1 server]# 

成功后在网页上面输入node1:8081进入这个网站(有时候因为网络不好会进入不了这个网站) 

然后就ok了!

(3)关闭flink集群代码

docker-compose -f flink.yml down

效果如下 

[root@node1 server]# docker-compose -f flink.yml down
/usr/local/lib/python3.6/site-packages/paramiko/transport.py:32: CryptographyDeprecationWarning: Python 3.6 is no longer supported by the Python core team. Therefore, support for it is deprecated in cryptography. The next release of cryptography will remove support for Python 3.6.from cryptography.hazmat.backends import default_backend
Stopping server_taskmanager_1 ... done
Stopping server_taskmanager_2 ... done
Stopping server_taskmanager_3 ... done
Stopping jobmanager           ... done
WARNING: Found orphan containers (kafka2, kafka3, kafka1) for this project. If you removed or renamed this service in your compose file, you can run this command with the --remove-orphans flag to clean it up.
Removing server_taskmanager_1 ... done
Removing server_taskmanager_2 ... done
Removing server_taskmanager_3 ... done
Removing jobmanager           ... done
Removing network server_flink_network
[root@node1 server]# 

3.参考文章:

(1)在linux虚拟机上面配置Docker时所踩过的坑_docker 20.10.6设置镜像源不生效-CSDN博客

(2)黑马大数据学习笔记4-Hive部署和基本操作_黑马大数据 hive笔记-CSDN博客

(3)ubuntu系统中使用docker-compose安装部署docker集群(本地)-CSDN博客

(4)利用docker搭建kafka集群并且进行相应的实践-CSDN博客

4.补充笔记

(1)如果使用docker拉取flink镜像的速度太慢,就可能是因为docker的镜像源太老旧了。

使用 Docker 拉取 Flink 镜像时,如果速度较慢,可能有以下几个原因:

### 1. **Docker Hub 服务器远程访问速度慢**
   - 默认情况下,Docker 会从 Docker Hub 拉取镜像,而 Docker Hub 的服务器位于国外。如果你在中国或其他地区,可能会受到网络带宽限制,导致下载速度慢。

### 2. **网络带宽问题**
   - 如果你的网络连接较慢,或者有网络拥塞、丢包等问题,都会导致拉取速度变慢。

### 3. **Docker 镜像源不稳定**
   - Docker Hub 本身的服务器或某个镜像源可能出现故障或负载过高,导致访问速度下降。

### 4. **没有使用 Docker 镜像加速器**
   - Docker 官方没有为国内用户提供快速的镜像下载服务,若未配置国内的 Docker 镜像加速器,下载速度会非常慢。

### 5. **镜像的大小**
   - Flink 镜像可能相对较大,下载时需要更多的时间,尤其是没有进行增量拉取(如果镜像有很大变化,可能需要完整拉取)。

### 6. **镜像的标签(Tag)问题**
   - 如果你指定的是一个较老或者不常用的镜像标签,可能会拉取到一些不常用的镜像版本,而这些镜像版本可能分布在不同的服务器节点上,导致拉取速度变慢。

---

### **解决办法:**
1. **使用国内镜像源**:
   - 配置 Docker 镜像加速器,选择国内的 Docker 镜像源来加速下载速度。常见的加速器有:
     - 网易云镜像:`http://hub-mirror.c.163.com`
     - 腾讯云镜像:`https://mirror.ccs.tencentyun.com`
     - 阿里云镜像:`https://registry.cn-hangzhou.aliyuncs.com`
     - Docker 官方中国镜像:`https://registry.docker-cn.com`

2. **配置 Docker 镜像加速器**:
   - 你可以在 Docker 配置文件 `/etc/docker/daemon.json` 中配置镜像加速器。例如:
     ```json
     {
       "registry-mirrors": [
         "http://hub-mirror.c.163.com",
         "https://mirror.ccs.tencentyun.com"
       ]
     }
     ```
   - 然后重新启动 Docker 服务:
     ```bash
     sudo systemctl restart docker
     ```

3. **选择合适的镜像标签**:
   - 尽量选择较为稳定和常用的标签(如 `latest` 或特定版本标签),避免使用过时的标签。

4. **检查网络环境**:
   - 检查你的网络连接是否稳定,并确保没有中间的网络限制或防火墙阻止访问 Docker Hub。

通过这些方法,你应该能够提高拉取 Flink 镜像的速度。

(2)docker ps和docker-compose ps区别是什么

`docker ps` 和 `docker-compose ps` 都用于查看容器的运行状态,但它们有一些重要的区别,主要体现在它们的使用场景和管理方式上。下面是详细的对比:

### 1. **`docker ps`**:

- **功能**:列出当前正在运行的 Docker 容器。
- **作用范围**:它只显示当前 Docker 主机上运行的容器,不依赖于 Docker Compose 配置。
- **默认显示内容**:默认显示容器的 ID、名称、镜像、命令、创建时间、状态、端口等信息。
- **适用场景**:当你使用 `docker` 命令直接管理容器时,使用 `docker ps` 查看容器的状态。例如,你直接使用 `docker run` 启动的容器。

#### 示例:
```bash
docker ps
```

输出示例:
```
CONTAINER ID   IMAGE     COMMAND                  CREATED         STATUS         PORTS     NAMES
1234abcd5678   nginx     "nginx -g 'daemon of…"   10 minutes ago  Up 9 minutes   80/tcp    hopeful_morse
```

- `docker ps` 只显示运行中的容器。如果你想查看所有容器(包括停止的容器),可以加上 `-a` 参数:
  ```bash
  docker ps -a
  ```

### 2. **`docker-compose ps`**:

- **功能**:列出由 Docker Compose 管理的服务的容器状态。
- **作用范围**:它只显示当前在 Docker Compose 配置下运行的容器。Docker Compose 是一个工具,允许你通过 YAML 文件定义和运行多个 Docker 容器。
- **默认显示内容**:显示服务的状态、容器 ID、端口、以及服务名称等信息。
- **适用场景**:当你使用 Docker Compose 启动一组容器时,使用 `docker-compose ps` 查看这些容器的状态。

#### 示例:
```bash
docker-compose ps
```

输出示例:
```
      Name                    Command               State           Ports
-----------------------------------------------------------------------------------
myapp_web_1       python app.py                  Up 3 minutes   0.0.0.0:5000->5000/tcp
myapp_db_1        docker-entrypoint.sh postgres   Up 3 minutes   5432/tcp
```

- `docker-compose ps` 只显示通过当前目录下的 `docker-compose.yml` 文件管理的服务。
- 如果你需要查看所有容器的状态(包括停止的容器),可以加上 `-a` 参数:
  ```bash
  docker-compose ps -a
  ```

### **主要区别**:

| **特性**                | **`docker ps`**                                      | **`docker-compose ps`**                                  |
|-------------------------|------------------------------------------------------|----------------------------------------------------------|
| **管理对象**            | Docker 容器(所有通过 Docker CLI 启动的容器)        | Docker Compose 管理的服务容器(通过 `docker-compose` 启动的容器) |
| **查看范围**            | 显示所有运行中的容器(不依赖于 Compose)              | 仅显示通过 `docker-compose` 启动的容器                  |
| **命令的作用对象**      | 针对单个 Docker 容器的操作                            | 针对一个或多个服务(服务是由 Compose 配置定义的)         |
| **是否依赖 Docker Compose** | 否                                                   | 是                                                        |
| **常用场景**            | 直接使用 `docker run` 启动的容器,或在没有 Compose 的情况下管理容器 | 使用 Docker Compose 管理多容器应用时,查看应用状态        |

### **总结**:
- 如果你只是想查看 Docker 主机上所有容器的状态,无论它们是通过 Docker 还是 Docker Compose 启动的,使用 `docker ps`。
- 如果你在使用 Docker Compose 管理一个多容器应用,并想查看这些容器的状态,使用 `docker-compose ps`。

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

计算机网络复习6——网络层

域名系统NDS NDS是互联网的命名系统,用来把便于人们使用的机器名字转换为IP地址,作为人与机器之间的中间件 域名 域名是主机的名字 域名使用层次树状结构,由标号序列组成,各标号之间用点隔开,每个名字在互联网上是…

Python_Flask01

所有人都不许学Java了,都来学Python! 如果不来学的话请网爆我的老师---蔡老师 Flask的前世姻缘 我不知道,没啥用,要学好这个框架,其实多读书,多看报就行了,真心想了解的话! Welcom…

借助 AI 工具,共享旅游-卡-项目助力年底增收攻略

年底了,大量的商家都在开始筹备搞活动,接下来的双十二、元旦、春节、开门红、寒假,各种活动,目的就是为了拉动新客户。 距离过年还有56 天,如何破局? 1、销售渠道 针对旅游卡项目,主要销售渠道…

SHELL----正则表达式

一、文本搜索工具——grep grep -参数 条件 文件名 其中参数有以下: -i 忽略大小写 -c 统计匹配的行数 -v 取反,不显示匹配的行 -w 匹配单词 -E 等价于 egrep ,即启用扩展正则表达式 -n 显示行号 -rl 将指定目录内的文件打…

基于Pyhton的人脸识别(Python 3.12+face_recognition库)

使用Python进行人脸编码和比较 简介 在这个教程中,我们将学习如何使用Python和face_recognition库来加载图像、提取人脸编码,并比较两个人脸是否相似。face_recognition库是一个强大的工具,它基于dlib的深度学习模型,可以轻松实…

vitepress组件库文档项目 markdown语法大全(修正版)

#上次总结的 有些语法是用在markdown文档中的 使用到vitepress项目中有些语法可能有出入 于是我再总结一版 vitepress项目中的markdown语法大全 在阅读本章节之前,请确保你已经对 Markdown 有所了解。如果你还不了解 Markdown ,请先学习一些Markdown 教…

Ubuntu 构建安装 mongocxx 驱动(使用指定版本 mongoc 驱动)

Ubuntu 构建安装 mongocxx 驱动(使用指定版本 mongoc 驱动) 安装依赖项安装 mongo-cxx-driver测试安装 本文是安装 MongoDB C 驱动程序(mongocxx)的详细教程,系统使用的是 Ubuntu24。 如果想安装 mongodb 数据库&#…

linux上修改容器网卡docker0为固定ip

修改容器为固定ip段。 1.在一次项目中发现创建的容器网段跟办公室网段有冲突的,导致连接不上。修改容器ip为固定ip 这是默认启动docker自动创建的。172网段 2.修改前先停用运行容器 3.在配置路径下修改vim /etc/docker/daemon.json 4.重启docker systemctl re…

vue 具名插槽

vue 具名插槽 1.slot 插槽ComponentB slot 2. v-slot属性具名插槽 简写 v-slot # 2.1具名插槽 2.2 v-slot 简写 插槽数 据

技术栈6:Docker入门 Linux入门指令

目录 1.Linux系统目录结构 2.处理目录的常用命令 3.Docker概述 4.Docker历史 5.Docker基本组成 6.Docker底层原理 7.Docker修改镜像源 8.Docker基本命令 9.Docker创建Nginx实战 10.数据卷 11.镜像和dockerfile 在学习docker之前我们先要熟悉Linux系统,推…

同为科技(TOWE)柔性定制化PDU插座

随着科技的进步,越来越多的精密电子设备,成为工作生活密不可分的工具。 电子电气设备的用电环境也变得更为复杂,所以安全稳定的供电是电子电气设备的生命线。 插座插排作为电子电气设备最后十米范围内供配电最终核心部分,便捷、安…

hhdb数据库介绍(10-43)

安全 密码安全管理 密码安全管理为用户提供了对计算节点数据库用户与存储节点的连接用户、备份用户的密码有效期监控提醒。到期后自动提示用户修改密码以提升系统的安全性。 数据库用户密码 (一)密码修改 用户可以在“安全->密码安全管理->数据…

Docker 安装 Yapi

Docker 安装系列 Docker已安装。 1、场景Yapi使用的MongoDB用户信息 1.1 创建自定义 Docker 网络 首先,创建一个自定义的 Docker 网络,以便 MongoDB 和 YApi 容器可以相互通信 [rootflexusx-328569 data]# docker network create yapi-networ…

基于vue框架的的献血管理系统knmx7(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面。

系统程序文件列表 项目功能:用户,献血车,预约献血,献血记录,献血结果 开题报告内容 基于Vue框架的献血管理系统开题报告 一、课题名称 基于Vue框架的献血管理系统 二、研究背景与意义 随着医疗技术的不断进步和各类突发事件的频发,临床用血需求日益…

青龙面板添加任务执行自己的脚本文件(非订阅) 保姆级图文

目录 效果预览脚本存放的位置创建任务cron规则字段含义:常见的特殊字符: 可能你的脚本需要安装依赖总结 欢迎关注 『青龙面板』 专栏,持续更新中 欢迎关注 『青龙面板』 专栏,持续更新中 效果预览 你的python脚本 print(123)运行…

nginx中tcp_nodelay、types_hash_max_size都是什么配置?

nginx中tcp_nodelay、types_hash_max_size都是什么配置? 在 Nginx 中,tcp_nodelay 和 types_hash_max_size 是两个不同的配置项,它们分别与网络性能优化和 MIME 类型的管理相关。 1. tcp_nodelay 功能: 控制是否启用 TCP_NODELAY…

【联邦学习】理论学习

文章目录 前言一、联邦学习要解决的问题二、什么是联邦学习2.1 发展历程2.2 分布式学习2.3 联邦学习和分布式学习的区别 3. 联邦学习工作原理4. 种类4.1 横向联邦学习4.2 纵向联邦学习4.3 迁移联邦学习 5. 技术挑战统计挑战:数据非独立同分布(non-lld)系统挑战&…

Shell 传递参数

Shell 传递参数 我们可以在执行 Shell 脚本时,向脚本传递参数,脚本内获取参数的格式为 $n,n 代表一个数字,1 为执行脚本的第一个参数,2 为执行脚本的第二个参数。 例如可以使用 $1、$2 等来引用传递给脚本的参数&…

【组件封装】uniapp vue3 封装一个完整的Tabs(标签页)组件教程,功能由简到杂实现讲解。

文章目录 前言一、简单版Tabs代码实现: 二、下划线带动画的TabsAPI回顾:代码实现: 三、内容区域滑动切换切换动画代码实现:(2)禁用手势滑动切换(3)内容区域换为插槽 四、标签栏可滚动…

35页PDF | 元数据与数据血缘落地实施(限免下载)

一、前言 这份报告详细介绍了元数据与数据血缘的概念、重要性以及在企业数据中台中的应用。报告阐述了数据中台的核心价值在于整合和管理体系内的数据,以提升数据资产化能力并支持业务决策。报告还涵盖了元数据的分类(技术元数据和业务元数据&#xff0…