docker-compose 部署flink集群

这篇具有很好参考价值的文章主要介绍了docker-compose 部署flink集群。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

  1. docker-compose常用命令

详见
https://blog.csdn.net/qq_42267173/article/details/124687804
https://blog.csdn.net/m0_72838865/article/details/126421685
https://www.cnblogs.com/cw2blog/p/16689584.html 容器启停相关的

# 前台启动
docker-compose up
# 后台启动
docker-compose up -d

logs
# docker-compose logs查看服务容器的输出日志。默认情况下,docker-compose将对不同的服务输出使用不同的颜色来区分。可以通过--no-color来关闭颜色。
# 输出日志,不同的服务输出使用不同的颜色来区分
docker-compose logs
# 跟踪日志输出
docker-compose logs -f
# 关闭颜色
docker-compose logs --no-color

run
docker-compose run在指定服务容器上执行一个命令。
docker-compose run nginx echo "helloworld" # 在工程中指定服务的容器上执行 echo "helloworld"

exec
docker-compose exec进入服务容器。
docker-compose exec nginx bash # 进入工程中指定服务的容器
docker-compose exec --index=1 nginx bash # 当一个服务拥有多个容器时,可通过 --index 参数进入到该服务下的任何容器

pause
docker-compose pause暂停服务容器
docker-compose pause # 暂停工程中所有服务的容器
docker-compose pause nginx # 暂停工程中指定服务的容器

unpause
docker-compose unpause恢复服务容器。
docker-compose unpause # 恢复工程中所有服务的容器
docker-compose unpause nginx # 恢复工程中指定服务的容器

restart
docker-compose restart重启服务容器。
docker-compose restart # 重启工程中所有服务的容器
docker-compose restart nginx # 重启工程中指定服务的容器

start
docker-compose start启动服务容器。
docker-compose start # 启动工程中所有服务的容器
docker-compose start nginx # 启动工程中指定服务的容器

stop
docker-compose stop停止服务容器。
docker-compose stop # 停止工程中所有服务的容器
docker-compose stop nginx # 停止工程中指定服务的容器


sudo docker-compose ps
sudo docker-compose stop jobmanager
sudo docker-compose stop taskmanager
sudo docker-compose rm -f jobmanager
sudo docker-compose rm -f taskmanager

sudo docker-compose exec jobmanager ./bin/sql-client.sh -f sql/flink_kafka1.sql
sudo docker-compose exec jobmanager ./bin/flink list
sudo docker logs -f -t --since="2023-05-08" --tail=200 flink_taskmanager_1
sudo docker-compose logs -f taskmanager

sudo docker-compose exec jobmanager bash
sudo docker-compose exec jobmanager ./bin/flink cancel 8d8cc94d73f7bd0c4cdc557264553a04

sudo docker-compose scale taskmanager=5
  1. 准备工作

sudo yum install docker
sudo yum install docker-compose
  1. 创建目录

mkdir flink
  1. vim docker-compose.yml

version: "2.1"
services:
  jobmanager:
    image: flink:1.14
    expose:
      - "6123"
    ports:
      - "8081:8081"
    command: jobmanager
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager
  taskmanager:
    image: flink:1.14
    expose:
      - "6121"
      - "6122"
    depends_on:
      - jobmanager
    command: taskmanager
    links:
      - "jobmanager:jobmanager"
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager
 
  1. 启动

启动报错

$ docker-compose up
ERROR: Couldn't connect to Docker daemon at http+docker://localunixsocket - is it running?

If it's at a non-standard location, specify the URL with the DOCKER_HOST environment variable.

解决参考:https://blog.csdn.net/xiojing825/article/details/79494408

# 加上sudo,这个会输出详细日志到窗口
flink]$ sudo docker-compose up
Creating network "flink_default" with the default driver
Pulling jobmanager (flink:1.14)...
1.14: Pulling from library/flink
301a8b74f71f: Pull complete
4688df200b56: Pull complete
317eff501ed4: Pull complete

