我正在开发一个使用hdfs作为分布式文件存储的API。我已经制作了一个REST api,允许服务器使用Webhdfs在HDFS集群中创建mkdir,ls,创建和删除文件。但由于Webhdfs不支持下载文件,是否有任何解决方案可以实现此目的。我的意思是我有一台运行我的REST api并与集群通信的服务器。我知道OPEN操作只支持读取文本文件内容,但假设我有一个300 MB大小的文件,我该如何从hdfs集群下载它。你们有什么可能的解决方案吗?我正在考虑直接ping数据节点的文件,但这个解决方案是有缺陷的,好像文件大小为300 MB,它会给我的代理服务器带来巨大的负担,所以有一个流API来实现这一点。
答案 0 :(得分:2)
作为替代方案,您可以使用DataNode API提供的streamFile
。
wget http://$datanode:50075/streamFile/demofile.txt
它不会整体读取文件,因此负担会很低,恕我直言。我试过了,但是在伪设置上它运行正常。您可以尝试完全分布式设置,看看它是否有帮助。
答案 1 :(得分:0)
我想到的一种方法是使用代理工作程序,它使用hadoop文件系统API读取文件,并创建本地普通文件。并提供此文件的下载链接。缺点是