`

Hadoop代码分析(三)

阅读更多

下面是关于LineRecoedReader的NextKeyValue代码:

public boolean nextKeyValue() throws IOException {
    if (key == null) {
      key = new LongWritable();
    }
    key.set(pos);
    if (value == null) {
      value = new Text();
    }
    int newSize = 0;
    while (pos < end) {
      newSize = in.readLine(value, maxLineLength,
                            Math.max((int)Math.min(Integer.MAX_VALUE, end-pos),
                                     maxLineLength));
      if (newSize == 0) {
        break;
      }
      pos += newSize;
      if (newSize < maxLineLength) {
        break;
      }

      // line too long. try again
      LOG.info("Skipped line of size " + newSize + " at pos " + 
               (pos - newSize));
    }
    if (newSize == 0) {
      key = null;
      value = null;
      return false;
    } else {
      return true;
    }
  }

 在key.set(pos)中,pos是该Line的位置,value是该Line的内容,有一个例子说明,是权威指南中的:

On the top of the Crumpetty Tree

The Quangle Wangle sat,

But his face you could not see,

On account of his Beaver Hat.

该记录被LIneRecordReader处理为4条K/V对:
(0, On the top of the Crumpetty Tree)
(33, The Quangle Wangle sat,)
(57, But his face you could not see,)
(89, On account of his Beaver Hat.)
结合wordcount的例子,每一次mapper处理的K/V对,对value进行处理,StringTokenizer itr = new StringTokenizer(value.toString()),将value分割成一个一个的标记,经过mapper的处理。生成如下格式的中间体:
(On,1),(the,1),(top,1),(of,1).....再由job将这个中间体传给reducer进行排序和汇总;

所以,一个job的input从输入到mapper的输出大概是这样:
从FIleInputFormat.addInputPath(args),将input提交给FileInputFormat的getSplit()进行分块,在本例中,TextIputFormat获取每一行数据的LineRecordReader,用LineRecord进行从K/V对的读取,LineRecord其实是就像是读取器,具体的从输入流中读取数据的任务是它完成的,最后读取的K/V对交由mapper进行处理。

分享到:
评论

相关推荐

    Hadoop源代码分析完整版.pdf

    Hadoop源代码分析完整版.pdf

    Hadoop源代码分析(完整版).pdf

    Hadoop 的源代码分析可以分为三个部分:HDFS、MapReduce 和其他组件。 HDFS HDFS 是 Hadoop 的核心组件之一,是一个分布式文件系统。HDFS 的主要功能是提供一个高可靠、高可扩展的文件系统,可以存储大量的数据。...

    Hadoop源代码分析

    《Hadoop源代码分析》是一本深入探讨Hadoop核心组件MapReduce的专著。Hadoop是Apache软件基金会的一个开源项目,旨在提供分布式存储和计算框架,以处理和存储大量数据。MapReduce是Hadoop的核心计算模型,它通过将大...

    深入云计算:Hadoop源代码分析(修订版)

    深入云计算:Hadoop源代码分析(修订版)

    深入云计算 Hadoop源代码分析

    ### 深入云计算 Hadoop源代码分析 #### 一、引言 随着大数据时代的到来,数据处理成为了各个领域中的关键技术之一。Hadoop作为一个开源的大数据处理框架,因其优秀的分布式计算能力,在业界得到了广泛的应用。...

    Hadoop分析气象数据完整版源代码(含Hadoop的MapReduce代码和SSM框架)

    Hadoop分析气象数据完整版源代码(含Hadoop的MapReduce代码和SSM框架) 《分布式》布置了一道小作业,这是作业的所有代码,里面包含了Hadoop的MapReduce代码、和SSM框架显示数据的代码

    Hadoop源代码分析完整版.doc

    "Hadoop源代码分析完整版" Hadoop作为一个开源的分布式计算框架,具有高可扩展性和高性能的特点。Hadoop的源代码分析可以分为多个部分,包括HDFS、MapReduce、YARN等。 首先,让我们了解Hadoop的架构。Hadoop的...

    Hadoop分析气象数据完整版代码

    在这个项目中,我们重点关注的是一套完整的Hadoop分析气象数据的代码,这涉及到分布式计算、数据处理以及数据可视化等多个关键知识点。 首先,我们要理解Hadoop的核心组件:HDFS(Hadoop Distributed File System)...

    Hadoop源代码分析(一)

    在IT行业中,Hadoop是一个广泛使用的开源大数据处理框架,它主要由Apache软件基金会维护。...在阅读博客文章《Hadoop源代码分析(一)》时,可以结合Hadoop的源码,逐步揭开这个强大框架的神秘面纱。

    Hadoop源代码分析完整版

    ### Hadoop源代码分析知识点详解 #### 一、Hadoop与云计算的核心技术 Hadoop作为分布式计算领域的核心框架,其源代码分析对于深入理解云计算的底层实现至关重要。Hadoop最初的设计灵感来源于Google的一系列论文,...

    Hadoop源代码分析(完整版

    在Hadoop源代码分析中,首先,我们可以看到HDFS(Hadoop分布式文件系统)是所有基于Hadoop项目的基础。HDFS的设计灵感来源于Google的GFS(Google File System),它通过将大文件分割成块并复制到多个节点来确保数据...

    Hadoop源代码分析 高清完整中文版PDF下载

    根据提供的文件内容,以下是关于Hadoop源代码分析的知识点总结。 首先,Hadoop项目起源于Google的核心技术论文。Google开发了一系列创新技术用于构建其大规模的分布式计算平台,这些技术包括Google Cluster、Chubby...

    hadoop代码

    在大数据处理领域,Hadoop和HBase是两个非常重要...以上就是关于"Hadoop代码"资源的详细解析,这个资源提供了从基础API使用到高级优化策略的全面学习材料,对于想要深入理解并应用Hadoop和HBase的开发者来说极具价值。

    Hadoop源码分析视频下载

    - 性能调优:学习如何通过调整参数和优化代码来提升Hadoop集群的性能。 通过深入学习和理解Hadoop源码,你将能够更好地驾驭这个强大的大数据处理工具,解决实际项目中的问题,甚至为Hadoop社区贡献自己的改进和...

    hadoop源代码存档

    三、源代码学习要点 1. 文件系统接口:了解HDFS如何通过FSDataInputStream和FSDataOutputStream进行文件读写,以及如何实现文件的创建、删除和移动操作。 2. 数据块与副本策略:研究HDFS如何决定数据块大小和副本...

Global site tag (gtag.js) - Google Analytics