Docker 部署#

Docker 是一个现在比较流行的 container runtime。在Docker Hub有 Apache Flink 的Docker镜像,可用于部署session。Flink的repo源上也有一个创建container镜像的工具,该镜像可以帮助部署集群作业。

Flink session 模式可以用来运行多个作业。部署后,每个作业都需要提交到集群中去。

Docker 镜像#

官方Docker repo 源 托管于 Docker Hub 上,用于提供Flink 1.2.1 或更高版本的镜像。

repo源上同样也存在 Hadoop 与 Scala 的组合镜像,为了查看方便都起了别名。

比如,可以使用以下别名:1.2.y表示最近发布的 Flink 1.2 版本)

  • flink:latestflink:<latest-flink>-hadoop<latest-hadoop>-scala_<latest-scala>
  • flink:1.2flink:1.2.y-hadoop27-scala_2.11
  • flink:1.2.1-scala_2.10flink:1.2.1-hadoop27-scala_2.10
  • flink:1.2-hadoop26flink:1.2.y-hadoop26-scala_2.11

注意: docker 镜像为个人发布到社区的镜像,非官方 Apache Flink PMC。

Flink job 模式是运行单个作业的专用模式。 Flink job 是镜像的一部分,因此,不需要额外再提交。

Docker 镜像#

Flink job 模式的镜像要包含启动集群作业的用户jar包。因此,需要为每个job构建专用的容器镜像。 flink-container 模块中有一个 build.sh 脚本,该脚本用于创建此镜像。查看更多信息请参阅 用户指南

Docker Compose 可以方便的在本地运行一组Docker容器。

GitHub 上提供了 session 模式job 模式 的可用配置文件。

用法#

  • 前台启动任务

      docker-compose up
  • 后台启动任务

      docker-compose up -d
  • 扩展任务的TaskManager数

      docker-compose scale taskmanager=<N>
  • Kill 任务

      docker-compose kill

任务运行后,可以通过http://localhost:8081访问 web UI。也可以通过 web UI 来把一个 job 提交 session 模式中。

如果要通过命令行来提交一个 session,则必须把 JAR 包拷贝到 JobManager container 上,然后在上面提交任务。

比如:

    $ 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