docker-compose up -d 后台运行,不输出日志到窗口

  1. 启动多个taskmanager

# 启用5个taskmanager
docker-compose scale taskmanager=5 
  1. 浏览器观看

http://IP:8082

想web访问,但是只能访问localhost,本地ip都无法访问。
解决方法:https://blog.csdn.net/as350144/article/details/125654394

  1. 停止容器

flink]$ sudo docker-compose ps
       Name                      Command               State                              Ports
---------------------------------------------------------------------------------------------------------------------------
flink_jobmanager_1    /docker-entrypoint.sh jobm ...   Up      6123/tcp, 8081/tcp, 0.0.0.0:8082->8082/tcp,:::8082->8082/tcp
flink_taskmanager_1   /docker-entrypoint.sh task ...   Up      6121/tcp, 6122/tcp, 6123/tcp, 8081/tcp

看下yml配置文件的服务名字,jobmanager和taskmanager
[xx@sandbox-test flink]$ sudo docker-compose stop jobmanager
Stopping flink_jobmanager_1 ... done
[xx@sandbox-test flink]$ sudo docker-compose stop taskmanager
Stopping flink_taskmanager_1 ... done
  1. 完整的

# 启动flink
[xx@sandbox-test flink]$ sudo docker-compose up -d
Starting flink_jobmanager_1 ... done
Starting flink_taskmanager_1 ... done

# 查看容器
[xx@sandbox-test flink]$ sudo docker-compose ps
       Name                      Command               State                              Ports
---------------------------------------------------------------------------------------------------------------------------
flink_jobmanager_1    /docker-entrypoint.sh jobm ...   Up      6123/tcp, 8081/tcp, 0.0.0.0:8082->8082/tcp,:::8082->8082/tcp
flink_taskmanager_1   /docker-entrypoint.sh task ...   Up      6121/tcp, 6122/tcp, 6123/tcp, 8081/tcp

# 查看日志
[xx@sandbox-test flink]$ sudo docker-compose logs
或者 docker-compose logs -f taskmanager

# 扩展taskmanager
[xx@sandbox-test flink]$ sudo docker-compose scale taskmanager=5
WARNING: The scale command is deprecated. Use the up command with the --scale flag instead.
Starting flink_taskmanager_1 ... done
Creating flink_taskmanager_2 ... done
Creating flink_taskmanager_3 ... done
Creating flink_taskmanager_4 ... done
Creating flink_taskmanager_5 ... done
  1. 扩展(修改flink的conf)

如果要修改flink的conf呢?
参考:https://www.dandelioncloud.cn/article/details/1589983093958324225
https://www.clzg.cn/article/432005.html

flink下创建以下目录并将flink-conf.yaml拷贝到两个目录下
├── conf
│   ├── job
│   │   └── flink-conf.yaml
│   └── task
│       └── flink-conf.yaml

docker-compose.yml修改如下:主要是增加了volumes,表示使用本地的conf文件,不使用容器里面自带的conf。

version: "2.1"
services:
  jobmanager:
    image: flink:1.14
    expose:
      - "6123"
    ports:
      - "8082:8082"
    command: jobmanager
    volumes:
      - /home/disk1/xx/soft/flink/conf/job/flink-conf.yaml:/opt/flink/conf/flink-conf.yaml
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager
  taskmanager:
    image: flink:1.14
    expose:
      - "6121"
      - "6122"
    depends_on:
      - jobmanager
    command: taskmanager
    links:
      - "jobmanager:jobmanager"
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager
    volumes:
      - /home/disk1/xx/soft/flink/conf/task/flink-conf.yaml:/opt/flink/conf/flink-conf.yaml

flink-conf.yaml需要做一些修改,修改内容参考上面的链接。
就可以启动flink了。

sudo docker-compose up -d
sudo docker-compose scale taskmanager=5
  1. lib jar包

参考 (修改flink的conf)

  1. 执行sql 语句

