从HDFS传输文件

dip*_*ech 16 hadoop data-transfer hdfs

我想将文件从HDFS传输到不在hadoop集群但在网络中的不同服务器的本地文件系统.

我本可以做到的:

hadoop fs -copyToLocal <src> <dest>
and then scp/ftp <toMyFileServer>.
Run Code Online (Sandbox Code Playgroud)

由于数据量巨大且由于hadoop网关机器的本地文件系统空间有限,我想避免这种情况并将数据直接发送到我的文件服务器.

请帮助解决有关如何处理此问题的一些指示.

cab*_*bad 12

这是最简单的方法:

ssh <YOUR_HADOOP_GATEWAY> "hdfs dfs -cat <src_in_HDFS> " > <local_dst>
Run Code Online (Sandbox Code Playgroud)

它也适用于二进制文件.


Dan*_*SFT 4

因此,您可能有一个包含一堆部分的文件作为 hadoop 程序的输出。

part-r-00000
part-r-00001
part-r-00002
part-r-00003
part-r-00004
Run Code Online (Sandbox Code Playgroud)

那么让我们一次只做一部分吗?

for i in `seq 0 4`;
do
hadoop fs -copyToLocal output/part-r-0000$i ./
scp ./part-r-0000$i you@somewhere:/home/you/
rm ./part-r-0000$i
done
Run Code Online (Sandbox Code Playgroud)

您可能需要查找 scp 的密码修饰符