从HDFS集群下载文件

时间:2013-06-24 04:42:45

标签: hadoop hdfs dfs

我正在开发一个使用hdfs作为分布式文件存储的API。我已经制作了一个REST api,允许服务器使用Webhdfs在HDFS集群中创建mkdir,ls,创建和删除文件。但由于Webhdfs不支持下载文件,是否有任何解决方案可以实现此目的。我的意思是我有一台运行我的REST api并与集群通信的服务器。我知道OPEN操作只支持读取文本文件内容,但假设我有一个300 MB大小的文件,我该如何从hdfs集群下载它。你们有什么可能的解决方案吗?我正在考虑直接ping数据节点的文件,但这个解决方案是有缺陷的,好像文件大小为300 MB,它会给我的代理服务器带来巨大的负担,所以有一个流API来实现这一点。

2 个答案:

答案 0 :(得分:2)

作为替代方案,您可以使用DataNode API提供的streamFile

wget http://$datanode:50075/streamFile/demofile.txt

它不会整体读取文件,因此负担会很低,恕我直言。我试过了,但是在伪设置上它运行正常。您可以尝试完全分布式设置,看看它是否有帮助。

答案 1 :(得分:0)

我想到的一种方法是使用代理工作程序,它使用hadoop文件系统API读取文件,并创建本地普通文件。并提供此文件的下载链接。缺点是

  1. 代理服务器的可扩展性
  2. 文件理论上可能太大而无法放入单个代理服务器的磁盘中。