如何将块转换为记录以及Hadoop中记录的定义究竟是什么

时间:2018-02-26 15:19:08

标签: hadoop mapreduce hdfs yarn

我正在学习Hadoop,并从HDFSMapReduce开始。我理解HDFSMapReduce的基础知识。

有一点我无法理解,我在下面解释:

大数据集 - >作为块存储在HDFS中,例如B1,​​B2,B3。

现在,当我们运行MR作业时,每个映射器都在一个块上运行(假设1个映射器处理一个数据块以简化)

1 Mapper ==>处理1块

我还读到该块被分为Records,对于给定的块,为该块(数据)中的每个记录调用相同的映射器。

但究竟什么是Record

对于给定的块,因为它必须被“分解”为records,该块如何被分解为记录以及记录中的成分。

在大多数示例中,我看到记录是由新行分隔的整行。

我怀疑是什么决定了什么可以被视为记录的“条件”基础。

我知道Hadoop中有很多InputFormat,但我的问题是决定将某些内容视为记录的条件是什么。

任何人都可以用简单的语言帮助我理解这一点。

1 个答案:

答案 0 :(得分:1)

你已经基本上已经为自己回答了这个问题,所以希望我的解释可以帮助你。

记录是键值对的MapReduce特定术语。单个MapReduce作业可以有多种不同类型的记录 - 在wordcount示例中,映射器输入记录类型为<Object, Text>,映射器输出/缩减器输入记录类型为<Text, IntWritable>,以及reducer输出记录类型也是<Text, IntWritable>

InputFormat负责定义块如何拆分为单个记录。如您所述,有许多InputFormats,每个都负责实现管理如何将数据拆分为记录的代码。

块本身没有记录概念,因为在数据被读取到映射器之前不会创建记录。您可以使用两个单独的MapReduce作业来读取相同的块但使用不同的InputFormats。就HDFS而言,它只是存储了一大块数据。

没有&#34;条件&#34;用于定义数据的拆分方式 - 您可以创建自己的InputFormat并按需要拆分数据。