描述如何连接到kerberos安全端点的文档显示以下内容:
curl -i --negotiate -u : "http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=..."
Run Code Online (Sandbox Code Playgroud)
-u必须提供该标志,但curl会忽略该标志.
该--negotiate选项是否导致curl查找事先使用该kinit命令创建的keytab ,或者是否会卷曲提示输入凭据?
如果它查找keytab文件,该命令将查找哪个文件名?
是什么之间的区别WebHDFS REST API和HttpFS?
如果我理解正确:
我对么?
什么时候建议使用一个而不是另一个?
有没有什么方法可以使用WebHDFS REST API从HDFS下载文件?我最接近的是使用open操作来读取文件并保存内容.
curl -i -L "http://localhost:50075/webhdfs/v1/demofile.txt?op=OPEN" -o ~/demofile.txt
Run Code Online (Sandbox Code Playgroud)
是否有任何API可以让我直接下载文件而无需打开它?我浏览了官方文档并尝试了谷歌,但找不到任何东西.有人能指出我正确的方向还是给我一些指示?
非常感谢你宝贵的时间.
我正在使用webhdfs在hadoop hdfs中加载28 GB文件,加载大约需要25分钟.
我尝试使用hdfs put加载相同的文件,花了大约6分钟.为什么性能差异如此之大?
建议使用什么?有人可以解释或指导我一些良好的链接,这将是非常有帮助的.
在我们下面是我正在使用的命令
curl -i --negotiate -u: -X PUT "http://$hostname:$port/webhdfs/v1/$destination_file_location/$source_filename.temp?op=CREATE&overwrite=true"
Run Code Online (Sandbox Code Playgroud)
这将重定向到我在下一步用于写入数据的datanode地址.
"资源管理器"和"hdfs名称节点"是否始终安装在同一主机上?
1)当我想发送一个http请求(YARN REST API)来获取新的应用程序ID时,我正在使用这个web uri:
http://<rm http address:port>/ws/v1/cluster/apps/new-application
Run Code Online (Sandbox Code Playgroud)
这个端口是Resource-Manager Web UI http端口,它的默认值是8088,如img1:img1的源码所示
2)当我想为hdfs命令发送http请求(WebHDFS REST API)时,例如为了获取文件状态我正在使用这个web uri:
http://<HOST>:<PORT>/webhdfs/v1/<PATH>?op=GETFILESTATUS
Run Code Online (Sandbox Code Playgroud)
这<PORT>是NameNode WebUI http端口,它的默认值是50070,如img2:img2的源码所示

