使用docker-compose来搭建flink集群

打印 上一主题 下一主题

主题 1018|帖子 1018|积分 3054

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

x
1.前期预备

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


使用docker搭建kafka集群并且进行相应的实践-CSDN博客
这篇文章里面有别的两篇文章的链接,点进去就可以或许看到


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

保姆级教程下载finalshell以及连接云服务器基础的使用教程_finalshell下载安装-CSDN博客
(3)最好把docker的镜像源换一下

  1. vi /etc/docker/daemon.json
复制代码
把里面原来的镜像源全部删掉,换成下面的镜像源(何驰给我的)
  1. {
  2.   "registry-mirrors": [
  3.     "http://hub-mirror.c.163.com",
  4.     "https://mirror.ccs.tencentyun.com",
  5.     "https://docker-proxy.741001.xyz",
  6.     "https://registry.docker-cn.com"
  7.   ]
  8. }
复制代码
 生存并且退出,查看一下
  1. docker info
复制代码
  1. [root@node1 ~]# docker info
  2. Client: Docker Engine - Community
  3. Version:    26.1.4
  4. Context:    default
  5. Debug Mode: false
  6. Plugins:
  7.   buildx: Docker Buildx (Docker Inc.)
  8.     Version:  v0.14.1
  9.     Path:     /usr/libexec/docker/cli-plugins/docker-buildx
  10.   compose: Docker Compose (Docker Inc.)
  11.     Version:  v2.27.1
  12.     Path:     /usr/libexec/docker/cli-plugins/docker-compose
  13. Server:
  14. Containers: 3
  15.   Running: 0
  16.   Paused: 0
  17.   Stopped: 3
  18. Images: 2
  19. Server Version: 26.1.4
  20. Storage Driver: overlay2
  21.   Backing Filesystem: xfs
  22.   Supports d_type: true
  23.   Using metacopy: false
  24.   Native Overlay Diff: true
  25.   userxattr: false
  26. Logging Driver: json-file
  27. Cgroup Driver: cgroupfs
  28. Cgroup Version: 1
  29. Plugins:
  30.   Volume: local
  31.   Network: bridge host ipvlan macvlan null overlay
  32.   Log: awslogs fluentd gcplogs gelf journald json-file local splunk syslog
  33. Swarm: inactive
  34. Runtimes: io.containerd.runc.v2 runc
  35. Default Runtime: runc
  36. Init Binary: docker-init
  37. containerd version: d2d58213f83a351ca8f528a95fbd145f5654e957
  38. runc version: v1.1.12-0-g51d5e94
  39. init version: de40ad0
  40. Security Options:
  41.   seccomp
  42.    Profile: builtin
  43. Kernel Version: 3.10.0-1160.el7.x86_64
  44. Operating System: CentOS Linux 7 (Core)
  45. OSType: linux
  46. Architecture: x86_64
  47. CPUs: 1
  48. Total Memory: 3.682GiB
  49. Name: node1
  50. ID: eb6f4510-9e84-4973-aad6-39e9ecce6034
  51. Docker Root Dir: /var/lib/docker
  52. Debug Mode: false
  53. Experimental: false
  54. Insecure Registries:
  55.   127.0.0.0/8
  56. Registry Mirrors:
  57.   http://hub-mirror.c.163.com/
  58.   https://mirror.ccs.tencentyun.com/
  59.   https://docker-proxy.741001.xyz/
  60.   https://registry.docker-cn.com/
  61. Live Restore Enabled: false
复制代码

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

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

  1. mkdir -p /export/server
  2. cd /export/server
  3. vi flink.yml
复制代码
添加以下内容
  1. version: '3'
  2. services:
  3.   jobmanager:
  4.     image: flink:latest
  5.     container_name: jobmanager
  6.     hostname: jobmanager
  7.     ports:
  8.       - "8081:8081"
  9.     command: jobmanager
  10.     environment:
  11.       - JOB_MANAGER_RPC_ADDRESS=jobmanager
  12.     networks:
  13.       - flink_network
  14.   taskmanager:
  15.     image: flink:latest
  16.     depends_on:
  17.       - jobmanager
  18.     ports:
  19.       - "8082-8084:8081"  # 确保端口范围足够
  20.     command: taskmanager
  21.     scale: 3  # 设置TaskManager的数量为3
  22.     environment:
  23.       - JOB_MANAGER_RPC_ADDRESS=jobmanager
  24.     networks:
  25.       - flink_network
  26. networks: #注意这里,要跟services配置项目对齐(即平级的意思)
  27.   flink_network:
  28.     driver: bridge
复制代码

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

  1. systemctl start docker
  2. docker-compose -f flink.yml up -d
  3. docker ps
复制代码
效果如下
  1. [root@node1 server]# systemctl start docker
  2. [root@node1 server]# docker-compose -f flink.yml up -d
  3. /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.
  4.   from cryptography.hazmat.backends import default_backend
  5. Creating network "server_flink_network" with driver "bridge"
  6. 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.
  7. Pulling jobmanager (flink:latest)...
  8. latest: Pulling from library/flink
  9. 6414378b6477: Pull complete
  10. 2c9f253e30bf: Pull complete
  11. 65c8233e39bf: Pull complete
  12. b59d22db63f3: Pull complete
  13. b80a9c727cee: Pull complete
  14. da3337ead35a: Pull complete
  15. 53e543b721f9: Pull complete
  16. ecebf073acfb: Pull complete
  17. 21be4ec89742: Pull complete
  18. f71629a01e27: Pull complete
  19. cc4f5f48c9f1: Pull complete
  20. Digest: sha256:2ec7f6d5591444334f63b66ddd49c7ae02551cb0a27c0988790fa43caa49716f
  21. Status: Downloaded newer image for flink:latest
  22. Creating jobmanager ... done
  23. 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.
  24. Creating server_taskmanager_1 ... done
  25. Creating server_taskmanager_2 ... done
  26. Creating server_taskmanager_3 ... done
  27. [root@node1 server]# docker ps
  28. CONTAINER ID   IMAGE          COMMAND                   CREATED         STATUS         PORTS                                                 NAMES
  29. 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
  30. 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
  31. 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
  32. e053c7560ee9   flink:latest   "/docker-entrypoint.…"   8 seconds ago   Up 6 seconds   6123/tcp, 0.0.0.0:8081->8081/tcp, :::8081->8081/tcp   jobmanager
  33. [root@node1 server]#
复制代码

乐成后在网页上面输入node1:8081进入这个网站(偶然间由于网络不好会进入不了这个网站) 



然后就ok了!
(3)关闭flink集群代码

  1. docker-compose -f flink.yml down
复制代码
效果如下 
  1. [root@node1 server]# docker-compose -f flink.yml down
  2. /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.
  3.   from cryptography.hazmat.backends import default_backend
  4. Stopping server_taskmanager_1 ... done
  5. Stopping server_taskmanager_2 ... done
  6. Stopping server_taskmanager_3 ... done
  7. Stopping jobmanager           ... done
  8. 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.
  9. Removing server_taskmanager_1 ... done
  10. Removing server_taskmanager_2 ... done
  11. Removing server_taskmanager_3 ... done
  12. Removing jobmanager           ... done
  13. Removing network server_flink_network
  14. [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`。

















免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

0 个回复

正序浏览

快速回复

您需要登录后才可以回帖 登录 or 立即注册

本版积分规则

怀念夏天

论坛元老
这个人很懒什么都没写!
快速回复 返回顶部 返回列表