Docker, использующий пример flink socketwordcount [apache-flink] - PullRequest
0 голосов
/ 21 февраля 2019

Я хочу использовать Flink с помощью докера.Я хочу запустить экземпляр Socketwordcount в качестве запуска.Но на этом этапе я сталкиваюсь с ошибкой.Я не могу соединиться с сокетом.поэтому через 20 мс флинк завершает работу.

Docker-compose:

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, я вхожу в работающий менеджер заданий.

nc -l 6123

Я бегу. Затем я вхожу в контейнер менеджера вакансий с помощью другого терминала

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

Я следую инструкциям в документации Flink;Чего я хочу добиться - это подсчитать слова, отправленные с помощью nc, и записать результаты в файл .out.Но тут миг закрывается через 20 мс.Когда я просматриваю журналы с журналами Docker-compose, я вижу, что он закрыт, потому что не было установлено соединение.Я извиняюсь за мой плохой английский.Я не знаю, в чем проблема.Если вы хотите узнать больше о предмете, я могу опубликовать порядок моей работы визуально.

Ответы [ 2 ]

0 голосов
/ 21 февраля 2019

Вот как у меня это работает:

Сначала я запустил

nc -l 9999

в терминале на моем ноутбуке (не в контейнере).

А потом язапустил

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

в контейнере менеджера вакансий, где 192.168.1.109 - это IP-адрес моего ноутбука.

Наконец, я использовал

docker logs stuff_taskmanager_1

, чтобы увидеть выходные данные задания (где stuff_taskmanager_1 - имя контейнера, на котором запущен менеджер задач, определяемый с помощью docker ps).

0 голосов
/ 21 февраля 2019

Дело в том, что настоящая работа происходит в диспетчере задач.Jobmanager только координирует работу.При этом пытается установить соединение на узле диспетчера задач.Вы можете попытаться запустить

nc -l 6123

в диспетчере задач.

В качестве примера, пример с подключением через сокет не является лучшим для распределенной установки.

...