📖 本文内容
- 📖 第 2 章 —— 大数据处理架构 Hadoop
- 📑 Hadoop 和 谷歌 MapReduce 、GFS 等技术之间的关系?
- 📑 Hadoop 的特性 ?
- 📑 Hadoop 的生态系统以及简述各个功能 ?
- 📑 Hadoop 伪分布式安装指的是什么?单机Hadoop模式?
- 📖 第 3 章 —— 分布式文件系统 HDFS
- 📑 分布式文件系统的结构
- 📚 什么是磁盘块?
- 📚 分布式文件系统物理结构上是什么结构?
- 📚 名称节点与数据节点的工作 ?
- 📚 如何保证数据的完整性?
- 📑 HDFS 简介
- 📚 HDFS 要实现哪5个目标 ?
- 📚 HDFS 应用局限的3个方面
- 📑 HDFS 的相关概念
- 📚 HDFS默认的块大小以及为什么HDFS 在块的设计上明显大于普通文件系统?
- 📚 名称节点和数据节点
- 📚 第二名称节点的作用?
- 📑 HDFS 体系结构
- 📚 HDFS 体系结构的局限性
- 📑 HDFS 的存储原理
- 📚 HDFS 数据冗余存储的优点?
- 📚 数据存取策略?
📖 第 2 章 —— 大数据处理架构 Hadoop
📑 Hadoop 和 谷歌 MapReduce 、GFS 等技术之间的关系?
新书P 29 - 2.1.1 旧书 P 28 - 2.1.1
谷歌 MapReduce 与 GFS 是 Hadoop 的MapperReduce 与 HDFS 的闭源版本 ,同时Hadoop也是 根据 谷歌发布的论文进行的开源实现。
📑 Hadoop 的特性 ?
新书P 30-2.1.3 旧书 P29.2.1.3
- 高可靠性:采用冗余数据存储方式,即使一个副本发生故障,其他副本也可以保证正常对外提供服务。
- 高效性:Hadoop采用**分布式存储(Mapper)与分布式处理(Reduce)**两大核心技术,可以高效处理大数据。
- 高可扩展性:目标是高效稳定运行在廉价集群上
- 高容错性:采用冗余数据存储方式。——默认是三个冗余数据备份
- 成本低: 廉价机集群
- 运行在Linux平台上
- 支持多种编程语言
📑 Hadoop 的生态系统以及简述各个功能 ?
新P32-图2-2 旧P31-图2-2

📑 Hadoop 伪分布式安装指的是什么?单机Hadoop模式?
新P36 - 2.3.5 和 P37-2.3.6 旧 P35 - 2.3.5 和 P36 - 2.3.6
伪分布式安装是指 在一台机器上模拟一个小的集群,但是集群中只有一个节点。
单击Hadoop只在一台机器上运行,存储采用本地文件系统,没有采用HDFS。
对于伪分布式配置,我们需要修改 core-site.xml 、hdfs-site.xml 这两个文件。
📖 第 3 章 —— 分布式文件系统 HDFS

