hadoop中的作业客户端如何计算输入拆分

hadoop中的作业客户端如何计算输入拆分,hadoop,mapreduce,Hadoop,Mapreduce,我试图了解map reduce体系结构。我正在查阅这篇文章。我对mapreduce框架的组件JobClient有一些问题。我的问题是: JObClient如何计算数据上的输入拆分 根据我正在咨询的内容,Job Client在运行作业时对指定的HDF上的输入路径中的数据计算输入拆分。文章说,然后作业客户端将资源(JAR和计算的输入拆分)复制到HDFS。现在我的问题是,当输入数据在HDFS中时,为什么jobClient会将计算出的InputSplit复制到HDFS中 让我们假设作业客户端将输入拆分复

我试图了解map reduce体系结构。我正在查阅这篇文章。我对mapreduce框架的组件JobClient有一些问题。我的问题是:

JObClient如何计算数据上的输入拆分

根据我正在咨询的内容,Job Client在运行作业时对指定的HDF上的输入路径中的数据计算输入拆分。文章说,然后作业客户端将资源(JAR和计算的输入拆分)复制到HDFS。现在我的问题是,当输入数据在HDFS中时,为什么jobClient会将计算出的InputSplit复制到HDFS中

让我们假设作业客户端将输入拆分复制到HDFS,现在当作业提交到作业跟踪器时,作业跟踪器将作业初始化为什么它从HDFS检索输入拆分


如果我的问题不清楚,我道歉。我是初学者

否JobClient不会将输入拆分复制到HDFS。你自己引用了你的答案:

作业客户端对位于输入路径中的数据计算输入拆分 在运行作业时指定的HDFS上。这篇文章说那是一份工作 客户端将资源(JAR和计算的输入拆分)复制到HDFS

输入本身依赖于集群。客户端仅计算从namenode获得的元信息(块大小、数据长度、块位置)。这些
计算的
输入分割将元信息携带到任务中,例如块偏移量和要计算的长度

查看一下
org.apache.hadoop.mapreduce.lib.input.FileSplit
,它包含文件路径、开始偏移量以及单个任务将作为其输入操作的块的长度。 您可能还想查看的可序列化类是:
org.apache.hadoop.mapreduce.split.jobspilt.SplitMetaInfo


将为将要运行的每个任务计算此元信息,并将其与JAR一起复制到实际执行此任务的节点。

输入拆分的计算取决于输入格式。对于典型的文本输入格式,计算拆分大小的通用公式为

  max(mapred.min.split.size, min(mapred.max.split.size, dfs.block.size))
或者默认情况下

输入拆分大小=mapred.min.split.size 其中
mapred.min.split.size=最小拆分大小
mapred.max.split.size-最大拆分大小
dfs.block.size=dfs块大小

对于DB输入格式,拆分大小为
(总记录/制图员人数)


如上所述,输入拆分的数量和大小是提供给映射器任务和记录读取器的元信息。

嗨,托马斯,这是非常有用的。向我推荐一些好的资源来详细研究hadoop的体系结构。我也从hadoop开始,有同样的问题。因此,不会复制输入分割块,只复制元数据?