hdfs学习总结

hailey-m hailey-m     2023-03-09     323

关键词:

1.什么是Hadoop

管理网络中跨多台计算机存储的文件系统称为分布式文件系统
面临的挑战:使文件系统能容忍节点故障且不丢失任何数据
不适合的特点:低时间延迟的数据访问&大量的小文件&多用户写入,任意修改文件

2. HDFS的概念
元数据
hdfs的目录结构及每一个文件的块信息(块的ID,块的副本数量,块的存放位置)
由namenode负责

数据块
默认为64MB,最小化寻址开销
#分块的好处:
1. 一个文件的大小可以大于网络中任意一个磁盘的容量
2. 使用块抽象而非整个文件作为存储单元,大大简化了存储子系统的设计。
3. 适用于数据备份,提供数据容错能力和可用性。将每个块复制到少数几个独立的机器上,默认为3个。

namenode和datanode
管理者-工作者模式运行
namenode:
管理文件系统的命名空间,(永久)命名空间镜像文件和编辑日志文件
(不永久,系统启动时由数据节点重建)记录每个文件中各个块所在的数据节点信息
datanode:
存储并检索数据块,定期向namenode发送它们所存储的块的列表。

如何对namenode进行容错:
1. 备份那些组成文件系统元数据持久状态的文件。将持久状态写入本地磁盘的同时,写入一个远程挂载的网络文件系统(NFS)。
2. 辅助namenode,定期通过编辑日志合并命名空间镜像,防止编辑日志过大。
#节点全部失效,怎么办?
一般把NFS上的namenode元数据复制到辅助namenode并作为新的主namenode运行。

3.namenode元数据管理机制示意图

 技术图片

 


内存中有一份完整的元数据(内存meta data)
磁盘有一个“准完整”的元数据镜像(fsimage)文件(在namenode的工作目录中)
用于衔接内存meta data和持久化元数据镜像fsimage之间的操作日志(edits文件)注:当客户端对hdfs中的文件进行新增或者修改操作,操作记录首先被记入edits日志文件中,当客户端操作成功后,相应的元数据会更新到内存meta data中
每隔一段时间,会由secondary namenode将namenode上积累的所有edits和一个最新的fsimage(只有第一次需要下载)下载到本地,并加载到内存进行merge(这个过程称为checkpoint)。
4.向HDFS写入数据时的流程

技术图片

 

写入期间如果发生故障,则执行:
(1)关闭管线,确认把队列中的任何数据包都添加回数据队列的最前端,以确保故障节点下游的节点不会漏掉数据包。
(2)为存储在另一正常节点的当前数据块指定一个新的标识,并将该标识传送给namenode,以便故障节点在恢复后可以删除存储的部分数据包。
(3)从管线中删除故障节点,并把余下的数据块写入管线中的两个正常的节点。namenode注意到复本量不足时,会在另一个节点上创建一个新的复本。
5.从HDFS读取数据时的流程

 技术图片

6.网络拓补和Hadoop
如何计算两个节点间的距离?
同一节点中的进程<同一机架上的不同节点<同一数据中心中不同机架上的节点<不同数据中心中的节点

7.复本的布局
可靠性、写入带宽和读取带宽
默认的策略:
在运行客户端的节点/随机选一个节点 作为第一个
和第一个不同的机架中的节点 作为第二个
和第二个相同的机架,不同节点 作为第三个
一旦选定后,会根据网络拓补创建一个管线。
稳定性:两个机架
写入带宽:写入操作只需要遍历一个交换机
读取性能:可以从两个机架中进行选择读取
集群中块的均匀分布:客户端只在本地机架写入一个块

8.数据完整性
检测数据是否损坏的常见措施:
在数据第一次引入系统时计算校验和,并在数据通过一个不可靠通道进行传输时再次计算校验和,如果不匹配,则说明有损坏,但不能修复数据,常用的错误检测码为CRC-32.

HDFS的数据完整性
对写入和读取的数据分别计算与验证校验和

