Docker设置

Docker是一个流行的容器运行时。Docker Hub上有用于Apache Flink的Docker镜像,可用于部署会话群集。Flink存储库还包含用于创建容器镜像以部署作业集群的工具。

Flink会话群集可用于运行多个作业。部署后,每个作业都需要提交到集群。

Docker镜像

Flink Docker镜像库托管在 Docker镜像 Hub和提供Flink1.2.1版和更高的镜像。

可以使用Hadoop和Scala的每个受支持组合的镜像,并且为方便起见提供了标记别名。

从Flink 1.5开始,省略Hadoop版本的镜像标签(例如-hadoop28)对应于不包含捆绑的Hadoop发行版的Flink的无Hadoop版本。

例如,下面的别名可以使用:1.5.y表示Flink1.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作业集群是运行单个作业的专用集群。这项工作是镜像的一部分,因此,不需要额外的工作提交。

Docker镜像

Flink作业集群映像需要包含启动集群的作业的用户代码jar。因此,需要为每个作业构建专用的容器镜像。flink-container模块包含一个build.sh脚本,可用于创建此类镜像。有关详细信息,请参阅说明

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

群集运行时,您可以访问位于http://localhost:8081的Web UI 您还可以使用Web UI将作业提交到会话群集。

要通过命令行将作业提交到会话群集,必须将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