Шаблон 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.