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)
它也适用于二进制文件.
因此,您可能有一个包含一堆部分的文件作为 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 的密码修饰符