数据校验的几种场景:
(1)客户端向datanode发送数据,最后一个datanode收到数据后,验证数据的验证和与客户端的是否一致。
(2)客户端从datanode读取数据时,也会验证校验和,并记录在datanode上。(这些对检测损坏的磁盘很有价值)
(3)datanode会在后台线程中运行一个datablockscanner,从而定期验证存储在这个datanode上的所有数据块。

HDFS常见面试题:

1. HDFS 中的 block 默认保存3份

2. HDFS 默认 BlockSize 是 64MB(2.7.2版本,本地模式)128MB(2.7.2版本,分布式模式)

3. Client 端上传文件的时候下列哪项正确:
- Client端将文件切分为Block,依次上传
- Client只上传数据到一台DataNode,然后由NameNode负责Block复制工作

4.DataNode负责 HDFS 数据存储

5.关于SecondaryNameNode 哪项是正确的?(C)
A.它是NameNode的热备
B.它对内存没有要求
C.他的目的使帮助NameNode合并编辑日志,减少NameNode 启动时间

6.下列哪个程序通常与 NameNode 在一个节点启动?(D)
A.SecondaryNameNode
B.DataNode
C.TaskTracker
D.JobTracker
*****
hadoop的集群是基于master/slave模式,namenode和jobtracker属于master,datanode和tasktracker属于slave,master只有一个,而slave有多个。
SecondaryNameNode内存需求和NameNode在一个数量级上,所以通常secondary NameNode(运行在单独的物理机器上)和 NameNode 运行在不同的机器上。
JobTracker对应于NameNode,TaskTracker对应于DataNode。
DataNode和NameNode是针对数据存放来而言的。JobTracker和TaskTracker是对于MapReduce执行而言的。
mapreduce中几个主要概念,mapreduce 整体上可以分为这么几条执行线索:
jobclient,JobTracker与TaskTracker。
1)JobClient会在用户端通过JobClient类将已经配置参数打包成jar文件的应用存储到hdfs,并把路径提交到Jobtracker,然后由JobTracker创建每一个Task(即 MapTask 和 ReduceTask)并将它们分发到各个TaskTracker服务中去执行。
2)JobTracker是一master服务,软件启动之后JobTracker接收Job,负责调度Job的每一个子任务。task运行于TaskTracker上,并监控它们,如果发现有失败的task就重新运行它。一般情况应该把JobTracker 部署在单独的机器上。
3)TaskTracker是运行在多个节点上的slaver服务。TaskTracker主动与JobTracker通信,接收作业,并负责直接执行每一个任务。TaskTracker 都需要运行在HDFS的DataNode上。
*****
7.文件大小默认为 64M,改为 128M 有啥影响?
增加文件块大小,需要增加磁盘的传输速率。

8.HDFS的存储机制(读取和写入)

9.secondarynamenode工作机制
1)第一阶段:namenode启动
(1)第一次启动namenode格式化后,创建fsimage和edits文件。如果不是第一次启动,直接加载编辑日志和镜像文件到内存。
(2)客户端对元数据进行增删改的请求
(3)namenode记录操作日志,更新滚动日志。
(4)namenode在内存中对数据进行增删改查
2)第二阶段:Secondary NameNode工作
(1)SecondaryNameNode询问namenode是否需要checkpoint。直接带回namenode是否检查结果。
(2)SecondaryNameNode请求执行checkpoint。
(3)namenode滚动正在写的edits日志
(4)将滚动前的编辑日志和镜像文件拷贝到Secondary NameNode
(5)SecondaryNameNode加载编辑日志和镜像文件到内存,并合并。
(6)生成新的镜像文件fsimage.chkpoint
(7)拷贝fsimage.chkpoint到namenode
(8)namenode将fsimage.chkpoint重新命名成fsimage

