Шаблон Rancher - Hadoop Недопустимый символ в имени хоста

Мы используем шаблон rancher для хаоса + пряжи, но кажется, что hasoop не может иметь дело с использованием имен контейнеров в качестве имен хостов (например, hadoop_namenode-primary_1).

Caused by: java.net.URISyntaxException: Illegal character in hostname at index 13: http://hadoop_datanode_1:50075/webhdfs/v1/skystore/tmp/devtest_onedir/2016_08_19_02_35_35_32f7/header.json?op=CREATE&user.name=hdfs&namenoderpcaddress=10.42.14.252:8020&overwrite=true

Я делаю это неправильно или есть какое-то обходное решение?

Как я вижу, проблема вызвана, но использование имен контейнеров в качестве имен хостов, в то время как ранчо создает контейнеры с символами подчеркивания. Не знаю, как это исправить, хотя...

Ответ 1

Oracle bug-database заявляет, что: Underscore не является допустимым символом в имени хоста в соответствии с RFC 2396, RFC 952 и RFC 1123. Пожалуйста, обратитесь к этой ссылке ниже:

http://bugs.java.com/bugdatabase/view_bug.do?bug_id=5049974

Лучшей идеей может быть замена подчеркивания на hypen в имени хоста.

Обновление 1:

hasoop не может иметь дело с использованием имен контейнеров в качестве имен хостов

Это не так. Речь идет о символе подчеркивания в имени хоста.

Обновление 2:

Мы не знаем, как заставить ранчо сделать это, хотя

Вы не должны действовать в этом направлении. Причина в том, что другие приложения могут выкинуть одно и то же исключение, что опять-таки проблема. Лучший выбор - изменить имя хоста.

Ответ 2

В подчеркиваниях не должно быть ничего плохого в соответствии с RFC 3986

2.3. Незарезервированные символы

Символы, которые разрешены в URI, но не имеют зарезервированных    цели называются безоговорочными. К ним относятся прописные и строчные буквы    буквы, десятичные цифры, дефис, период, подчеркивание и тильда.

unreserved = ALPHA/DIGIT/ "-" / "." / "_" / "~"

Читая немного дальше, мы видим возможное объяснение того, почему вещи ломаются

Однако реализации сравнения URI не всегда выполняют нормализацию до сравнения

Должно быть возможно избежать этих символов, а значение hadoop_datanode_1 должно быть эквивалентно hadoop%5Fdatanode%5F1. В документации явно говорится, что не нужно создавать ваши URI таким образом, по крайней мере, так я читал.

Для согласованности процентные кодированные октеты в диапазонах ALPHA (% 41-% 5A и% 61-% 7A), DIGIT (% 30-% 39), дефис (% 2D), период (% 2E), подчеркивание (% 5F) или тильда (% 7E) не должны создаваться производителями URI и, если они найдены в URI, должны быть декодированы до соответствующих им незарезервированных символов Нормализаторы URI.