Hadoop InputSplit、RecordReader和;地图安装和制图器

Hadoop InputSplit、RecordReader和;地图安装和制图器,hadoop,mapreduce,Hadoop,Mapreduce,如果我有一个1000行的数据文件。。我在我的map方法中使用TextInputFormat进行字数计算程序。因此,数据文件中的每一行都将被视为一个split RecordReader将把每一行(或拆分)作为(键、值)对馈送到map()方法 根据我的理解。。对于每一行或记录,应执行1000次map()方法 表示将运行多少个mapper?? 对不起,我弄糊涂了map()方法只是mapper right的一个实例。。那么每个映射器任务有多少个映射实例是基于什么来决定的呢 注意:当我为1000行数据执行

如果我有一个1000行的数据文件。。我在我的
map
方法中使用
TextInputFormat
进行字数计算程序。因此,数据文件中的每一行都将被视为一个
split

RecordReader将把每一行(
或拆分
)作为
(键、值)
对馈送到
map()
方法

根据我的理解。。对于每一行或记录,应执行1000次
map()
方法

表示将运行多少个
mapper
?? 对不起,我弄糊涂了
map()
方法只是mapper right的一个实例。。那么每个映射器任务有多少个映射实例是基于什么来决定的呢

注意:当我为1000行数据执行
wordcountmapreduce
程序时。。我认为
制图者的数量为2人。因此,为每个
map任务运行500个
map
实例???


如果我问错了,请更正我的问题。

首先,它取决于hdfs块的大小。
程序调用wrt的映射程序数和映射程序代码运行的次数不同


对于您的代码,单个映射器实例的运行次数与行数相同,因为输入格式为textinput format。但映射器的运行次数完全取决于块大小

首先,它取决于hdfs块的大小。
程序调用wrt的映射程序数和映射程序代码运行的次数不同


对于您的代码,单个映射器实例的运行次数与行数相同,因为输入格式为textinput format。但映射器的运行次数完全取决于块大小

地图绘制者如何分配

映射器的数量由映射/Reduce作业中使用的
InputFormat
确定的拆分数量决定。在典型的
输入格式中,它与文件数量和文件大小成正比

假设您的HDFS块配置配置为64MB(默认大小),并且您有一个大小为100MB的文件,那么它将占用2个块,然后根据这些块分配2个映射器

假设您有两个大小为30MB的文件(每个文件),那么每个文件将占用一个块,映射器将基于此进行分配

假设您有一个60MB的文件,那么它将占用1个块,但如果您在代码中指定了输入分割大小,比如分割大小为30MB,那么将为此作业分配2个映射器

-记录读取器将数据分成键/值对,以输入映射器。它接受以下参数:

拆分-定义要读取的记录范围的拆分

-获取拆分的大小,以便可以按大小对输入拆分进行排序

如果您没有指定任何
InputSplit
大小,那么它将把整个块作为一个分割,并将读取数据并为映射器生成键、值对

在您的案例中,指定了2个映射器。它表示您已指定
InputSplit
大小,或者您的数据位于2块中


这有助于理解记录读取器和输入拆分。

映射器是如何分配的

映射器的数量由映射/Reduce作业中使用的
InputFormat
确定的拆分数量决定。在典型的
输入格式中,它与文件数量和文件大小成正比

假设您的HDFS块配置配置为64MB(默认大小),并且您有一个大小为100MB的文件,那么它将占用2个块,然后根据这些块分配2个映射器

假设您有两个大小为30MB的文件(每个文件),那么每个文件将占用一个块,映射器将基于此进行分配

假设您有一个60MB的文件,那么它将占用1个块,但如果您在代码中指定了输入分割大小,比如分割大小为30MB,那么将为此作业分配2个映射器

-记录读取器将数据分成键/值对,以输入映射器。它接受以下参数:

拆分-定义要读取的记录范围的拆分

-获取拆分的大小,以便可以按大小对输入拆分进行排序

如果您没有指定任何
InputSplit
大小,那么它将把整个块作为一个分割,并将读取数据并为映射器生成键、值对

在您的案例中,指定了2个映射器。它表示您已指定
InputSplit
大小,或者您的数据位于2块中


这有助于理解记录读取器和输入拆分。

数据的大小是多少?HDFS块大小是多少?您是否在代码中指定了任何输入拆分?数据大小为2.08 kb HDFS块大小为默认值(64 MB)。我的代码中没有任何特定的输入拆分。数据大小是多少?HDFS块大小是多少?您是否在代码中指定了任何输入拆分?数据大小为2.08 kb HDFS块大小为默认值(64 MB)。我的代码中没有任何特定的输入拆分。数据大小是多少?HDFS块大小是多少?您是否在代码中指定了任何输入拆分?数据大小为2.08 kb HDFS块大小为默认值(64 MB)。我的代码中没有任何特定的输入拆分。因此,映射任务数和映射实例数之间存在差异。。???映射实例基于行(对于TextInputFormat),映射者的数量基于InputSplit大小。因此,映射任务的数量和映射实例的数量之间存在差异。。???映射实例基于行(对于TextInputFormat),映射者的数量基于InputSplit大小。因此,映射任务的数量和映射实例的数量之间存在差异。。???映射实例基于行(对于TextInputFormat),映射者的数量基于行