Docker 使用 flink socketwordcount 示例 [apache-flink]

Docker using flink socketwordcount example [apache-flink]

我想在 docker 的帮助下使用 Flink。我想 运行 Socketwordcount 实例作为启动。但是在这个阶段我遇到了一个错误。我无法连接套接字。所以在 20 毫秒后,flink 完成工作。

Docker-撰写:

version: "3"
services:
  jobmanager:
    image: ${FLINK_DOCKER_IMAGE_NAME:-flink:1.3.2-hadoop24-scala_2.11-alpine}
    expose:
      - "6123"
    ports:
      - "8081:8081"
    command: jobmanager
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager

  taskmanager:
    image: ${FLINK_DOCKER_IMAGE_NAME:-flink:1.3.2-hadoop24-scala_2.11-alpine}
    expose:
      - "6121"
      - "6122"
      - "9000"
    depends_on:
      - jobmanager
    command: taskmanager
    links:
      - "jobmanager:jobmanager"
    environment:
      - JOB_MANAGER_RPC_ADDRESS=jobmanager

完成 docker-compose 后,我进入 运行ning jobmanager。

nc -l 6123

我是running.Then我在另一个终端的帮助下进入jobmanager容器

./bin/flink run examples/streaming/SocketWindowWordCount.jar -port 6123

我正在按照 Flink 文档中的说明进行操作; 我想要实现的是计算使用 nc 发送的单词并将结果写入 .out 文件。但是这里 flink 在 20 ms 后关闭。当我查看带有 Docker-compose 日志的日志时,我看到它已关闭,因为没有建立连接。我很抱歉我的英语不好。我不知道是什么问题。如果你想了解更多关于该主题的信息,我可以直观地发布我的工作顺序。

问题是实际工作发生在 taskmanager 上。 JobManager 只是协调工作。也就是说尝试在 taskmanager 节点上建立连接。您可以尝试 运行

nc -l 6123

在任务管理器上。

提示一下,使用 Socket 连接的示例不是分布式设置的最佳选择。

以下是我的工作方式:

首先我运行

nc -l 9999

在我笔记本电脑的终端中(不是在容器中)。

然后我运行

./bin/flink run examples/streaming/SocketWindowWordCount.jar --hostname 192.168.1.109 --port 9999

在 jobmanager 容器中,其中 192.168.1.109 是我笔记本电脑的 IP 地址。

最后,我用了

docker logs stuff_taskmanager_1

查看作业的输出(其中 stuff_taskmanager_1 是容器的名称 运行 taskmanager,使用 docker ps 确定)。