Docker设置
Docker是一个流行的容器运行时。Docker Hub上有用于Apache Flink的Docker镜像,可用于部署会话群集。Flink存储库还包含用于创建容器镜像以部署作业集群的工具。
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: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
脚本,可用于创建此类镜像。有关详细信息,请参阅说明。
Flink与Docker撰写
Docker Compose是一种在本地运行一组Docker容器的便捷方式。
用法
- 在前台启动集群
docker-compose up
- 在后台启动集群
docker-compose up -d
- 将群集向上或向下扩展到N TaskManagers
docker-compose scale taskmanager=<N>
- 杀死集群
docker-compose kill
群集运行时,您可以访问位于http://localhost:8081的Web UI 。您还可以使用Web UI将作业提交到会话群集。
要通过命令行将作业提交到会话群集,必须将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