12.Hadoop及其生态系统

本文详细介绍了Hadoop,包括HDFS的特性、文件读写过程、Secondary NameNode的作用,MapReduce的工作原理,Hadoop2.0的YARN机制,以及Hadoop生态中的Hive、列存储技术如RCFile、ORC和Parquet的优势。Hadoop是一个开源的分布式软件框架,用于存储和处理大规模数据,其生态系统丰富,支持多种计算模型和数据处理需求。
摘要由CSDN通过智能技术生成

前言:基于人大的《数据科学概论》第十二章。主要内容为Hadoop简介、Hadoop分布式文件系统、MapReduce工作原理、Hadoop生态系统、Hadoop2.0、Hadoop2.0在交互式查询引擎、Hadoop平台上的列存储。

一、Hadoop简介

简说:Apache Hadoop是存储和处理大数据的开源软件框架。它在普通服务器组成的大规模集群上,对大数据进行分布式处理。

Hadoop软件框架,包含如下主要模块:

  1. Hadoop Common,这个模块包含了其他模块需要的库函数和实用函数。
  2. Hadoop Distributed File System(HDFS),这是在由普通服务器组成的集群上运行的分布式文件系统,支持大数据的存储,通过多个节点的并行I/O,提供极高的吞吐能力。
  3. Hadoop MapReduce,是一种支持大数据处理的编程模型。
  4. Hadoop YARN,这是Hadoop2.0的基础模块,它本质上是一个资源管理和任务调度软件框架。它把集群的计算资源管理起来,为调度和执行用户程序提供资源的支持。

在这里插入图片描述

二、Hadoop分布式文件系统

Hadoop分布式文件系统(Hadoop Distributed File System,简称HDFS),是一个分布式的、高度可扩展的文件系统,它是模仿GFS(Google File System)的开源软件实现。

  • 一个HDFS集群,一般由一个NameNode和若干个DataNode组成(主从架构),分别负责元信息的管理(每个文件的数据块所在的DataNode的对应关系)和数据块的管理。
  • HDFS支持TB级甚至PB级大小文件的存储,它把文件划分成数据块(Block,大小64MB),分布到多台机器进行存储。
  • 为了保证系统的可靠性,HDFS把数据块在多个节点上进行复制。一般复制3份,多副本存放于本机、同机架、另外一个机架。

在这里插入图片描述

2.1HDFS特点

  • 高度扩展性
  • 高度容错性

2.2文件写入的过程

  1. 客户端程序调用HDFS的create()方法
  2. HDFS想NameNode发起一个远程过程调用,由其在其文件系统的命名空间里,创建一个新文件。这时,该文件还没有任何数据块。
  3. 当客户端开始写入数据,DFSOutputStream把数据分解成数据包,并且写入一个内部队列,称为数据队列。
  4. 第二个DataNode保存这个数据包,并且转发给第三个(最后一个)DataNode。
  5. DFSOutputStream同时维护一个数据包的内部队列,用于等待接收DataNode的应答信息,称为ACk Queue。
  6. 当客户端程序完成数据写入,它调用数据流的close()方法。
  7. 客户端把所有剩余的数据包发送到DataNode流水线上,并且等待应答信息,最后联系NameNode,告诉它文件结束。

在这里插入图片描述

2.3文件的读取过程

  1. 客户端程序通过调用FileSystem对象的open()方法,打开文件,获得Distributed FileSystem类的一个实例。
  2. DistributedFileSystem 通过RPC调用NameNode,获得文件开始若干数据块的位置信息(Locations of Blocks)。对于每个数据块来讲,NameNode会返回拥有这个数据块的副本的所有DataNode的地址。
  3. 客户端程序从输入流上调用函数read()。由于DFSInputStream已经保存了文件开始若干数据块所在的DataNode的地址,DFSInputStream连接到最近的(Closest)DataNode,读取文件的第一个数据块。
  4. 数据从DataNode源源不断传送回客户端程序,而客户端程序则不断地调用数据流的read()方法。
  5. 当到达数据块的末尾的时候,DFSInputStream将关闭到DataNode的连接,然后寻找下一个数据块的最优的DataNode,以便进行后续数据块的读取。DataNode的选择对客户端程序来讲是透明的,客户端程序只是从一个连续的数据流进行读取。
  6. 客户端按照顺序读取各个数据块。当客户端不断读取数据流的时候,在数据块的边界,DFSInputStream不断创建到保存其它数据块的DataNode的连接。DFSInputStream同时向NameNode询问和提取,下一批数据块的DataNode的位置信息。
  7. 当客户端完成文件的读取,它调用FSDataInputStream实例的close()方法。

在这里插入图片描述

2.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值