利用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 - Community
 Version:    26.1.4
 Context:    default
 Debug Mode: false
 Plugins:
  buildx: Docker Buildx (Docker Inc.)
    Version:  v0.14.1
    Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  compose: Docker Compose (Docker Inc.)
    Version:  v2.27.1
    Path:     /usr/libexec/docker/cli-plugins/docker-compose

Server:
 Containers: 3
  Running: 0
  Paused: 0
  Stopped: 3
 Images: 2
 Server Version: 26.1.4
 Storage Driver: overlay2
  Backing Filesystem: xfs
  Supports d_type: true
  Using metacopy: false
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runc.v2 runc
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: d2d58213f83a351ca8f528a95fbd145f5654e957
 runc version: v1.1.12-0-g51d5e94
 init version: de40ad0
 Security Options:
  seccomp
   Profile: builtin
 Kernel Version: 3.10.0-1160.el7.x86_64
 Operating System: CentOS Linux 7 (Core)
 OSType: linux
 Architecture: x86_64
 CPUs: 1
 Total Memory: 3.682GiB
 Name: node1
 ID: eb6f4510-9e84-4973-aad6-39e9ecce6034
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Registry 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:latest
    container_name: jobmanager
    hostname: jobmanager
    ports:
      - "8081:8081"
    command: jobmanager
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager
    networks:
      - flink_network

  taskmanager:
    image: flink:latest
    depends_on:
      - jobmanager
    ports:
      - "8082-8084:8081"  # 确保端口范围足够
    command: taskmanager
    scale: 3  # 设置TaskManager的数量为3
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager
    networks:
      - 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`。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

网络命令配置

随笔记录 目录 1. 背景介绍 2. 配置网络命令空间 3 验证 3.1 未网络命令空间外网卡配置IP 3.2 验证配置 3.2.1 在网络命令空间外接口启动iperf3 3.2.2 网络命令空间内启动iperf3 client 1. 背景介绍 2. 配置网络命令空间 1. 配置前[rootlocalhost SDK-V1.10.1.7]# ip…

沃丰科技智能客服在电商独立站中有哪些核心功能?

在数字化飞速发展的今天,电商独立站作为企业与消费者沟通的重要桥梁,其客户服务的质量和效率直接关系到企业的竞争力和市场地位。沃丰科技智能客服以其全面的功能,成为了电商独立站接入的首选,为电商企业提供了全新的解决方案。 …

【深度学习】四大图像分类网络之VGGNet

2014年,牛津大学计算机视觉组(Visual Geometry Group)和Google DeepMind公司一起研发了新的卷积神经网络,并命名为VGGNet。VGGNet是比AlexNet更深的深度卷积神经网络,该模型获得了2014年ILSVRC竞赛的第二名&#xff0c…

C/C++当中的内存对齐

一:为什么要存在内存对齐 对与计算机而言,一次性可以取出处理的单元大小为字,在32位系统下,一次性可以取出4个字节,而在64位系统下,一次性可以取出8个字节,而一个地址对应一个内存单元&#xff…

vue聊天对话语音消息播放动态特效

vue2写法&#xff0c;vue3也能用&#xff0c;粘之即走&#xff1a; 示例&#xff1a; <template><div class"voice-hidden"><divclass"voice-play-chat":class"[className, { animate-stop: !isPlaying }]"><div class&q…

最新AI问答创作运营系统(SparkAi系统),GPT-4.0/GPT-4o多模态模型+联网搜索提问+问答分析+AI绘画+管理后台系统

目录 一、人工智能 系统介绍文档 二、功能模块介绍 系统快速体验 三、系统功能模块 3.1 AI全模型支持/插件系统 AI大模型 多模态模型文档分析 多模态识图理解能力 联网搜索回复总结 3.2 AI智能体应用 3.2.1 AI智能体/GPTs商店 3.2.2 AI智能体/GPTs工作台 3.2.3 自…

流媒体之linux下离线部署FFmpeg 和 SRS

前言 用户对网络做了限制&#xff0c;只能访问指定的网址&#xff0c;和没网没啥区别&#xff0c;导致无法连接外网&#xff0c;无法获取安装包&#xff0c;还有一些编译需要的开源工具 用户需要用平台查看库房的海康摄像头实时监控&#xff0c;只能在库房里一台纯净的ubantu…

8. 一分钟读懂“代理模式”

8.1 模式介绍 代理模式是一种结构型设计模式&#xff0c;它通过提供一个代理对象来替代对另一个对象&#xff08;真实对象&#xff09;的访问。代理对象与真实对象实现相同的接口&#xff0c;并通过代理类对真实对象的访问进行控制&#xff0c;可以在调用前后执行附加操作&…

插值方法在MATLAB中的应用和比较

插值方法在MATLAB中的应用和比较 在数据处理和科学计算中&#xff0c;插值是一种常见的技术&#xff0c;用于估计在已知数据点之间未知位置的数值。插值在图像处理、信号处理、数值分析等领域发挥着重要作用。通过插值&#xff0c;我们可以填补数据之间的空隙&#xff0c;平滑数…

FPGA系列,文章目录

前言 FPGA&#xff08;Field-Programmable Gate Array&#xff0c;现场可编程门阵列&#xff09;是一种集成电路&#xff0c;其内部结构可以通过软件重新配置来实现不同的逻辑功能。与传统的ASIC&#xff08;Application-Specific Integrated Circuit&#xff0c;专用集成电路…

STM32 HAL库开发学习5. 系统滴答定时器

STM32 HAL库开发学习5. 系统滴答定时器 一、滴答定时器概述1. 概述2. 时钟源3. 寄存器&#xff08;1&#xff09;控制与状态寄存器 STK_CTRL&#xff08;2&#xff09;重载寄存器 STK_LOAD&#xff08;3&#xff09;当前值寄存器 STK_VAL 二、HAL库滴答定时器初始化三、SysTick…

基于SpringBoot的养老院管理系统的设计与实现

一、前言 随着人口老龄化的加剧&#xff0c;养老院作为老年人养老的重要场所&#xff0c;其管理的高效性和科学性显得尤为重要。传统的养老院管理方式多依赖人工操作&#xff0c;存在信息记录不及时、不准确&#xff0c;管理流程繁琐&#xff0c;资源调配困难等问题。利用信息技…

Scala:正则表达式

object test03 {//正则表达式def main(args: Array[String]): Unit {//定义一个正则表达式//1.[ab]:表示匹配一个字符&#xff0c;或者是a&#xff0c;或者是b//2.[a-z]:表示从a到z的26个字母中的任意一个//3.[A-Z]:表示从A到Z的26个字母中的任意一个//4.[0-9]:表示从0到9的10…

Tomcat,javaweb, servlet , springBoot

在server.xml里配置服务器 <scope>provided</scope>打包的时候&#xff0c;这个jar包不会被打进去&#xff0c;因为tomcat已将封装了这个jar包&#xff0c;没必要要这个

AIGC 012-Video LDM-更进一步,SD作者将LDM扩展到视频生成任务!

AIGC 012-Video LDM-Stable Video diffusion前身&#xff0c;将LDM扩展到视频生成任务&#xff01; 文章目录 0 论文工作1论文方法实验结果 0 论文工作 Video LDM作者也是Stable diffusion的作者&#xff0c;作者在SD的架构上进行扩展&#xff0c;实现了视频的生成。后续在Vid…

WPF+LibVLC开发播放器-音量控制和倍速控制

界面 界面上增加音量的控件和倍速控制控件 音量控制 主要也是一个Slider进度条控件来实现音量调节 我们这里设置默认的最大值为100&#xff0c;默认Value值也为100&#xff0c;默认声音开到最大 这里目前完全由前端控制音量调节&#xff0c;可以直接使用ValueChanged事件实…

计算机网络实验三:wireshark的使用

一、wireshark介绍 wireshark是非常流行的网络封包分析软件&#xff0c;功能十分强大。可以截取经过电脑的各种数据包&#xff0c;显示网络封包的详细信息。wireshark能获取HTTP&#xff0c;也能获取HTTPS&#xff0c;但是不能解密HTTPS&#xff0c;所以wireshark看不懂HTTPS中…

Android hid 数据传输(device 端 )

最近一直在处理hid 数据需求&#xff0c;简而言之就是两台设备直接可以通过usb 线互相传递数据。 项目架构 为什么Device 端要采用HID&#xff08;人机接口设备&#xff09;的方式发送和接收数据呢&#xff1f; 主要是速度快&#xff0c;举个例子&#xff0c;就是鼠标移动&am…

在玩《黑神话:悟空》时游戏画面卡顿是什么原因?游戏画面卡顿要怎么解决?

《黑神话&#xff1a;悟空》游戏画面卡顿问题解析与解决方案 在探索《黑神话&#xff1a;悟空》这款引人入胜的游戏时&#xff0c;玩家可能会遇到游戏画面卡顿的困扰。本文将深入剖析《黑神话&#xff1a;悟空》游戏画面卡顿的原因&#xff0c;并提供实用的解决方法。 游戏画面…

小迪安全笔记 第四十四天 sql盲注 实战利用sql盲注 进行漏洞的利用

sql盲注的分类 什么是盲注 就是我们什么也不知道的情况下进行的注入 前边的注入 都是简单的注入 我们猜测 数据类型 之后 可以直接 union 去查 这种情况多用于 数据库增删查改中的 查 bool盲注也用于查 这个的情况的就是我们前边都试了 没有用 就需要…