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