Hadoop分布式文件系统:结构与设计
HDFS原理和体系结构

Secondary NameNode
Secondary NameNode作用 1、对HDFS元数据的冷备份,预防NameNode出现故障丢失数据。 2、解决EditLog增大的问题。
SecondaryNameNode的处理,是将fsimage和edits文 件周期的合并,不会造成NameNode重启时造成长时间不 可访问的情况。
HDFS数据写入流程解析
HDFS数据读取流程解析
HDFS可靠性
• 所有数据块都有副本 • 可以在hdfs-site.xml中设置复制因子指定副本数量 • DataNode启动时,遍历本地文件系统,产生一份hdfs数
据块和本地文件的对应关系列表(blockport)汇报给 namenode
HDFS可靠性
HDFS新功能和特性
基于HDFS路由器的联合 • HDFS基于路由器的联合会添加一个RPC路由层,提供多个
HDFS命名空间的联合视图。 • 简化了对现有HDFS客户端的联合集群的访问。
HDFS新功能和特性
支持多个NameNode
• 允许用户运行多个备用NameNode; • 一个NameNode是Active,其它为Standby; • Standby NN会不断与JN同步,保证自己获取最新的
• Namenode根据块报告验证元数据
HDFS可靠性
安全模式
• Namenode启动时会先经过一个“安全模式”阶段,安全模式 阶段不会产生数据写;
• 在安全模式阶段Namenode收集各个datanode的报告,当数据 块达到最小副本数以上时,会被认为是“安全”的;
• 在一定比例(可设置)的数据块被确定为“安全”后,再过若 干时间,安全模式结束;
大数据架构组件

⼤数据架构组件1.⼤数据架构图谱⽂件系统HDFS Hadoop Distributed File System,简称HDFS,是⼀个分布式⽂件系统。
HDFS是⼀个⾼度容错性的系统,适合部署在廉价的机器上。
HDFS能提供⾼吞吐量的数据访问,⾮常适合⼤规模数据集上的应⽤。
GlusterFS 是⼀个集群的⽂件系统,⽀持PB级的数据量。
GlusterFS 通过RDMA和TCP/IP⽅式将分布到不同服务器上的存储空间汇集成⼀个⼤的⽹络化并⾏⽂件系统。
Ceph 是新⼀代开源分布式⽂件系统,主要⽬标是设计成基于POSIX的没有单点故障的分布式⽂件系统,提⾼数据的容错性并实现⽆缝的复制。
Lustre 是⼀个⼤规模的、安全可靠的、具备⾼可⽤性的集群⽂件系统,它是由SUN公司开发和维护的。
该项⽬主要的⽬的就是开发下⼀代的集群⽂件系统,⽬前可以⽀持超过10000个节点,数以PB的数据存储量。
Alluxio 前⾝是Tachyon,是以内存为中⼼的分布式⽂件系统,拥有⾼性能和容错能⼒,能够为集群框架(如Spark、MapReduce)提供可靠的内存级速度的⽂件共享服务。
PVFS 是⼀个⾼性能、开源的并⾏⽂件系统,主要⽤于并⾏计算环境中的应⽤。
PVFS特别为超⼤数量的客户端和服务器端所设计,它的模块化设计结构可轻松的添加新的硬件和算法⽀持。
数据存储MongoDB 是⼀个基于分布式⽂件存储的数据库。
由C++语⾔编写。
旨在为web应⽤提供可扩展的⾼性能数据存储解决⽅案。
介于关系数据库和⾮关系数据库之间的开源产品,是⾮关系数据库当中功能最丰富、最像关系数据库的产品。
Redis 是⼀个⾼性能的key-value存储系统,和Memcached类似,它⽀持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。
Redis的出现,很⼤程度补偿了memcached这类key/value存储的不⾜,在部分场合可以对关系数据库起到很好的补充作⽤。
《大数据技术基础》-课程教学大纲

