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:latestflink:<latest-flink>-scala_<latest-scala>
  • flink:1.5flink:1.5.y-scala_2.11
  • flink:1.5-hadoop27flink: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容器的便捷方式。

Github上提供了 安装作业集群 的配置文件示例

用法

  • 启动集群
    1. docker-compose up
  • 后台启动集群
    1. docker-compose up -d
  • 调整集群中为 N个 TaskManagers
    1. docker-compose scale taskmanager=<N>
  • 关闭集群
    1. docker-compose kill

Flink集群运行时,可以通过 http://localhost:8081来访问WEB UI,并通过UI来提交作业。

通过命令行将作业提交到Flink群集,必须将JAR复制到JobManager容器中并从那里提交作业。

例如:

  1. $ JOBMANAGER_CONTAINER=$(docker ps --filter name=jobmanager --format={{.ID}})
  2. $ docker cp path/to/jar "$JOBMANAGER_CONTAINER":/job.jar
  3. $ docker exec -t -i "$JOBMANAGER_CONTAINER" flink run /job.jar