从hdfs集群下载一个文件

aij0ehis  于 2021-06-04  发布在  Hadoop
关注(0)|答案(2)|浏览(448)

我正在开发一个将hdfs用作分布式文件存储的api。我制作了一个restapi,允许服务器使用webhdfs在hdfs集群中mkdir、ls、创建和删除文件。但是由于webhdfs不支持下载文件,有没有解决方案来实现这一点呢。我的意思是我有一个运行restapi并与集群通信的服务器。我知道open操作只支持读取文本文件内容,但是假设我有一个300mb大小的文件,如何从hdfs集群下载它。你们有什么解决办法吗。?我想直接ping datanodes来获取一个文件,但是这个解决方案是有缺陷的,因为如果文件的大小是300mb,它会给我的代理服务器带来巨大的负载,所以有流式api来实现这一点。

hlswsv35

hlswsv351#

你可以利用 streamFile 由datanode api提供。

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

它不会读取整个文件,所以负担会很低,imho。我已经试过了,但在一个伪设置和它的作品很好。您可以在完全分布式的设置上尝试一下,看看是否有帮助。

s4chpxco

s4chpxco2#

我想到的一种方法是使用代理工作程序,它使用hadoop文件系统api读取文件,并创建一个本地普通文件,并提供该文件的下载链接。缺点是
代理服务器的可扩展性
理论上,文件可能太大,无法放入单个代理服务器的磁盘中。

相关问题