当我们发出hdfs
put或copyfromlocal
命令时,它是否调用mapreduce
作业? 如果是,有多少映射器运行? 如果没有,传输如何完成?从本地目录复制到HDFS是否运行mapreduce作业?
我已阅读解析文件Hadoop-The权威指南但想获得更多见解。
当我们发出hdfs
put或copyfromlocal
命令时,它是否调用mapreduce
作业? 如果是,有多少映射器运行? 如果没有,传输如何完成?从本地目录复制到HDFS是否运行mapreduce作业?
我已阅读解析文件Hadoop-The权威指南但想获得更多见解。
当我们使用put和copyFromLocal命令时,使用mapreduce作业将本地文件复制到HDFS。在哪里它实际上使用Streaming由hadoop客户端二进制文件本身使用客户端库和队列。
将内容复制到HDFS时,hadoop/hdfs二进制命令利用DistributedFileSystem
类与名称节点进行交互,以验证并在名称空间中创建关于要复制的文件的条目。
然后,客户机使用DFSOutputStream
类将数据转换成数据包,并放置在内部data queue.
的DataStreamer
类会消耗队列内容。此外,DataStreamer
类与Namenode进行协商以分配数据节点的列表(包括复制),并且这些数据节点的列表形成data pipe line
。
DataStreamer
类只通过Streaming将数据包发送到数据管道中的第一个节点,并且完成时第一个节点级联到下一个节点,并继续相同的过程,直到流水线中的最后一个节点。
我建议你通过解剖一个文件写章从权威指南书。
在发布此问题之前,我已阅读权威指南中的文件解析。我想要了解的一件事是,将用于写入的地图数量与MR模式的地图数量相同,其中对于每个地图运行的分割或不同的范例。我无法从权威指南中获取信息。 –
复制任务不会由MR作业完成。它完全是一个流式作业,没有涉及映射器。它全部位于hadoop客户端和hdfs之间,其中所使用的模式仅为Streaming,不涉及映射器。如果有帮助请接受答案 – sureshsiva
'copyToLocal'会发生什么情况? – YoungHobbit