flink sql执行参考:https://www.cnblogs.com/isuning/p/16214356.html
报错如下,解决参考:https://help.aliyun.com/document_detail/468412.html#section-jtg-wow-qey

sandbox-test flink]$ sudo docker-compose exec jobmanager ./bin/sql-client.sh -f flink_kafka1.sql


Exception in thread "main" org.apache.flink.table.client.SqlClientException: Unexpected exception. This is a bug. Please consider filing an issue.
	at org.apache.flink.table.client.SqlClient.startClient(SqlClient.java:201)
	at org.apache.flink.table.client.SqlClient.main(SqlClient.java:161)
Caused by: java.lang.NoSuchMethodError: org.apache.flink.table.catalog.FunctionCatalog.<init>(Lorg/apache/flink/configuration/ReadableConfig;Lorg/apache/flink/table/catalog/CatalogManager;Lorg/apache/flink/table/module/ModuleManager;)V
	at org.apache.flink.table.client.gateway.context.SessionContext.create(SessionContext.java:237)
	at org.apache.flink.table.client.gateway.local.LocalContextUtils.buildSessionContext(LocalContextUtils.java:87)
	at org.apache.flink.table.client.gateway.local.LocalExecutor.openSession(LocalExecutor.java:87)
	at org.apache.flink.table.client.SqlClient.start(SqlClient.java:88)
	at org.apache.flink.table.client.SqlClient.startClient(SqlClient.java:187)
	... 1 more

flink版本和jar包之间不兼容。
将flink版本改为1.16,重新启动docker

sudo docker-compose exec jobmanager ./bin/sql-client.sh embedded -f sql/flink_kafka2.sql报错如下

Flink SQL> [INFO] Submitting SQL update statement to the cluster...
WARNING: An illegal reflective access operation has occurred
WARNING: Illegal reflective access by org.apache.flink.api.java.ClosureCleaner (file:/opt/flink/lib/flink-dist-1.16.0.jar) to field java.lang.String.value
WARNING: Please consider reporting this to the maintainers of org.apache.flink.api.java.ClosureCleaner
WARNING: Use --illegal-access=warn to enable warnings of further illegal reflective access operations
WARNING: All illegal access operations will be denied in a future release

解决方法:https://blog.csdn.net/LIZHONGPING00/article/details/127947431
https://blog.csdn.net/qq_41538097/article/details/129113866

docker容器中安装包

0、首先更新源
# apt-get update
1、安装wget
# apt-get install wget
2、安装ping,ifconfig
# apt-get install inetutils-ping
# apt-get install net-tools
3、安装gcc
# apt-get install gcc
4、安装各种依赖包
# apt-get install zlib* bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel tcl-devel gdbm-devel db4-devel libpcap-devel xz-devel libffi-dev

详见https://www.cnblogs.com/aliensir/articles/15838834.html文章来源地址https://www.toymoban.com/news/detail-752959.html

