利用docker-compose来搭建flink集群

news2024/12/27 0:07:48

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`。

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

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

相关文章

2024年认证杯SPSSPRO杯数学建模C题(第一阶段)云中的海盐解题全过程文档及程序

2024年认证杯SPSSPRO杯数学建模 C题 云中的海盐 原题再现: 巴黎气候协定提出的目标是:在2100年前,把全球平均气温相对于工业革命以前的气温升幅控制在不超过2摄氏度的水平,并为1.5摄氏度而努力。但事实上,许多之前的…

初识树(二叉树,堆,并查集)

本篇博客将涉及到一些专业名词:结点、深度、根、二叉树、满二叉树、完全二叉树、堆、并查集等。 概要 树型结构是一类重要的非线性数据结构。其中以树和二叉树最…

2024年中国光伏产业研究报告(附产业链图谱)

光伏产业是指利用太阳能电池将太阳光转换为电能的产业,它涉及到太阳能电池、组件、系统及相关配套产品的研发、生产、销售和服务。光伏产业是新能源领域的重要组成部分,已成为我国少数具有国际竞争优势的战略性新兴产业之一。国家多个部门联合印发了《智…

Linux:Ext系列文件系统

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 前言一、理解硬件磁盘1.1 磁盘物理结构1.2 磁盘的存储结构1.3 磁盘的逻辑结构 二、文件系统2.1 引⼊"分区”概念和“块"概念2.2 inode(重要)2.3 文件与in…

Alogrithm:巴斯卡三角形

巴斯卡三角形(Pascals Triangle)是一个由数字排列成的三角形,每一行的数字是由前一行的两个相邻数字相加得到的。巴斯卡三角形的每一行对应着二项式展开式的系数。具体如下图所示: 巴斯卡三角形的性质 第 0 行只有一个数字 1。第 …

项目资源管理

点击系统侧边栏里的项目图标 ,会在系统资源列表里显示当前任擎服务器上所有项目的各种资源列表,包括数据模型、后台服务、前端文件、数据表单和微信小程序等。 项目资源管理器用来对开发者自己开发的软件项目进行管理,这里的“项目”是指仅…

WEB开发: Node.js路由之由浅入深(一) - 全栈工程师入门

作为一个使用Node.js多年的开发者,我已经习惯于用Node.js写一些web应用来为工作服务,因为实现快速、部署简单、自定义强。今天我们一起来学习一个全栈工程师必备技能:web路由。(观看此文的前提是默认你已经装好nonde.js了&#xf…

大模型分类3—按功能特性

版权声明 本文原创作者:谷哥的小弟作者博客地址:http://blog.csdn.net/lfdfhl根据功能特性,大模型可分为生成式、分析式和交互式大模型。 1. 大模型分类概述 1.1 生成式大模型 生成式大模型的核心能力在于其创造性,能够独立生成新的数据样本,如文本、图像和音频等。这类…

VUE拖拽对象到另一个区域

最近有个需求是需要在web端定制手机的界面UI(具体实现比较复杂,此处不做阐述,此文章只说明拖拽效果实现),为了方便用户操作,就想实现这种效果:从右侧的图标列表中拖拽图标到左侧模拟的手机界面上…

iOS平台接入Facebook登录

1、FB开发者后台注册账户 2、完善App信息 3、git clone库文件代码接入 4、印尼手机卡开热点调试 备注: 可能遇到的问题: 1、Cocos2dx新建的项目要更改xcode的git设置,不然卡在clone,无法在线获取FBSDK 2、动态库链接 需要在…

传输层TCP_三次握手四次挥手的过程

三次握手四次挥手 三次握手 三次握手

小迪笔记 第四十五天 sql 注入进阶 :二次注入,堆叠注入,数据读取(load_file)加外带

二次注入 概念:就是我们注入的语句(刚注入时 不会产生影响)但是我们的恶意代码会进入数据库 他在被二次利用的时候就会进行执行 这个就是二次注入 这个的典型案例就是账号密码的修改 : 大家应该也知道 账号注册一般是禁止你使…

【SNIP】《An Analysis of Scale Invariance in Object Detection – SNIP》

CVPR-2018 Singh B, Davis L S. An analysis of scale invariance in object detection snip[C]//Proceedings of the IEEE conference on computer vision and pattern recognition. 2018: 3578-3587. https://github.com/bharatsingh430/snip?tabreadme-ov-file 文章目录 …

【C++|Linux|计网】构建Boost站内搜索引擎的技术实践与探索

目录 1、项目的相关背景 2.搜索引擎的相关宏观原理 3.搜索引擎技术栈和项目环境 4.正排索引vs倒排索引-搜索引擎具体原理 5.编写数据去标签与数据清洗的模块 Parser 5.1.去标签 目标: 5.2.代码的整体框架: EnumFile函数的实现: Enu…

ComfyUI绘画|提示词反推工作流,实现自动化书写提示词

今天先分享到这里~ ComfyUI绘画|关于 ComfyUI 的学习建议

高频面试题(含笔试高频算法整理)基本总结回顾20

干货分享,感谢您的阅读! (暂存篇---后续会删除,完整版和持续更新见高频面试题基本总结回顾(含笔试高频算法整理)) 备注:引用请标注出处,同时存在的问题请在相关博客留言…

【AI模型对比】AI新宠Kimi与ChatGPT的全面对比:技术、性能、应用全揭秘

文章目录 Moss前沿AI技术背景Kimi人工智能的技术积淀ChatGPT的技术优势 详细对比列表模型研发Kimi大模型的研发历程ChatGPT的发展演进 参数规模与架构Kimi大模型的参数规模解析ChatGPT的参数体系 模型表现与局限性Kimi大模型的表现ChatGPT的表现 结论:如何选择适合自…

性能测试基础知识jmeter使用

博客主页:花果山~程序猿-CSDN博客 文章分栏:测试_花果山~程序猿的博客-CSDN博客 关注我一起学习,一起进步,一起探索编程的无限可能吧!让我们一起努力,一起成长! 目录 性能指标 1. 并发数 (Con…

如何通过 Windows 自带的启动管理功能优化电脑启动程序

在日常使用电脑的过程中,您可能注意到开机后某些程序会自动运行。这些程序被称为“自启动”或“启动项”,它们可以在系统启动时自动加载并开始运行,有时甚至在后台默默工作。虽然一些启动项可能是必要的(如杀毒软件)&a…

基于PSO粒子群优化的CNN-LSTM-SAM网络时间序列回归预测算法matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频&#xff09…