Удаленный доступ к HDFS на Kubernetes - PullRequest
0 голосов
/ 03 ноября 2018

Я пытаюсь настроить HDFS на мини-кубе (на данный момент), а затем на кластере DEV kubernetes, чтобы я мог использовать его со Spark. Я хочу, чтобы Spark запускался локально на моей машине, чтобы я мог работать в режиме отладки во время разработки, чтобы у него был доступ к моей HDFS на K8s.

Я уже настроил 1 развертывание namenode и набор состояний с датоданом данных (3 реплики), и они отлично работают, когда я использую HDFS из кластера. Я использую безголовый сервис для datanodes и кластерный ip-сервис для namenode.

Проблема начинается, когда я пытаюсь выставить hdfs. Я думал об использовании входа для этого, но он только открывает порт 80 за пределами кластера и отображает пути к различным службам внутри кластера, что не то, что я ищу. Насколько я понимаю, мои локальные рабочие задания (или клиент hdfs) общаются с namenode, который отвечает адресом для каждого блока данных. Этот адрес, однако, похож на 172.17.0.x:50010 и, конечно, мой локальный компьютер не видит их.

Есть ли способ заставить эту работу работать? Заранее спасибо!

1 Ответ

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

Я знаю, что этот вопрос касается только того, чтобы заставить его работать в среде разработчика, но HDFS в значительной степени находится в стадии разработки на K8s, поэтому я ни в коем случае не запустил бы его в производство (на момент написания этой статьи). Довольно сложно заставить его работать в системе оркестровки контейнеров, потому что:

  1. Вы говорите о большом количестве данных и множестве узлов (namenodes / datanodes), которые не предназначены для запуска / остановки в разных местах вашего кластера.
  2. У вас есть риск наличия постоянно несбалансированного кластера, если вы не прикрепляете свои наменоды / датододы к узлу K8s (что лишает вас цели иметь систему оркестровки контейнера)
  3. Если вы запускаете ваши наменоды в режиме HA, и по какой-либо причине ваши наменоды умирают и перезапускаются, вы рискуете повредить метаданные наменоде, что приведет к потере всех ваших данных. Также рискованно, если у вас есть один узел, и вы не прикрепляете его к узлу K8s.
  4. Вы не можете легко увеличивать и уменьшать масштаб, не работая в несбалансированном кластере. Запуск несбалансированного кластера побеждает одну из основных целей HDFS.

Если вы посмотрите на DC / OS , они смогли заставить его работать на своей платформе, так что это может дать вам некоторое руководство.

В K8s вам в основном нужно создавать сервисы для всех ваших портов namenode и всех ваших портов данных. Ваш клиент должен быть в состоянии найти все наменоды и датододы, чтобы он мог читать / записывать их. Кроме того, некоторые порты не могут проходить через вход, потому что они являются портами уровня 4 (TCP), например, порт IPC 8020 в namenode и 50020 в datanodes.

Надеюсь, это поможет!

...