《大数据技术基础》课程教学大纲一、课程基本信息课程代码:16176903课程名称:大数据技术基础英文名称:Fundamentals of Big Data Technology课程类别:专业课学时:48学分:3适用对象: 软件工程,计算机科学与技术,大数据管理考核方式:考核先修课程:计算机网络,云计算基础,计算机体系结构,数据库原理,JA V A/Python 程序设计二、课程简介当前在新基建和数字化革命大潮下,各行各业都在应用大数据分析与挖掘技术,并紧密结合机器学习深度学习算法,可为行业带来巨大价值。
这其中大数据处理与开发框架等大数据技术是进行数字化,数智化应用建设的核心和基础,只有努力提升大数据处理与开发技术与性能,建立行业数字化和智能化转型升级才能成功。
大数据处理与开发技术是新基建和数字化革命核心与基础。
大数据技术基础课程,为学生搭建起通向“大数据知识空间”的桥梁和纽带,以“构建知识体系、阐明基本原理、引导初级实践、了解相关应用”为原则,为学生在大数据领域“深耕细作”奠定基础、指明方向。
课程将系统讲授大数据的基本概念、大数据处理架构Hadoop、分布式文件系统HDFS、分布式数据库HBase、NoSQL数据库、云数据库、分布式并行编程模型MapReduce、基于内存的大数据处理架构Spark、大数据在互联网、生物医学和物流等各个领域的应用。
在Hadoop、HDFS、HBase、MapReduce、Spark等重要章节,安排了入门级的实践操作,让学生更好地学习和掌握大数据关键技术。
同时本课程将介绍最前沿的业界大数据处理与开发技术和产品平台,包括阿里大数据服务平台maxcompute,华为大数据云服务平台FusionInsight,华为高性能分布式数据库集群GaussDB等业界最先进技术,以及国家大数据竞赛平台网站和鲸社区。
让学生学以致用,紧跟大数据领域最领先技术水平,同时,面对我国民族企业,头部公司在大数据领域取得的巨大商业成功与前沿技术成果应用产生强烈民族自豪感,为国家数字化经济与技术发展努力奋斗,勇攀知识高峰立下志向。
大数据导论考试 押题

大数据导论考试押题一、选择题(每题2分,共40分)以下哪项不是大数据的特征?A. 体积大B. 速度快C. 结构化D. 价值密度低大数据技术中,用于实时处理流数据的框架是?A. HadoopB. Spark StreamingC. KafkaD. Cassandra在大数据处理流程中,哪个步骤负责数据的清洗和转换?A. 数据采集B. 数据存储C. 数据预处理D. 数据分析以下哪个不是大数据应用领域的例子?A. 电子商务推荐系统B. 社交媒体分析C. 传统数据库管理D. 智慧城市交通管理Hadoop分布式文件系统(HDFS)的设计初衷是为了解决什么问题?A. 单节点存储容量的限制B. 网络传输速度慢C. 数据备份和恢复D. 数据加密和安全二、判断题(每题1分,共10分)大数据是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的庞大、复杂数据的集合。
()NoSQL数据库比传统关系型数据库更适合处理大数据。
()数据挖掘是大数据应用的核心,但不需要依赖任何算法。
()三、简答题(每题5分,共20分)简述大数据的四个主要特征(4V)。
描述Hadoop生态系统的两个核心组件及其作用。
列举三种常见的大数据存储技术,并简要说明其应用场景。
谈谈大数据对现代企业和社会的影响。
四、案例分析题(每题10分,共30分)某电商平台想要提升用户购物体验,计划利用大数据技术进行商品推荐。
请分析该平台可能面临的大数据挑战,并提出解决方案。
某医疗机构计划构建一个大数据平台,用于分析患者医疗数据,以提升医疗服务质量。
请设计一个初步的大数据架构,并说明其关键组件和功能。
假设你是一家大数据公司的数据分析师,公司最近收集了大量的社交媒体数据。
请提出一种分析方法,用于挖掘这些数据中的有价值信息,并给出可能的应用场景。
大数据_hadoop_分布式文件系统

