MapReduce InputSplit

1.目的

我们将学习Hadoop中InputSplit的详细描述。 解释什么是Hadoop InputSplit,MapReduce中inputSplit的需求以及Hadoop如何执行InputSplit,如何在Hadoop中更改分割大小。

2.什么是Hadoop中的InputSplit?

Hadoop中的InputSplit MapReduce是数据的逻辑表示。它描述了在MapReduce程序中包含单个mapper任务的工作单元。

MapReduce InputSplit长度以字节度量,每个InputSplit都有存储位置(主机名字符串)。 MapReduce系统使用存储位置将map任务放置在尽可能接近inputsplit的位置。 Map任务按照inputsplit的大小的顺序进行处理,以便最大的一个首先得到处理(greedy approximation algorithm贪婪逼近算法),这样做是为了尽量减少作业运行时间。需要注意的重要一点是Inputsplit不包含输入数据;它只是对数据的引用。

作为用户,我们不需要直接处理InputSplit,因为它们是由InputFormat创建的(InputFormat创建Inputsplit并分成记录)。默认情况下,FileInputFormat将文件分为128MB块(与HDFS中的块相同),并通过在mapred-site.xml中设置mapred.min.split.size参数,我们可以控制该值或覆盖所使用的Job对象中的参数提交特定的MapReduce作业。通过编写一个自定义的InputFormat,我们还可以控制文件如何分解为分割。

3.如何在Hadoop中更改分割大小?

Hadoop中的InputSplit是用户定义的。用户可以根据MapReduce程序中的数据大小来控制分割大小。map任务的数量等于InputSplits的数量。

客户端(运行作业)可以通过调用‘getSplit()‘来计算作业的拆分,然后发送到应用程序主程序,主程序使用Inputsplit的存储位置来调度mapper任务以在集群上处理它们。然后,map任务将分割结果传递给InputFormat上的createRecordReader()方法,以获取分割和RecordReader生成记录(键值对)的RecordReader,并将其传递给map函数。

4 结论

总之,InputSplit不包含实际数据,而是对数据的引用。它在MapReduce程序或其他处理技术中的数据处理过程中使用。因此,分割被分成记录,每个记录(这是一个键值对)由map处理。

MapReduce InputSplit

发表评论

电子邮件地址不会被公开。 必填项已用*标注

+ 三十 = 三十 八