h5响应式网站建设代理,公网主机上做的网站如果访问,企业电话查询黄页,电影分享网站源码三、Hadoop分布式文件系统
1. 产生背景 数据量越来越大#xff0c;一台独立的计算机已经无法存储所有的数据----将大规模的数据存储到成百上千的计算机中------为了解决数据管理以及维护极其繁琐与低效------分布式文件系统 分布式文件系统是管理网络中跨多台计算机…三、Hadoop分布式文件系统
1. 产生背景 数据量越来越大一台独立的计算机已经无法存储所有的数据----将大规模的数据存储到成百上千的计算机中------为了解决数据管理以及维护极其繁琐与低效------分布式文件系统 分布式文件系统是管理网络中跨多台计算机存储的文件系统 GFS谷歌公司开发了第一个大规模商业化应用的分布式文件系统
2. 概述
2.1 分布式文件系统简介 普通文件系统一般会把磁盘空间划分为每512字节一组称为“磁盘块”它是文件系统读写操作的最小单位文件系统的块Block通常是磁盘块的整数倍即每次读写的数据量必须是磁盘块大小的整数倍以块为单位进行读写 分布式文件系统也采用了块的概念文件被分成若干个块进行存储块是数据读写的基本单元只不过分布式文件系统的块要比普通文件系统中的块大很多比如HDFS默认的一个块的大小是64MB而且与普通文件系统不同的是在分布式文件系统中如果一个文件小于一个数据块的大小它不会占用整个数据块的储存空间。依然是块为基本单元但块更大同时不满一个块的文件也不会占用整块存储空间其他文件依然可以进行填充 块比较大的目的最小化寻址开销HDFS寻址开销包括磁盘的寻道开销和数据块的定位开销 也不能太大会影响并行的速度 设计客户机/服务器Client/Server客户端以特定的通信协议通过网络与服务器建立连接提出文件访问请求客户端和服务器可以通过设置访问权来限制请求方对底层数据存储块的访问 物理结构由计算机集群中的多个节点构成的节点分为两类 主节点Master Node/名称节点Name Node负责文件和目录的创建、删除和重命名等同时管理着数据节点和文件块的映射关系从节点Worker Node/ 数据节点DataNode负责数据的存储和读取。 存储方式多副本存储文件被复制多次被放在不同的位置从而能够保障数据的完整性
2.2 HDFS简介
**HDFSHadoop Distribute File System**是大数据领域一种非常可靠的存储系统它以分布式方式存储超大数据量文件但它并不适合存储大量的小数据量文件。HDFS要实现的目标 **兼容廉价的硬件设备**实现在硬件故障的情况下也能保障数据的完整性**流数据读写**不支持随机读写的操作**大数据集**数据量一般在GB、TB以上的级别**简单的文件模型**一次写入、多次读取**强大的跨平台兼容性**采用Java语言实现 HDFS的局限性 不适合低延迟数据访问HDFS主要是面向大规模数据批量处理而设计的采用流式数据读取具有很高的数据吞吐率但是这也意味着较高的延迟因此HDFS不适合用在需要较低延迟如数十毫秒的应用场合。**无法高效存储大量小文件**小文件是指文件大小小于一个块的文件HDFS无法高效存储和处理大量的小文件过多小文件会给系统扩展性和性能带来诸多问题 HDFS采用名称节点NameNode来管理文件系统的元数据这些元数据被保存在内存中使客户端可以快速获取文件实际存储位置。用MapReduce处理大量小文件时会产生过多的Map任务线程管理开销会大大增加因此处理大量小文件的速度远远低于处理同等大小的大文件的速度访问大量小文件的速度远远低于访问大文件的速度因为访问大量小文件需要不断从一个数据节点跳到另一个数据节点严重影响性能。 不支持多用户写入及任意修改文件HDFS只允许一个文件有一个写入者不允许多个用户对同一个文件执行写操作而且只允许对文件执行追加操作不能执行随机写操作。
3. HDFS的体系结构
结构模型主从Master/Slave结构模型一个HDFS集群包括一个名称节点和若干数据节点名称节点作为中心服务器负责管理文件系统的命名空间及客户端对文件的访问数据节点负责处理文件系统客户端的读/写请求在名称节点的统一调度下进行数据块的创建、删除和复制等操作每个数据节点会周期性地向名称节点发送**“心跳信息**报告自己的状态没有按时发送心跳信息的数据节点会被标记为“宕机”不会再给它分配任何I/O请求。用来判断数据节点是否正常工作的方式 文件存储一个文件被分为若干数据块-----若干数据块存储到若干数据节点上访问客户端-----文件名-----名称节点------根据文件名找到------数据块 ------数据块存储信息-------数据节点的位置------节点位置信息------客户端 —直接访问对应位置–获得数据
4. HDFS的存储原理
4.1 数据的冗余存储
目的保证系统的容错性和可用性冗余存储的方式多副本方式即一个数据块的多个副本会被分布到不同的数据节点上
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-FEVeGbzh-1676720254593)(null)]
优点 加快数据传输速度当多个客户端需要同时访问同一个文件时可以让各个客户端分别从不同的数据块副本中读取数据这就大大加快了数据传输速度实现了并行操作。容易检查数据错误HDFS的数据节点之间通过网络传输数据采用多个副本可以很容易判断数据传输是否出错。保证数据的可靠性即使某个数据节点出现故障失效也不会造成数据丢失。
4.2 数据存取策略
4.2.1 数据存放 采用了以机架Rack为基础的数据存放策略。一个HDFS集群通常包含多个机架不同机架之间的数据通信需要经过交换机或路由器同一机架的不同机器之间数据通信不需要交换机或路由器因此同一机架中不同机器之间的通信要比不同机架之间机器的通信带宽大。 HDFS默认每个数据节点都是在不同机架上的 缺点 写入数据的时候不能充分利用同一机架内部机器之间的带宽 优点 可以获得很高的数据可靠性即使一个机架发生故障位于其他机架上的数据副本仍然可用在读数据的时候可以在多个机架上并行读取数据大大提高了数据读取速度。可以更容易实现系统内部负载均衡和错误纠正。 HDFS默认的冗余复制因子是 3每一个文件会被同时保存到 3 个地方其中两份副本放在同一个机架的不同机器上面第三个副本放在不同机架的机器上面。 HDFS副本的存放策略是 如果是在集群内发起写操作请求则把第1个副本放置在发起写操作请求的数据节点上实现就近写入数据。如果是来自集群外部的写操作则从集群内部挑选一台磁盘空间较为充足、CPU不太忙的数据节点作为第1个副本的存放地。第2个副本会被放置在与第1个副本不同的机架的数据节点上。第3个副本会被放置在与第1个副本相同的机架的其他节点上。如果还有更多的副本则继续从集群中随机选择数据节点进行存放
4.2.2 数据读取
HDFS提供了一个API用于确定一个数据节点所属的机架的ID客户端可以调用该API获取自己所属机架的ID。
4.2.3 数据复制
流水线复制当客户端要向HDFS中写入一个文件时这个文件会首先被写入本地并被切分成若干个块每个块的大小是由HDFS的设定值来决定。每个块都向HDFS集群中的名称节点发起写请求名称节点会根据系统中各个数据节点的使用情况选择一个数据节点列表返回给客户端然后客户端就把数据首先写入列表中的第1个数据节点同时把列表传给第1个数据节点当第1个数据节点接收到一个块的数据的时候将其写入本地并且向列表中的第2个数据节点发起连接请求把自己已经接收到的数据和列表传给第2个数据节点当第2个数据节点接收到数据的时候将其写入本地并且向列表中的第3个数据节点发起连接请求依次类推列表中的多个数据节点形成一条数据复制的流水线。最后当文件写完的时候数据复制也同时完成。
4.3 数据错误与恢复
4.3.1 名称节点出错
保证名称节点安全的方式 把名称节点上的元数据信息同步存储到其他文件系统中运行一个第二名称节点当名称节点宕机以后利用第二名称节点中的元数据信息进行系统恢复仍然会丢失部分数据 一般是两者结合使用当名称节点宕机时首先到远程挂载的网络文件系统中获取备份的元数据信息放到第二名称节点上进行恢复并把第二名称节点作为名称节点来使用。
4.3.2 数据节点出错
每个数据节点会定期向名称节点发送“心跳”信息向名称节点报告自己的状态。当数据节点发生故障或者网络发生断网时名称节点就无法收到来自这些节点的“心跳”信息这时这些节点就会被标记为“宕机”节点上面的数据都会被标记为“不可读”名称节点不会再给它们发送任何I/O请求与HDFS的体系结构下的内容一致
4.3.3 数据出错
网络传输和磁盘错误等因素都会造成数据错误。客户端在读取到数据后会采用md5和sha1对数据块进行校验以确保读取到正确的数据。在文件被创建时客户端会对每一个文件块进行信息摘录并把这些信息写入到同一个路径的隐藏文件里面。当客户端读取文件的时候会先读取该信息文件然后利用该信息文件对每个读取的数据块进行校验。如果校验出错客户端就会请求到另外一个数据节点读取该文件块并且向名称节点报告这个文件块有错误名称节点会定期检查并且重新复制这个块。
5. HDFS的数据读取过程
参考此链接
6. 编程实战之后会统一完成
参考自DataWhale学习资料