2.HDFS
HDFS(Hadoop Distributed File System)是Hadoop项目 的核心子项目,是Hadoop主要应用的一个分布式文件系统。 注:HDFS只是Hadoop抽象文件系统的一个实例,还包括本地 文件系统、HFTP、S3等。
一、Hadoop文件系统
1.Hadoop文件系统
二、HDFS简介
1.HDFS
HDFS是基于流数据模式访问和处理超大文件的需求而开 发的,它可以运行于廉价的商用服务器上。
2.HDFS的主要特点:
(1)处理超大文件 实际应用中,HDFS已经用来存储PB级的数据了。 (2)流式的访问数据 运行在HDFS上的应用程序必须流式地访问他们的数据集。 HDFS的设计适合批量处理,而不是用户交互式的。重点是数 据吞吐量(通常分析任务都会涉及数据集的大部分数据不适合低延迟数据访问
HDFS是为了处理大型数据集分析任务,主要是为了达到 高的数据吞吐量而设计的,这就要求可能以高延迟为代价。 注:对于低延迟的访问需求,HBase是更好地选择。
(2)无法高效存储大量小文件 Hadoop中由namenode负责将文件系统中的元数据存储在 内存中,因此文件系统存储的文件总数受限于namenode的内 存容量。当存储大量的小文件时,会大大增加namenode的工 作压力,检索处理元数据所需的时间就会很长。
四、HDFS的基本操作
1.HDFS命令行操作
可以通过命令行接口和HDFS进行交互。
(1)下面以单机上运行Hadoop、执行单机伪分布为 例:
在单机伪分布中需要修改两个配置属性: ① 修改属性: 令 =hdfs://localhost/ 注:hadoop默认使用HDFS文件系统;在本机localhost运行 HDFS,其端口默认采用8020.
数据科学与大数据技术专业学什么

数据科学与大数据技术专业学什么引言数据科学与大数据技术是当今信息时代的热门专业,其涉及数据处理、数据分析、机器学习以及数据挖掘等相关内容。
本文将介绍数据科学与大数据技术专业的主要学习内容,以及相关的知识和技能要求。
数据科学基础1.数据结构与算法:学习常见的数据结构和算法,如数组、链表、树、图等,掌握算法的设计与分析方法,为数据处理和分析奠定基础。
2.数据库原理与技术:学习关系数据库的原理和SQL语言,了解数据库的设计和优化方法,熟悉NoSQL数据库的使用,掌握数据存储和管理的技术。
数据分析与挖掘1.数据清洗与预处理:学习如何处理原始数据中的噪声、缺失值和异常值,掌握数据清洗的方法和工具,确保数据的质量和可靠性。
2.数据可视化:学习利用图表、图形和可视化工具展现数据,以便更好地理解和传达数据的信息和洞见。
3.统计分析:学习统计学的基本概念和方法,掌握常见的统计分析技术,如假设检验、方差分析和回归分析,以支持数据相关结论和预测。
4.机器学习:学习机器学习的理论和算法,包括监督学习、无监督学习和强化学习等,熟悉常见的机器学习模型和算法,并能应用到实际场景中。
大数据技术1.分布式系统:学习分布式存储和计算的原理和技术,如Hadoop和Spark等,掌握分布式文件系统和分布式计算框架的使用。
2.大数据处理:学习大数据处理的方法和工具,如MapReduce和Hive等,熟悉大规模数据处理的技术和实践。
3.数据仓库与数据湖:学习数据仓库和数据湖的概念和设计原理,了解数据集成、数据转化和数据建模的方法。
4.数据流处理:学习流式数据处理和实时计算的技术,如Flink和Kafka 等,了解实时数据分析和处理的方法。
编程与工具1.编程语言:熟练掌握至少一种主流编程语言,如Python或R,能够编写数据处理和分析的代码。
2.数据科学工具:掌握常用的数据科学工具和库,如NumPy、Pandas、Scikit-learn等,能够使用它们处理和分析数据。
HDFS体系架构汉化文档

介绍Hadoop分布式文件系统(HDFS)是一种旨在在商品硬件上运行的分布式文件系统。
它与现有的分布式文件系统有许多相似之处。
但是,与其他分布式文件系统的区别很明显。
HDFS具有高度的容错能力,旨在部署在低成本硬件上。
HDFS提供对应用程序数据的高吞吐量访问,并且适用于具有大数据集的应用程序。
HDFS放宽了一些POSIX要求,以实现对文件系统数据的流式访问。
HDFS最初是作为Apache Nutch Web搜索引擎项目的基础结构而构建的。
HDFS是Apache Hadoop Core项目的一部分。
项目URL是/。
NameNode和DataNodesHDFS具有主/从体系结构。
HDFS群集由单个NameNode和管理文件系统名称空间并控制客户端对文件的访问的主服务器组成。
此外,还有许多数据节点,通常是集群中每个节点一个,用于管理与它们所运行的节点相连的存储。
HDFS公开了文件系统名称空间,并允许用户数据存储在文件中。
在内部,文件被分成一个或多个块,这些块存储在一组DataNode中。
NameNode执行文件系统名称空间操作,例如打开,关闭和重命名文件和目录。
它还确定块到DataNode的映射。
数据节点负责处理来自文件系统客户端的读写请求。
DataNode还根据NameNode的指令执行块创建,删除和复制。
NameNode和DataNode是为在普通机器上运行而设计的软件。
这些机器通常运行GNU/Linux操作系统(OS)。
HDFS是使用Java语言构建的;任何支持Java的机器都可以运行NameNode或DataNode软件。
使用高度可移植的Java语言意味着HDFS可以部署在各种机器上。
一个典型的部署有一个专用的机器,它只运行NameNode软件。
集群中的其他每台机器都运行DataNode软件的一个实例。
该体系结构不排除在同一台机器上运行多个datanode,但在实际部署中很少会出现这种情况。
集群中单个NameNode的存在极大地简化了系统的体系结构。
2022年职业考证-软考-系统规划与管理师考试全真模拟全知识点汇编押题第五期(含答案)试卷号:25

2022年职业考证-软考-系统规划与管理师考试全真模拟全知识点汇编押题第五期(含答案)一.综合题(共15题)1.单选题关于IT服务资源要素设计的描述,不正确的是()。
问题1选项A.服务方为用户和IT服务组织提供一个统一联系点B.在服务工具设计时,应考虑工具的通用性和集成性C.识别监控对象,编制监控指标计划属于解决问题的技术D.备件可用性管理的目的是为了确保备件功能满足服务要求【答案】C【解析】资源要素:包括服务台(选项A)、工具(选项B)、备件及备件库(选项D)、知识库四个方面。
选项C属于技术要素的发现问题的技术,不属于资源要素的内容。
2.单选题IT运维服务质量改进中最常用的步骤是()。
问题1选项A.策划-实施-检查-改进B.实施-检查-改进-策划C.检查-策划-改进-实施D.检查-策划-实施-改进【答案】A【解析】PDCA:规划、实施、检查、处置。
3.单选题ITIL 2011涉及的流程不包含()。
问题1选项A.需求管理B.战略制定C.服务验证与测试D.审计管理【答案】D【解析】ITIL 20115个阶段:服务战略、服务设计、服务转换、服务运营和服务的持续改进4个职能:服务台、运营管理、应用管理、技术管理26个流程:事件管理、事故管理、请求管理、问题管理、资产与配置管理、变更管理、发布与部署管理、服务级别管理、连续性管理、可用性管理、能力管理、IT服务财务管理、信息安全管理、服务报告、业务关系管理、供应商管理、知识管理、服务目录管理、战略制订、需求管理、服务组合管理、评估、服务验证与测试、转换规划与支持、访问管理、设计协调4.单选题关于服务回顾的描述中,不正确的是()。
问题1选项A.服务回顾工作可与服务质量评审会议一起举行,供方和客户一同参与B.与客户服务回顾的内容包括合同执行、目标达成、工程师KPI等情况C.与客户高层进行年度服务回顾时,应回顾项目的整体交付实施情况D.为避免服务回顾延期,应设置回顾服务完成率的考核【答案】B【解析】服务回顾工作可与服务质量评审会议一起举行,由服务提供方系统规划与管理师与业务关系经理,双方相关人员参与。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Hadoop分布式文件系统:结构与设计1. 介绍Hadoop 分布式文件系统(HDFS)是一个设计为用在普通硬件设备上的分布式文件系统。
它与现有的分布式文件系统有很多近似的地方,但又和这些文件系统有很明显的不同。
HDFS 是高容错的,设计为部署在廉价硬件上的。
HDFS对应用程序的数据提供高吞吐量,而且适用于那些大数据集应用程序。
HDFS开放了一些POSIX的必须接口,容许流式访问文件系统的数据。
HDFS最初是为了Apache 的Nutch网络搜索引擎项目的下层构件而设计的。
是Hadoop项目的一部分,而这又是Apache的Lucene项目的一部分。
本项目的地址是:http://projec /projects/hadoop.html。
2. 假设与目标2.1. 硬件错误硬件错误是正常的,而不是异常。
HDFS实例由成百上千个服务器组成,每个都存储着文件系统的一部分数据。
事实上,这就会有大量的组件,而每个组件出故障的可能性都很大,这意味着HDFS总有一些组件是不能工作的。
因此,检测错误并快速自动恢复就成了HDFS的核心设计目标。
2.2. 流式数据访问运行在HDFS上的应用程序需要流式的访问它们的数据集,它们也不是通常运行在普通文件系统上的普通应用程序。
HDFS为了那些批量处理而设计的,而不是为普通用户的交互使用。
强调的是数据访问的高吞吐量而不是数据访问的低反应时间。
POSIX强加的很多硬性需求是HDFS上应用程序所不需要的,这些POSIX语义在一些关键环境下被用来提高数据的吞吐频率。
2.3. 大数据集运行在HDFS上的应用程序使用大数据集。
HDFS一个典型的文件可能是几GB的或者几TB的。
因此,HD FS适用于大文件。
这将提供高集成带宽,并在一几集群中提供上百个结点。
一个实例可能支持上千万个文件。
2.4. 简单一致性模型HDFS的应用程序需要对文件实行一次性写,多次读的访问模式。
文件一旦建立后写入,文件就不需要再更改了。
这样的假定简化了数据一致性问题并使高数据吞吐量成为可能。
MapReduce程序或者网络爬虫程序就很适合使用这样的模型。
当然未来计划支持增量写。
2.5. 移动计算环境比移动数据划算如果就在数据的旁边就执行对这些数据的操作,那么程序所使用的设备就会很高效。
这当文件相当巨大的时候就尤其正确。
这可以减少网络的拥塞和提高系统的吞吐量。
这个假设还意味着,常常是把计算迁移到数据存储的近处更好,而不是把数据传输到程序运行的地方。
HDFS提供了程序接口以便把他们自己移动到数据存储的地方执行。
2.6. 跨硬件和软件平台的移动HDFS设计为容易的从一个平台移动到另一个平台。
这有助于HDFS被采用做为一个大程序集合的工作平台。
3. 名字结点和数据结点HDFS 是主/从结构的。
一个集群有一个名字结点,也就是主控制服务器,负责管理文件系统的名字空间并协调客户对文件的访问。
还有一堆数据结点,一般一个物理结点上部署一个,负责它们所在的物理结点上的存储管理。
HDFS开放文件系统的名字空间以便让用户数据存储的文件中。
内部,一个文件被分割为一个或者多个数据块,这些数据块存储在一组数据结点中。
名字结点执行文件系统的名字空间操作,比如打开、关闭、重命名文件或目录,还决定数据块从数据结点的映射。
数据结点负责提供客户的读写请求。
数据结点还依照名字结点的指令执行数据块的创建、删除复制工作。
名字结点和数据结点是设计为运行在普通机器上的软件组件。
这些机器大多运行GNU/Linux操作系统。
HDF S使用JAVA语言来实现;任何支持JAVA的机器都可以运行名字结点和数据结点软件。
使用高度可以移植的JAV A语言意味着HDFS可以被很多种机器使用。
一个典型的部署有一台指定的机器只运行名字结点,体系结构并不排除在那台机器上也运行数据结点,但是现实中的部署很少那样使用。
一个集群中只有一个名字结点大大简化了系统机构。
名字结点做为所有系统元数据的存储和仲裁者。
系统这样设计就会使用户数据从不会流经名字结点。
4. 文件系统的名字空间HDFS 支持传统的文件组织体系结构。
用户或者程序可以创建目录,并在目录中存储文件。
名字空间的结构和大多现有文件系统类似。
你可以创建、删除文件,把文件从一个目录移动到另一个目录,或者重命名文件。
HDFS还没有实现用户配额和访问权限控制,也不支持硬连接和软连接。
当然体系也不妨碍实现这些特性。
名字结点维护系统的名字空间,它将记录名字空间内的任何改动或者名字空间本身的属性改动。
用户可以指定HDFS中文件复制的份数,这个份数称为复制因子,由名字结点记录。
5. 数据复制HDFS 被设计为在一个大集群里跨机器、可靠的存储非常大的文件。
每个文件都存储为一系列的块,同一文件中除最后一块以外的所有块都是一样大的。
文件的块都通过复制来保证容错。
每个文件的块的大小和复制因子都是可以配置的。
程序可以指定文件复制的次数,复制因子可以在文件创建时候指定,也可以在以后指定。
HDFS的文件都是一次性写入的,并且严格限制任何时候都只有一个写用户。
名字结点根据块复制状态做出所有决定,它会周期的收到来自集群内数据结点的心跳和块报告。
能收到心跳证明数据结点工作是正常的。
一个块报告应该包括数据结点上所有块的列表。
5.1. 复制品的位置:婴儿起步复制品的位置对于HDFS的可靠性和性能来说是很关键的,和其他分布式文件系统最大的区别就是它能优化复制品的位置,这个特性需要大量的调整和经验。
小心衡量复制品的放置是为了提高数据的可靠性、可用性、网络带宽利用率。
目前对于复制品放置的策略只是朝这个方向努力的第一步,短期的目标是要在生产系统中验证,更多学习它的行为,并建立一个基础来测试和研究更复杂的策略。
大的HDFS实体在一大堆机器上运行着,这些机器可能要跨几个机柜来放。
不同柜子里的两个结点通信的时候要通过交换机。
大多数情况下,同一个机柜的机器间的带宽比不同机柜的机器间的带宽要大。
启动的时候,每个数据结点确定自己所在的机柜并通知名字结点注册表中此机柜的ID。
HDFS提供一些AP I,以方便可拆卸模块用来确定自己所在的机柜的ID。
有个简单但不是很理想的策略是:在不同机柜上放置复制品。
这防止在整个机柜宕掉的时候丢失数据,还容许在读数据的时候使用多个机柜的带宽。
这个策略还可以均匀的放置复制品,以便在组件失败的时候平衡负载。
但是,这个策略会增加写的代价,写操作需要跨机柜的传输数据块。
对于一般的情况,当复制因子是3的时候,HDFS的部署策略是:在本地机柜放置一个结点,此机柜再放一个不同的结点,然后在另一个机柜放一个结点。
这样的策略砍掉了机柜内部写操作的传输,这将提高了写的性能。
机柜坏掉的概率比一个结点坏掉的概率要小的多;这个策略不会影响数据的可靠性和可用性的保证。
实际上,当从两个不同的机柜上读数据块的时候,对比从三个上读,并不减少总使用带宽。
使用此策略,文件的复制品不能跨机柜均匀的分配。
1/3的复制品放在一个结点上,(这样就有)2/3复制品放在同一个机柜上,最后的1/3均匀的放在其他的机柜的结点上。
这个策略提高了写的性能而没有对数据可靠性或读性能造成损失。
当前,缺省的复制品放置策略,也就是这里讨论的策略还是一个正在进行中的工作。
5.2. 复制品选择为了减少总带宽消耗和读延时,HDFS会试图使用离读客户最近的复制品来满足读请求。
如果在读结点的同一个机柜有一个复制品,那么这个复制品将是最合适满足这个读请求的。
如果HDFS机群跨了多个数据中心,那么驻留在本地数据中心的复制品就比远程的复制品更合适。
5.3. 安全模式启动的时候,名字结点进入一个特殊的状态叫做安全模式,此时不会出现数据块的复制。
名字结点会收到数据结点的心跳和数据块报告。
数据块报告包括一个数据结点所拥有的数据块列表。
每个数据块里都有指定数目的复制品。
当某个名字结点登记过数据复制品的最小数目,数据块就被认为是安全复制了。
在那么可配置百分比安全复制的数据块在名字结点登记后(加上附加的30秒),名字结点退出安全模式。
它将确定数据块(如果有的话)比指定的复制品数据要少的那些,然后对这些数据块进行复制。
6. 文件系统元数据的持久性HDFS 的命名空间存储在名字结点上,名字结点使用叫做“编辑日志”的事务日志来持久化记录文件系统元数据的每次变化。
例如,当在HDFS中创建一个文件的时候,名字结点就会在“编辑日志”中插入一条记录。
类似的,当文件的复制因子也会引起一条新的记录被插入“编辑日志”。
名字结点使用本地操作系统的文件才存储“编辑日志”。
整个文件系统的命名空间,包括块到文件的影射,文件系统的属性,都存储在一个叫做“文件系统镜象”的文件里,这个文件也是放在名字结点本地操作系统上的。
名字结点在内存里保持一份含有整个系统的命名空间以及文件块影射的镜象。
关键的元数据条目设计的很简洁,这样一个有4GB内存的名字结点就足以支持大量的目录和文件。
当名字结点启动的时候,它会从磁盘读取“文件系统镜象”和“编辑日志”,把“编辑日志”的事务都应用到内存中的文件镜象上,然后在新的文件镜象刷新到硬盘上,这时因为事务因为已经被持久化了,就可以把旧的“编辑日志”截短了。
这个过程叫做检查点。
在当前的实现中,检查点只出现在名字结点启动的时候,关于在未来支持周期性检查点的工作还在进行中。
数据结点使用本地文件系统来存储HDFS的数据。
数据结点对HDFS的文件一无所知,它只是用一个个文件存储HDFS的每个数据块。
数据结点并不在同一个目录中创建所有的文件,而是用一个启发式算法来确定每个目录的最佳文件个数,并适当的建立字目录。
在同一个目录建立所有的文件不是最理想的,这是因为本地文件系统可能不支持在同一个目录放数目巨多的文件。
当数据结点启动的时候,它会遍历本地文件系统,会产生一份HDFS数据块和本地文件对应关系的列表,并把这个报告发给名字结点:这就是块报告。
7. 通信协议HDFS 的所有通信协议都是在TCP/IP协议上层分层的。
客户去连接名字结点上一个可配置的TCP端口,使用“客户协议”与名字结点交互。
数据结点和名字结点使用“数据结点协议”交互。
一个远程过程调用(RPC)则封装了这两个协议。
按照设计,名字结点永远不会启动任何的RPC,它只负责响应数据结点或客户发起的请求。
8. 健壮性HDFS的首要目的就是要保证数据的可靠性,甚至出错的时候也是。
三个最常见的错误就是,名字结点或数据结点故障,和网络断开。
8.1.数据磁盘故障,心跳和重复制每个数据结点都周期性的向名字结点发送心跳数据包。
网络阻断可能会造成一些数据结点失去到名字结点的连接。
名字结点通过心跳的丢失来检测这样的情况。
名字结点会标记没有最近没有心跳的数据结点为宕机,并不转发给他们任何新的IO请求。