2015-08-27 122 views

回答

4

当我们使用put和copyFromLocal命令时,使用mapreduce作业将本地文件复制到HDFS。在哪里它实际上使用Streaming由hadoop客户端二进制文件本身使用客户端库和队列。

将内容复制到HDFS时,hadoop/hdfs二进制命令利用DistributedFileSystem类与名称节点进行交互,以验证并在名称空间中创建关于要复制的文件的条目。

然后,客户机使用DFSOutputStream类将数据转换成数据包,并放置在内部data queue.

DataStreamer类会消耗队列内容。此外,DataStreamer类与Namenode进行协商以分配数据节点的列表(包括复制),并且这些数据节点的列表形成data pipe line

DataStreamer类只通过Streaming将数据包发送到数据管道中的第一个节点,并且完成时第一个节点级联到下一个节点,并继续相同的过程,直到流水线中的最后一个节点。

我建议你通过解剖一个文件写章从权威指南书。

+0

在发布此问题之前,我已阅读权威指南中的文件解析。我想要了解的一件事是,将用于写入的地图数量与MR模式的地图数量相同,其中对于每个地图运行的分割或不同的范例。我无法从权威指南中获取信息。 –

+0

复制任务不会由MR作业完成。它完全是一个流式作业,没有涉及映射器。它全部位于hadoop客户端和hdfs之间,其中所使用的模式仅为Streaming,不涉及映射器。如果有帮助请接受答案 – sureshsiva

+0

'copyToLocal'会发生什么情况? – YoungHobbit

相关问题