Docker 是一个流行的运行时容器。 Docker Hub上有用于Apache Flink的Docker镜像,可用于部署Flink群集。Flink源还有用于部署作业集群的镜像。
Flink集群
Flink群集可用于运行多个作业。部署后,多个作业可逐个提交到集群。
Docker 镜像
Flink Docker repository 是Flink托管在 Docker Hub上的地址,提供了Flink1.2.1版本以上的镜像。
镜像支持Hadoop和scala的环境组合,为了方便通tag别名来区分。
从Flink 1.5版本以后, 镜像tags省略了Hadoop版本 (例如 -hadoop28
) 对应于不包含Hadoop发行版的Flink的无Hadoop版本。
举例,下面的别名可以使用: (1.5.y
表示Flink 1.5的最新版本)
flink:latest
→flink:<latest-flink>-scala_<latest-scala>
flink:1.5
→flink:1.5.y-scala_2.11
flink:1.5-hadoop27
→flink:1.5.y-hadoop27-scala_2.11
注意: Docker镜像是由个人方式提供的社区项目。不是Apache Flink PMC的正式版本。
Flink作业集群
Flink作业集群是运行单个作业的专用集群。这项是镜像内容的一部分,不需要额外的操作。
Docker 镜像
Flink作业集群镜像需要包含用户代码jar。因此,需要为每个作业单独构建镜像。 flink-container
模块包含了一个 build.sh
脚本,用于创建此类镜像,详情可参阅 instructions 。
Flink 和 Docker Compose
Docker Compose 是一种在本地运行一组Docker容器的便捷方式。
用法
- 启动集群
docker-compose up
- 后台启动集群
docker-compose up -d
- 调整集群中为 N个 TaskManagers
docker-compose scale taskmanager=<N>
- 关闭集群
docker-compose kill
Flink集群运行时,可以通过 http://localhost:8081来访问WEB UI,并通过UI来提交作业。
通过命令行将作业提交到Flink群集,必须将JAR复制到JobManager容器中并从那里提交作业。
例如:
$ JOBMANAGER_CONTAINER=$(docker ps --filter name=jobmanager --format={{.ID}})
$ docker cp path/to/jar "$JOBMANAGER_CONTAINER":/job.jar
$ docker exec -t -i "$JOBMANAGER_CONTAINER" flink run /job.jar