📑 分布式文件系统的结构
新 P47 - 3.1.2 旧 P 43 - 3.1.2
📚 什么是磁盘块?
Linux 、Windos等操作系统中,文件系统一般会把磁盘空间划分为每 512 字节一组,称之为"磁盘块"
HDFS 默认的一个块大小为 64 MB
📚 分布式文件系统物理结构上是什么结构?
DFS在物理结构上是由计算机集群中的多个节点构成的。
“主节点”——名称节点
“从节点”——数据节点
📚 名称节点与数据节点的工作 ?
- 名称节点负责文件和目录的创建、删除和重命名等,同时管理数据节点和文件块的映射关系,因此客户端只有访问名称节点才能找到请求的文件块所在的位置,进而到相应位置读取所需文件块。
- 数据节点负责数据的存储和读取。
📚 如何保证数据的完整性?
计算机急群众的节点可能发生故障,因此为了保证数据的完整性,分布式文件的系统通常采用多副本存储的方式。
📑 HDFS 简介
新P 49 旧 P 45
📚 HDFS 要实现哪5个目标 ?
- 兼容廉价硬件设备
- 流数据读写
- 大数据集
- 简单的文件模型
- 强大的跨平台兼容性能
📚 HDFS 应用局限的3个方面
- 不适合低延迟数据访问
- 无法高效存储大量小文件
- 不支持多用户写入及任意修改文件。
📑 HDFS 的相关概念
新P50 旧46
📚 HDFS默认的块大小以及为什么HDFS 在块的设计上明显大于普通文件系统?
HDFS 也同样采用了块的概念,默认的一个块大小为64MB
HDFS这么做,是为了最小的寻址开销。HDFS 寻址开销不仅包括磁道寻道开销,还包括数据块的定位开销。
📚 名称节点和数据节点
名称节点
名称节点负责管理分布式文件系统的命名空间,保存了两个核心的数据结构(FsImage 和 EditLog)

FsImage
FsImage用于维护文件系统树以及文件树中所有的文件和文件夹的元数据。
EditLog
操作日志文件 EditLog 中记录了所有针对文件的创建、删除、重命名等操作。
数据节点
数据节点是分布式文件系统HDFS的工作节点,负责数据的存储和读取,会根据客户端或者名称节点的调度来进行数据的存储和检索,并且向名称节点定期发送自己所存储的块的列表信息。每个数据节点中的数据会被保存在各自节点的本地Linux文件系统中。
📚 第二名称节点的作用?
新P52 旧P 48
第二名称节点知识起到了名称节点的“检查点”作用,并不能起到“热备份”作用,即使有了第二名称节点的存在,当名称节点发生故障时,系统还是有可能会丢失部分元数据信息的。

📑 HDFS 体系结构

- 名称节点作为中心服务器,负责管理文件系统的命名空间及客户端对文件的访问。
- 集群中的数据节点一般是一个节点运行一个数据节点进程,负责处理文件系统客户端的读/写请求,在名称节点的统一调度下进行数据块的创建、删除和复制等操作。
- 每个数据节点的数据实际上是保存在本地Linux文件系统中的。
- 每个数据节点会周期性地向名称节点发送“心跳信息”,报告自身状态,若处于“宕机”状态,则名称节点不再会给其分配任何I/O请求。
📚 HDFS 体系结构的局限性
新P 54 旧 P 50
因HDFS只设置了唯一一个名称节点,带来了如下局限性:
- 命名空间的限制
- 性能的瓶颈
- 隔离问题
- 集群可用性
📑 HDFS 的存储原理
新P 55 旧 P51
📚 HDFS 数据冗余存储的优点?
- 加快数据传输速度
- 容易检查数据错误
- 保证数据的可靠性
📚 数据存取策略?
数据存放、数据读取和数据复制等方面
数据存放

简单来说:(集群内请求)第一个副本放置当前发起写操作请求的数据节点上(集群外请求则找较闲的),第二个副本放置在处于不同机架上的数据节点上,第三个副本放置在同一个机架上的不同数据节点上。
数据读取
HDFS内部通过调用 API确定数据节点的所属机架ID,同时客户端也可以获取自己所属机架ID,如果二者相同则优先选择该机架上的副本进行数据读取,反之随机获取副本读取数据。
数据复制
HDFS的数据复制采用的是流水线复制的策略,大大提高了数据复制过程的效率。
简单来说:就是将要复制的文件,先写入本地,拆分成块,块大小为HDFS所设定的值,这些块都会向名称节点发送写请求,然后名称节点会根据各个数据节点使用情况返回一个数据节点列表给客户端,客户端会把数据根据列表中顺序依次写入,写入的时候也会将该数据列表一并发送,数据节点每接收到4KB的数据就会写入本地,向下一个数据节点发送列表后,接受4KB并写入,重复操作形成一条数据复制的流水线。
















