hadoop-如何确定总映射器

hadoop-如何确定总映射器,hadoop,hadoop-partitioning,Hadoop,Hadoop Partitioning,我是hadoop新手,刚刚安装了oracle的virtualbox和hortonworks的沙箱。然后,我下载了最新版本的hadoop,并将jar文件导入到我的java程序中。我复制了一个示例wordcount程序并创建了一个新的jar文件。我使用沙盒将这个jar文件作为作业运行。wordcount工作得非常好,正如预期的那样。但是,在“我的工作状态”页面中,我看到输入文件的映射者数量被确定为28。在我的输入文件中,我有下面一行 拉梅什正在XXXXXXXXXX XX XXXXXXXXX学习 如何

我是hadoop新手,刚刚安装了oracle的virtualbox和hortonworks的沙箱。然后,我下载了最新版本的hadoop,并将jar文件导入到我的java程序中。我复制了一个示例wordcount程序并创建了一个新的jar文件。我使用沙盒将这个jar文件作为作业运行。wordcount工作得非常好,正如预期的那样。但是,在“我的工作状态”页面中,我看到输入文件的映射者数量被确定为28。在我的输入文件中,我有下面一行

拉梅什正在XXXXXXXXXX XX XXXXXXXXX学习

如何确定地图绘制者总数为28人

我在我的wordcount.java程序中添加了下面的行以进行检查

FileInputFormat.setMaxInputSplitSize(job, 2);
另外,我想知道输入文件是否只能包含2行。(即)假设我有一个输入文件,如下所示

第1行、第2行、第3行、第4行、第5行、第6行……第20行


我应该把输入文件分成20个不同的文件,每个文件只有2行吗

这意味着您的输入文件在HDFS中被分为大约28个部分(块),因为您说过已经安排了28个映射任务,但不一定是总共28个并行映射任务。并行性将取决于集群中的插槽数量。我说的是ApacheHadoop。我不知道霍顿工厂是否对此做了任何修改


Hadoop喜欢处理大文件,所以,您想将输入文件拆分为20个不同的文件吗?

这意味着您的输入文件在HDFS中被拆分为大约28个部分(块),因为您说过计划了28个映射任务,但不一定是总共28个并行映射任务。并行性将取决于集群中的插槽数量。我说的是ApacheHadoop。我不知道霍顿工厂是否对此做了任何修改


Hadoop喜欢处理大文件,因此,是否要将输入文件拆分为20个不同的文件?

HDFS块和MapReduce拆分是两种不同的方式。块是数据的物理分割,而分割只是MR作业期间进行的逻辑分割。
InputFormat
负责根据给定的数据集创建分割,并根据分割的数量确定映射器的数量。当您使用
setMaxInputSplitSize
时,您将否决此行为并给出自己的拆分大小。但是给setMaxInputSplitSize一个很小的值将是一个过度的杀伤力,因为会有很多很小的分割,并且最终会有很多不必要的映射任务

实际上,我不认为您需要使用
FileInputFormat.setMaxInputSplitSize(作业,2)在您的WC程序中。另外,您似乎弄错了这里的
2
。它不是文件中的行数。这是您希望在MR工作中使用的拆分大小,单位为
long
。文件中可以有任意数量的行,您将使用这些行作为MR输入


这听起来可以吗?

HDFS块和MapReduce分割是两种不同的东西。块是数据的物理分割,而分割只是MR作业期间进行的逻辑分割。
InputFormat
负责根据给定的数据集创建分割,并根据分割的数量确定映射器的数量。当您使用
setMaxInputSplitSize
时,您将否决此行为并给出自己的拆分大小。但是给setMaxInputSplitSize一个很小的值将是一个过度的杀伤力,因为会有很多很小的分割,并且最终会有很多不必要的映射任务

实际上,我不认为您需要使用
FileInputFormat.setMaxInputSplitSize(作业,2)在您的WC程序中。另外,您似乎弄错了这里的
2
。它不是文件中的行数。这是您希望在MR工作中使用的拆分大小,单位为
long
。文件中可以有任意数量的行,您将使用这些行作为MR输入


这听起来可以吗?

我已经理解了hadoop的基本概念(即文件将成对处理)。如果我的文件有20行呢?映射将如何进行?会不会像然后那样?如果是这样的话,我应该只向文件提供两行吗?如果文件中有20行,如何实现for映射?这取决于您选择的InputFormat。默认情况下,使用TextFileInputFormat,您将在map()中有一个字节偏移量作为键,一行作为值。在不同的地图绘制程序中,它将类似于以下内容:。。。而且,我认为,一个仅仅20行的文件不需要分成几个文件。我有一个气象数据,它有很多细节,比如站点名称、年份、温度等(实际上有20行)。如果我想找到特定电台的平均温度,我的输出将是。要实现这一点,我应该如何映射?我无法理解这一点。那么,你是说如果你把所有的20行都考虑在一起,你的数据分析会有意义吗?您在输入文件中有几个重要字段,如station name、avg_tmp、year、blah1、blah2,这些字段在不同的行之间分开?我已经理解了hadoop的基本概念(即,文件将成对处理)。如果我的文件有20行呢?映射将如何进行?会不会像然后那样?如果是这样的话,我应该只向文件提供两行吗?如果文件中有20行,如何实现for映射?这取决于您选择的InputFormat。默认情况下,使用TextFileInputFormat,您将在map()中有一个字节偏移量作为键,一行作为值。在不同的地图绘制程序中,它将类似于以下内容:。。。而且,我认为,一个仅仅20行的文件不需要分成几个文件。我有一个气象数据,它有很多细节,比如站点名称、年份、温度等(实际上有20行)。如果我想找到特定电台的平均温度,我的输出将是。要做到这一点,我们应该怎样做