10. NameNode与SecondaryNameNode 的区别与联系?
1)机制流程同上;
2)区别
(1)NameNode负责管理整个文件系统的元数据,以及每一个路径(文件)所对应的数据块信息。
(2)SecondaryNameNode主要用于定期合并命名空间镜像和命名空间镜像的编辑日志。
3)联系:
(1)SecondaryNameNode中保存了一份和namenode一致的镜像文件(fsimage)和编辑日志(edits)。
(2)在主namenode发生故障时(假设没有及时备份数据),可以从SecondaryNameNode恢复数据。
11. namenode内存包含哪些,具体如何分配
NameNode整个内存结构大致可以分成四大部分:Namespace、BlocksMap、NetworkTopology及其它。
1)Namespace:维护整个文件系统的目录树结构及目录树上的状态变化;
2)BlockManager:维护整个文件系统中与数据块相关的信息及数据块的状态变化;
3)NetworkTopology:维护机架拓扑及DataNode信息,机架感知的基础;
4)其它:
LeaseManager:读写的互斥同步就是靠Lease实现,支持HDFS的Write-Once-Read-Many的核心数据结构;
CacheManager:Hadoop 2.3.0引入的集中式缓存新特性,支持集中式缓存的管理,实现memory-locality提升读性能;
SnapshotManager:Hadoop 2.1.0引入的Snapshot新特性,用于数据备份、回滚,以防止因用户误操作导致集群出现数据问题;
DelegationTokenSecretManager:管理HDFS的安全访问;
另外还有临时数据信息、统计信息metrics等等。
NameNode常驻内存主要被Namespace和BlockManager使用,二者使用占比分别接近50%。其它部分内存开销较小且相对固定,与Namespace和BlockManager相比基本可以忽略。

 

6.1hive学习总结(代码片段)

Hive学习总结Hive是一种基于Hadoop的天然的分布式文件数据库,使用sql来进行文件数据查询的,本质上还是mapreduce的方式通过java来查询数据返回结果Hive学习参考连接Hive教程Hive官网Hive知识点内部表外部表区别内部表删除... 查看详情

hdfs学习总结

1.什么是Hadoop管理网络中跨多台计算机存储的文件系统称为分布式文件系统面临的挑战:使文件系统能容忍节点故障且不丢失任何数据不适合的特点:低时间延迟的数据访问&大量的小文件&多用户写入,任意修改文件2.HDFS的... 查看详情

hdfs总结(代码片段)

HDFS最近学习总结一.hdfs整体运行机制:客户把一个文件存入HDFS中,其实HDFS会把文件切成块进行存储,会分散存储到N台Linux系统中(存储文件块的角色是:datanode)(重要的是切块的行为是由客户端决定的)一旦文件被切块切块存储... 查看详情

hdfs知识总结(代码片段)

转自:https://www.cnblogs.com/caiyisen/p/7395843.html学习完Hadoop权威指南有一段时间了,现在再回顾和总结一下HDFS的知识点。1、HDFS的设计HDFS是什么:HDFS即Hadoop分布式文件系统(HadoopDistributedFilesystem),以流式数据访问模式来存储超大... 查看详情

大数据讲课笔记4.2hdfs架构和原理

文章目录零、学习目标一、导入新课二、新课讲解(一)HDFS存储架构(二)HDFS文件读写原理1、HDFS写数据原理2、HDFS读数据原理三、归纳总结四、上机操作零、学习目标了解HDFS存储架构理解HDFS文件读写原理一、... 查看详情

hdfs总结