到了这里,关于docker-compose 部署flink集群的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 如何通过docker-compose部署ES集群

    一、概述 Linux系统搭建ES集群的方式有很多种,其中通过docker-compose进行安装最为方便。 二、准备 1、配置虚拟机 1.1、设置IP 将虚拟机IP设置为192.168.1.100; 1.2、设置内存 将虚拟机内存设置为4G,内存太小可能导致某个ES节点无法正常运行; 1.3、修改limits.conf limits.conf文件可以

    2024年02月16日
    浏览(43)
  • 用docker-compose部署Rabbitmq三节点集群部署方案

    主机名 IP node1 10.4.2.10 node2 10.4.2.59 node3 10.4.2.134 (1) 在/root目录下先创建一个rabitmq目录用于存放文件 mkdir  rabitmq (2)修改主机名和域名解析hosts文件 (1)修改主机名 hostnamectl set-hostname  node1    hostnamectl set-hostname  node2 hostnamectl set-hostname  node3 node1  node2   node3 分别对应

    2024年02月04日
    浏览(47)
  • docker-compose部署hbase集群 —— 筑梦之路

    HBase  是一个开源的  NoSQL   列式分布式数据库 ,它主要基于  Hadoop  分布式文件系统(HDFS)运行。 HBase  最初是由  Facebook  公司贡献,其基于  Google 的  Bigtable  模型开发,在强大的水平扩展性和高可用性的基础上,提供了可以扩展垂直规模的存储。 HBase  主要特点如下

    2024年02月10日
    浏览(48)
  • docker-compose部署6.8.23版本elasticsearch+es-head+kibana多节点集群及部分排错处理

    现阶段很多elasticsearch部署都是7版本之上的,但部分要求是6.8版本,俩者很多配置参数存在差异问题,elasticsearch有状态服务,kubernetes和docker启动有点麻烦,最好用docker-compose启动,可以保证数据稳定。 节点信息 hosts信息 192.168.121.137 es-master 192.168.121.138 es-node1 master执行,node改

    2024年02月14日
    浏览(42)
  • 如何在Linux以docker-compose方式快速部署运行StackEdit,并实现公网访问

    StackEdit是一个受欢迎的Markdown编辑器,在GitHub上拥有20.7k Star!,它支持将Markdown笔记保存到多个仓库,包括Gitee、GitHub和Gitea。此在线笔记工具还提供了一些便捷功能,如拖拽或粘贴上传图片、文件搜索功能,以及可切换为炫酷的暗黑主题,这些功能特别适合那些喜欢使用Mar

    2024年02月05日
    浏览(52)
  • docker持久化部署vue前端nodejs后端项目-- 01. docker以及docker-compose在window以及linux的安装

    本章节主要来讲述docker desktop 界面版本使用以及docker-compose 的安装和使用 GIT地址:添加链接描述 docker 专栏:点击此处 章节 1 docker以及docker-compose在window以及linux的安装 2 项目对应的docker-compose结构 3 怎么将docker-compose项目部署到服务器上 4 配置服务器JENKINS环境 额外篇 章节

    2024年02月04日
    浏览(48)
  • 使用Docker-Compose搭建Redis集群

    3主+3从 由于仅用于测试,故我这里只用1台服务器进行模拟 redis列表 在server上创建一个目录用于存放redis集群部署文件。这里我放的路径为/root/redis-cluster 在/opt/docker/redis-cluster目录下创建redis-1,redis-2,redis-3,redis-4,redis-5,redis-6文件夹 注意:port值不能都为6379,根据上面redis列表设

    2024年02月15日
    浏览(39)
  • 【云原生】Docker-compose单机容器集群编排

    Compose是单机编排容器集群或者是分布式服务容器的应用工具。通过Compose,可以使用YAML文件来配置应用程序的服务。然后,使用一个命令,就可以从配置中创建并启动所有服务。 Docker-Compose是一个容器编排工具。通过一个.yml或.yaml文件,将所有的容器的部署方法、文件映射、

    2024年02月09日
    浏览(51)
  • 【docker】docker-compose安装带ui页面的kafka集群

    在日常的工作当中,kafka集群作为常用的中间件,其搭建过程略显繁琐,需要配置的文件颇多,为了方便各位初学者快速体验kafka的魅力,本文采取一键式安装kafka-3.3.1(不带zookeeper版本)的集群化安装。 仅需将下面配置中的10.0.0.147 改为自己本机的ip即可 执行 命令安装即可

    2024年02月14日
    浏览(47)
  • 通过 docker-compose 搭建高可用 nginx + keepalived 集群

    两台虚拟机 CentOS Linux release 7.9.2009 (Core) Docker version 23.0.1 Docker-compose version 1.25.0-rc4 Keepalived 是一种高性能的服务器高可用或热备解决方案, Keepalived 可以用来防止服务器单点故障的发生,通过配合 Nginx 可以实现 web 前端服务的高可用。 Keepalived 以 VRRP 协议为实现基础。 VRRP(

    2024年02月04日
    浏览(43)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包