这些组件的主机(ResourceManager和NaneNode)是否始终安装在同一主机上?
任何帮助将不胜感激,谢谢!
我有一个nodejs应用程序,我想将数据写入hadoop HDFS文件系统.我见过两个可以做到的主要nodejs库:node-hdfs和node-webhdfs.有人尝试过吗?任何提示?我应该在生产中使用哪一个?
我倾向于使用node-webhdfs,因为它使用WebHDFS REST API.node-hdfs似乎是一个c ++绑定.
任何帮助将不胜感激.
任何人都可以告诉我,如果我使用Java应用程序请求使用Namenode HA设置对HDFS进行一些文件上传/下载操作,请求首先在哪里?我的意思是客户端如何知道哪个namenode是活动的?
如果您提供一些工作流程类型图或详细解释请求步骤(从头到尾),那将会很棒.
我需要将大文件(至少14MB)从FIWARE Lab的Cosmos实例传输到我的后端.
我使用Spring RestTemplate作为此处描述的Hadoop WebHDFS REST API的客户端接口,但我遇到了IO异常:
Exception in thread "main" org.springframework.web.client.ResourceAccessException: I/O error on GET request for "http://cosmos.lab.fiware.org:14000/webhdfs/v1/user/<user.name>/<path>?op=open&user.name=<user.name>":Truncated chunk ( expected size: 14744230; actual size: 11285103); nested exception is org.apache.http.TruncatedChunkException: Truncated chunk ( expected size: 14744230; actual size: 11285103)
at org.springframework.web.client.RestTemplate.doExecute(RestTemplate.java:580)
at org.springframework.web.client.RestTemplate.execute(RestTemplate.java:545)
at org.springframework.web.client.RestTemplate.exchange(RestTemplate.java:466)
Run Code Online (Sandbox Code Playgroud)
这是生成异常的实际代码:
RestTemplate restTemplate = new RestTemplate();
restTemplate.setRequestFactory(new HttpComponentsClientHttpRequestFactory());
restTemplate.getMessageConverters().add(new ByteArrayHttpMessageConverter());
HttpEntity<?> entity = new HttpEntity<>(headers);
UriComponentsBuilder builder =
UriComponentsBuilder.fromHttpUrl(hdfs_path)
.queryParam("op", "OPEN")
.queryParam("user.name", user_name);
ResponseEntity<byte[]> response =
restTemplate
.exchange(builder.build().encode().toUri(), HttpMethod.GET, entity, byte[].class);
FileOutputStream …Run Code Online (Sandbox Code Playgroud) 我试图HDFS从Internet Explorer 浏览我的系统但由于某种原因它总是使用NTLM而不是Kerberos,所以我收到消息
GSSException:检测到有缺陷的令牌(机制级别:GSSHeader找不到正确的标签)
如果我从Firefox浏览(设置属性后network.auth.use-sspi=false和network.negotiate-auth.trusted-uris=https://pd-vrt-21488)一切工作正常.
在IE我添加https://pd-vrt-21488:50470到本地Intranet站点列表并启用" Integrated Windows Authentication".
通过使用Fiddler查看请求,我看到Firefox使用Kerberos和IE使用之间的区别NTLM.Firefox标题:
Authorization: Negotiate YIICyAYGKwYB .....much more character.....V2HbPG57vXnQ7Vm7ba7MTJ7qzJ7zA7+1foY=
Run Code Online (Sandbox Code Playgroud)
IE标题:
Authorization: Negotiate TlRMTVNTUAABAAAAl4II4gAAAAAAAAAAAAAAAAAAAAAGAbEdAAAADw==
Run Code Online (Sandbox Code Playgroud)
有什么想法有什么不对吗?
我正在尝试连接到受 Kerberos 身份验证保护的 HDFS。我有以下详细信息,但不知道如何继续。
User
Password
Realm
HttpFs Url
Run Code Online (Sandbox Code Playgroud)
我尝试了以下代码,但出现身份验证错误:
from hdfs.ext.kerberos import KerberosClient
import requests
import logging
logging.basicConfig(level=logging.DEBUG)
session = requests.Session()
session.verify = False
client = KerberosClient(url='http://x.x.x.x:abcd', session=session,
mutual_auth='REQUIRED',principal='abcdef@LMNOPQ')
print(client.list('/'))
Run Code Online (Sandbox Code Playgroud)
错误
INFO:hdfs.client:Instantiated
<KerberosClient(url=http://x.x.x.x:abcd)>.
INFO:hdfs.client:Listing '/'.
DEBUG:hdfs.client:Resolved path '/' to '/'.
DEBUG:hdfs.client:Resolved path '/' to '/'.
DEBUG:urllib3.connectionpool:Starting new HTTP connection (1):
DEBUG:urllib3.connectionpool:http://x.x.x.x:abcd "GET /webhdfs/v1/?
op=LISTSTATUS HTTP/1.1" 401 997
DEBUG:requests_kerberos.kerberos_:handle_401(): Handling: 401
ERROR:requests_kerberos.kerberos_:generate_request_header(): authGSSClientInit() failed:
Traceback (most recent call last):
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/requests_kerberos/kerberos_.py", line 213, in generate_request_header
gssflags=gssflags, principal=self.principal)
kerberos.GSSError: ((' No …Run Code Online (Sandbox Code Playgroud) webhdfs ×10
hadoop ×8
hdfs ×5
kerberos ×3
apache ×1
curl ×1
fiware ×1
hadoop-yarn ×1
hadoop2 ×1
httpclient ×1
keytab ×1
node.js ×1
ntlm ×1
python-3.x ×1
rest ×1