hadoop源码阅读(一)(InputFormat源码)

10 篇文章 0 订阅
6 篇文章 0 订阅

Inputformat的介绍

在这里插入图片描述

官方英文文档:大致的意思是InputFormat是MapReduce框架用于处理输入的job
1.它用来验证job的输入规范
2.将输入文件切开,每个被切开的文件被分配到单独的Mapper中
3.提供RecordReader(抽象方法),用来收集Mapper的输入数据,说人话就是怎么读取数据就由这个RecordReader方法来提供的
4.FileInputFormat是最常的子类等等

1. InputFormat的继承树

查看InputFormat类

在这里插入图片描述

查看父子类关系(ctrl+h)

在这里插入图片描述

在这里我们主要看的是InputFormatFileInputFormatTextInputFormat,先从InputFormat开始看。

Alt+7查看类中的所有方法

在这里插入图片描述

1.1 InputFormat源码:

public abstract class InputFormat<K, V> {

	public abstract List<InputSplit> getSplits(JobContext context
) throws IOException, InterruptedException;
          
    public abstract RecordReader<K,V> createRecordReader(InputSplit
split,TaskAttemptContext context) throws IOException, InterruptedException;      
}

InputFormat类是抽象类,getSplitscreateRecordReader都被声明成抽象方法

getSplits:用来生成切片信息
createRecordReader:用来创建RecordReader对象。RecordReader是用来读取数据的。

1.2 FileInputFormat源码:

在这里插入图片描述

官方英文文档

FileInputFormat类是抽象类继承InputFormat重写了它的getSplits的抽象方法:

在这里插入图片描述

1.3 TextInputFormat源码

在这里插入图片描述

TextInputFormat作为FileInputFormat默认使用的InputFormat,它重写了createRecordReader,在createRecordReader方法内返回了一个LineRecordReader对象。LineRecordReader是真正用来读取数据的类,我们走进LineRecordReader。

在这里插入图片描述

LineRecordReader继承自RecordReader,RecordReader是抽象类

在这里插入图片描述
在这里插入图片描述

具体代码细节在:
link切片源码有详细说明,本篇主要是讲述InputFormat的目录结构

XMind图后面补

  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: Apache Hadoop项目是一个开源的分布式计算和存储系统。它依靠Hadoop分布式文件系统(HDFS)和MapReduce计算模型来处理海量数据。 Hadoop源码是使用Java语言编写的,完全开源并提供了详细的文档。源码可以从官方网站或代码托管平台(如GitHub)上获取。 Hadoop源码包括了HDFS和MapReduce这两个重要的组件。HDFS负责存储数据,将数据分散到Hadoop集群的各个节点上进行并行处理。MapReduce则是用于处理数据的计算模型,它将数据分为不同的块并将每个块分配给不同的节点进行并行计算。 源码中的Hadoop框架提供了许多功能,如数据复制、故障容错和分布式计算等。Hadoop使用Master/Slave架构,其中Master节点负责管理集群的运行,而Slave节点负责执行实际的任务。 Hadoop源码中还包括了其他一些组件,如YARN(Yet Another Resource Negotiator)和Hive。YARN是Hadoop的资源调度器,负责对集群中的资源进行管理和分配。Hive是一个基于Hadoop的数据仓库工具,可以通过类似于SQL的查询语句来操作和分析存储在Hadoop集群中的数据。 通过阅读Hadoop源码,可以深入了解其内部机制和实现细节。了解源码有助于开发者更好地理解Hadoop的工作原理,并对其进行个性化的配置和优化。在源码的基础上,开发者还可以扩展Hadoop,以满足特定的需求或应用场景。 总之,Hadoop源码是开源的,使用Java编写,并提供了丰富的功能和灵活性。通过深入研究源码,开发者可以更好地理解和使用Hadoop,进而构建强大的分布式计算和存储系统。 ### 回答2: Apache Hadoop是一个开源的分布式计算框架,它允许将大规模的数据集分布式处理和存储在集群中。Hadoop由两个核心组件组成,分别是Hadoop分布式文件系统(HDFS)和Hadoop MapReduce。 Hadoop分布式文件系统(HDFS)是一个高度可靠的分布式文件系统,它设计用于存储大规模数据集,并且能够在集群中提供高吞吐量的数据访问。HDFS的源码实现了数据块的分布、复制和恢复等功能,它的核心组件包括块管理器,名称节点和数据节点。名称节点负责维护文件系统的元数据信息,数据节点负责存储和管理实际的数据块。Hadoop源码中包含了HDFS的各个模块的实现,如文件系统操作、块管理、元数据管理等。 Hadoop MapReduce是一种用于处理大规模数据集的编程模型,它将任务分成多个小任务,并在集群中并行执行。MapReduce负责将输入数据划分为多个小数据块,并将这些数据块分配给不同的计算节点进行处理。Hadoop源码中包含了MapReduce框架的实现,包括任务调度、任务划分、数据传输、结果汇总等模块。 除了上述核心组件,Hadoop还包含了许多其他模块,如YARN(资源管理器)、HBase(分布式数据库)、ZooKeeper(分布式协调服务)等。Hadoop源码不仅包含了这些组件的实现细节,还包括了很多周边工具和库的源码Hadoop源码是以Java编写的,使用了许多设计模式和优化技巧,具有高度可扩展性和灵活性。它的开源性使得开发者可以自由地查看和修改源码,定制化自己的解决方案。在开发、学习和部署Hadoop时,掌握其源码对于理解内部机制和解决问题非常有帮助。 ### 回答3: Apache Hadoop项目是一个开源软件框架,用于处理大规模数据集的分布式计算。它由Apache软件基金会开发并发布,并成为大数据领域最常用的工具之一。 Hadoop源码是公开的,可以通过Apache官方网站获取。源码包含了Hadoop的核心组件,包括Hadoop Common、Hadoop HDFS、Hadoop YARN和Hadoop MapReduce等。 Hadoop Common是Hadoop的通用库,提供了许多用于处理分布式系统的基本功能,例如I/O操作、网络通信和安全性等。它包含了许多与系统操作相关的模块,如文件系统、认证和权限管理等。通过研究Hadoop Common的源码,我们可以了解Hadoop框架的基本架构和设计理念。 Hadoop HDFS是Hadoop的分布式文件系统,负责存储和管理数据。它的源码包含了文件系统的核心组件,如块管理器、命名空间管理和数据复制等。通过研究Hadoop HDFS的源码,我们可以了解大规模数据存储和处理的工作原理。 Hadoop YARN是Hadoop的资源管理器,用于管理和分配集群中的计算资源。它的源码包含了资源管理器和应用程序管理器等核心模块。通过研究Hadoop YARN的源码,我们可以了解如何优化集群资源的利用和处理多用户的并发请求。 Hadoop MapReduce是Hadoop的分布式计算框架,用于处理大规模数据的并行计算。它的源码包含了Map任务和Reduce任务等核心组件,以及分布式任务调度和数据通信等模块。通过研究Hadoop MapReduce的源码,我们可以了解如何编写和调度分布式计算任务。 总而言之,研究Apache Hadoop项目的源码,可以帮助我们深入理解分布式计算及大数据处理的原理和实现方式。同时,了解源码也有助于我们在实际应用中进行定制和调优,以满足特定的需求和性能要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

水花一直飞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值