HDFS是一个分布式文件存储系统Client 提交读写请求(拆分blocksize)NameNode全局把控(知道blocksize的地址)dataNode存储数据(将数据存储进去,且以Pipeline的方式把数据写完)1.如果你要把数据写到HDFS上去,的流程是发起请求-client(接受数据,... 查看详情

大数据周会-本周学习内容总结07(代码片段)

目录01【hadoop】1.1【编写集群分发脚本xsync】1.2【集群部署规划】1.3【Hadoop集群启停脚本】02【HDFS】2.1【HDFS的API操作】03【MapReduce】3.1【P077-WordCount案例】3.2【P097-自定义分区案例】历史总结01【hadoop】1.1【编写集群分发脚本xsync】... 查看详情

hdfs知识点《转》(代码片段)

学习完Hadoop权威指南有一段时间了,现在再回顾和总结一下HDFS的知识点。1、HDFS的设计HDFS是什么:HDFS即Hadoop分布式文件系统(HadoopDistributedFilesystem),以流式数据访问模式来存储超大文件,运行于商用硬件集群上,是管理网络... 查看详情

spark学习总结及其demo(代码片段)

RDD及其特点1、RDD是Spark的核心数据模型,但是个抽象类,全称为ResillientDistributedDataset,即弹性分布式数据集。2、RDD在抽象上来说是一种元素集合,包含了数据。它是被分区的,分为多个分区,每个分区分布在集群中的不同节点... 查看详情

hdfs常用命令(持续增加,总结贴)

1.帮助命令可以通过此命令了解更多命令hdfsdfs-help2.根目录详情hdfsdfs-ls/3.文件上传到hdfs的根目录下hdfsdfs-puta.txt/a.txt4.剪切文件到hdfs的根目录下hdfsdfs-moveFromLocala.txt/aa.txt5.从hdfs根目录下载文件到指定位置hdfsdfs-get/a.txt/root/aa.txt6.在h... 查看详情

hadoop基本组件原理小总结

Hadoop基础知识小总结 这是本人(学生党)在学习hadoop半个学期后根据教科书后习题做的一个小总结,如有发现错误还请各位海涵并指出,我会及时改过来的,谢谢!目录Hadoop基础知识小总结...1第一章...21、简述hadoop平台的发... 查看详情

hdfs学习

一、hdfs概述介绍:在现代的企业环境中,单机容量往往无法存储大量数据,需要跨机器存储。统一管理分布在集群上的文件系统称为分布式文件系统。HDFS(HadoopDistributedFileSystem)是ApacheHadoop项目的一个子项目.Hadoop非常适于存储... 查看详情

hadoop学习hdfs(代码片段)

1、HDFS的设计HDFS是什么:HDFS即Hadoop分布式文件系统(HadoopDistributedFilesystem),以流式数据访问模式来存储超大文件,运行于商用硬件集群上,是管理网络中跨多台计算机存储的文件系统。HDFS不适合用在:要求低时间延迟数据访... 查看详情

hdfs的相关面试题总结

1、hadoop与云计算之间的关系?解析:云计算由位于网络上的一组服务器把其计算、存储、数据等资源以服务的形式提供给请求者以完成信息处理任务的方法和过程。针对海量文本数据处理,为实现快速文本处理响应,缩短海量数... 查看详情

hdfs2.0之简单总结

新特性NameNode支持HA命名空间支持分区(Federation)支持ViewFS支持目录快照支持权限ACL支持缓存指定的文件QJM实现名字节点HA(图片来源互联网)命名空间分区(NameNodeFederation)文件系统命名空间进行分组,每组由一个NameNode集群负责管... 查看详情

博学谷学习记录超强总结,用心分享|yarn的执行流程

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档文章目录yarn的组成部分yarn的执行流程简述Scheduler调度器ApplicationMasterContainer【博学谷IT技术支持】yarn的组成部分hadoop是由Common、HDFS、YARN、MapRed... 查看详情

hadoop学习笔记--hdfs(代码片段)

文章目录引言1.基本特征1.1高容错性1.2数据容量大1.3可扩展性1.4高吞吐量1.5就近计算2.体系架构2.1NameNode2.2DataNode3.存储机制3.1Block3.2副本管理策略4.数据读写过程4.1数据的读取过程4.2数据的写入过程5.JavaAPI编程6.HDFS的高可靠性机制6... 查看详情

hdfs总结

目录一.HDFS的设计特点是:二.HDFS的关键元素:三.HDFS运行原理四.HDFS数据合并原理五.HDFS写原理六.HDFS读原理七.HDFS适用场景和不使用场景适用场景:不适用场景:八.分块存储九.安全模式:十.MapReduce(一.)MapReduce的定义(二.)MapReduce编... 查看详情