Jen*_*das 11 java hadoop docker rancher
我们对hadoop + yarn使用rancher模板,但似乎hadoop无法处理使用容器名称作为主机名(例如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
Run Code Online (Sandbox Code Playgroud)
我做错了还是有一些解决方法?
正如我所看到的那样,问题是由于使用容器名称作为主机名而rancher创建带下划线的容器.不知道如何修复它...
根据RFC 3986,下划线应该没有问题
2.3. 未保留字符
URI 中允许使用但不具有保留用途的字符称为非保留字符。其中包括大写和小写字母、十进制数字、连字符、句点、下划线和波形符。
未保留=字母/数字/“-”/“。” /“_”/“~”
进一步阅读,我们可以看到事情发生的原因的可能解释
然而,URI 比较实现并不总是在比较之前执行规范化
应该可以转义这些字符,含义hadoop_datanode_1
应该相当于hadoop%5Fdatanode%5F1
. 该文档明确指出不要以这种方式构建 URI,至少我是这么读的。
为了保持一致性,百分比编码的八位字节范围为 ALPHA(%41-%5A 和 %61-%7A)、DIGIT(%30-%39)、连字符(%2D)、句点(%2E)、下划线(% 5F ) 或波形符 (%7E)不应由 URI 生成者创建,并且当在 URI 中找到时,应由 URI 规范化器将其解码为相应的非保留字符。
归档时间: |
|
查看次数: |
622 次 |
最近记录: |