我想知道,getMerge命令如何在OS / HDFS级别工作。它会将每个字节/块从一个文件复制到另一个文件,还是只是简单的文件描述符更改?它的运营成本如何?
答案 0 :(得分:3)
<强> getmerge 强>
Usage: hadoop fs -getmerge <src> <localdst> [addnl]
将源目录和目标文件作为输入,并将src中的文件连接到目标本地文件。可选择将addnl设置为允许在每个文件的末尾添加换行符。
所以,回答你的问题,
是否会将每个字节/块从一个文件复制到另一个文件
是的,不。它将找到包含给定源目录中文件的每个HDFS块,并将它们连接在一起,形成本地文件系统上的单个文件。
简单的文件描述符更改
不确定你的意思。 getmerge
不会更改任何文件描述符;它只是将数据从HDFS读取到本地文件系统。
它的运作成本如何?
预计它与手动cat
- HDFS目录中的所有文件一样昂贵。
hadoop fs -getmerge /tmp/ /home/user/myfile
可以通过
来实现hadoop fs -cat /tmp/* > /home/user/myfile
昂贵的操作是获取许多文件指针并通过网络将这些记录传输到本地磁盘。