Я не могу дозвониться до сервера Hadoop из клиента Hadoop - PullRequest
0 голосов
/ 05 ноября 2018

Сервер Hadoop находится в Kubernetes. А клиент Hadoop находится во внешней сети. Поэтому я пытаюсь использовать сервер Hadoop, используя сервис kubernetes. Но hadoop fs -put не работает для клиента Hadoop. Как я знаю, наменод передает IP-адрес датоде клиенту Hadoop. Если да, откуда наменоде получает IP?

Ответы [ 2 ]

0 голосов
/ 05 ноября 2018

Вы можете проверить мой другой ответ . HDFS еще не готова к производству в K8s (на момент написания статьи)

Наменод сообщает клиенту IP-адреса данных и узнает их, когда они присоединяются к кластеру, как показано ниже:

datanodes

Проблема в K8s заключается в том, что вы должны выставлять каждый узел данных как сервис или внешний IP, но наменод видит датоды с их IP-адресами, которые недоступны для внешнего мира. Кроме того, HDFS не предоставляет публикуемый IP-адрес для каждой конфигурации , где вы можете принудительно использовать служебный IP-адрес, поэтому вам придется создавать необычные пользовательские сети, или ваш клиент должен находиться внутри podCidr ( Какой вид поражает назначение HDFS как распределенной файловой системы).

0 голосов
/ 05 ноября 2018

Если вам нужен IP-узел, на котором запущен модуль, можете использовать ENV:

apiVersion: v1
kind: Pod
metadata:
  name: get-host-ip
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "sh", "-c"]
      args:
      - while true; do
          printenv HOST_IP;
        done;
      env:
        - name: HOST_IP
          valueFrom:
            fieldRef:
              fieldPath: status.hostIP
  restartPolicy: Never

Документация API: PodStatus v1 core

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...