docker使用flink socketwordcount示例[apache flink]

k97glaaz  于 2021-06-21  发布在  Flink
关注(0)|答案(2)|浏览(357)

我想在 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组装之后,我进入正在运行的jobmanager。

nc -l 6123

我正在运行。然后在另一个终端的帮助下进入jobmanager容器

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

我遵循Flink文档中的说明;我想实现的是计算用nc发送的单词数,并将结果写入.out文件。但在这里,flink在20毫秒后关闭。当我用docker compose logs查看日志时,我看到它关闭了,因为没有建立连接。我很抱歉我的英语不好。我不知道是什么问题。如果你想知道更多关于这个主题,我可以把我的作品顺序直观地公布出来。

oxosxuxt

oxosxuxt1#

问题是实际工作发生在taskmanager上。jobmanager只负责协调工作。也就是说,尝试在taskmanager节点上建立连接。你可以试着跑

nc -l 6123

在taskmanager上。
作为提示,使用套接字连接的示例并不适合分布式设置。

2ekbmq32

2ekbmq322#

我是这样做的:
首先我跑了

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 ).

相关问题