热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

HDFS简介

HDFS设计(Architecture)1.简介HDFS具有高容错性,设计用于低成本的硬件设备迅速发现错误,自动恢复是hdfs的核心设计目标擅长批处理数据而不是数据的低延时获取一次

HDFS设计(Architecture)


1. 简介



  1. HDFS具有高容错性,设计用于低成本的硬件设备

  2. 迅速发现错误,自动恢复是hdfs的核心设计目标

  3. 擅长批处理数据而不是数据的低延时获取

  4. 一次写入,多次读取;一个文件在创建后只能进行追加和截断操作而不能被更改;这一理念非常适用于MapReduce程序和网络爬虫


2.NameNode and DataNodes


2.1 NameNode



  1. 一个集群仅有一个,管理文件系统名称空间以及用户对文件的权限

  2. 决定了块与datanode的映射关系

  3. 通常情况下,一个集群中专门有一个节点来运行NameNode,而不再运行其他服务

  4. 储存所有hdfs的元数据(数据的相关信息)


2.2 DataNode:



  1. 通常集群中的每个节点(服务器)拥有一个,管理本节点上的数据

  2. 一个文件通常被切成多个块(block),存储在一系列DataNode中

  3. 负责响应用户对文件的读写请求

  4. 根据NameNode指示,完成块的创建、删除和备份

  5. 不储存任何HDFS文件的信息,只在本地存储数据真实信息


3. Data Replication



  1. 每个文件单独配置块大小和备份数量

  2. 一个文件的所有块(除去最后一个块)是相同大小

  3. NameNode周期性的接受来自集群中所有DataNodes的心跳(HeartBeat)和一个块报告(Blockreport);心跳表示DataNode正在正常工作,而块报告包含一个DataNode中的所有块


4. Replica Placement(副本放置)



  1. 大型HDFS实例运行在一个集群中的多个机架上,而在不同机架的两个节点沟通需要通过交换机(not good)

  2. 采用心跳感知机制


4.1 机架感知机制

原因:为了平衡数据的可靠性和写操作的花费

方法:默认副本数为3;




  1. 第一个副本在Client所处的节点上,若客户端在集群外,随机选一个;

  2. 第二个副本在另一个机架的随机一个节点

  3. 第三个副本在第二个副本所在机架的随机节点


注:NameNode不允许DataNode有两个相同的块,所以最大副本数量可根据DataNode数量决定。


5. 文件系统元数据的持久性


5.1 EditLog

存储对一每一个文件系统元数据做出的改变


5.2 FsImage

整个文件系统名称空间,包括块与文件的映射,文件系统属性


5.3 Checkpoint

背景:若每对文件做一次更改就写入到磁盘的FsImage中,会占用大量资源

解决方法:


启动时,从EditLog和FsImage中将名称空间与块映射读取到内存,将来自EditLog的所有事务写入到FsImage在内存中的代表,然后一起写入到磁盘上新的FsImage中,然后就可以截断老的EditLog。这个过程就称为检查点。

检查点在指定时间间隔或指定数量事务后触发。



6. 网络协议



  1. 所有HDFS协议建立在TCP/IP协议之上

  2. 客户通过配置好的tcp端口同NameNode通信

  3. Client通过ClientProtocol协议与NameNode通信,DataNode通过DataNode协议与NameNode通信

  4. RPC抽象包装了Client协议和DataNode协议

  5. NameNode从不初始化RPC,只接受来自DataNode和client的RPC请求


7. 健壮性


7.1 DataNode挂了

心跳机制告诉了namenode,namenode跟踪哪些块需要被再拷贝然后开始行动。


7.2 硬件挂了(来自DataNode的数据不完整)

客户端程序实现了checksum机制,当创建Hdfs文件时,会计算checksum,并存储在相同的Hdfs名称空间(就是Hdfs的同一个文件夹下),据此获得完整数据


7.3 硬件挂了(元数据没了)

高可用性(HA) ,启用多个NameNode

面试重点,我还没学到

推荐阅读
  • 本文详细介绍了在Linux虚拟化部署中进行VLAN配置的方法。首先要确认Linux系统内核是否已经支持VLAN功能,然后配置物理网卡、子网卡和虚拟VLAN网卡的关系。接着介绍了在Linux配置VLAN Trunk的步骤,包括将物理网卡添加到VLAN、检查添加的VLAN虚拟网卡信息以及重启网络服务等。最后,通过验证连通性来确认配置是否成功。 ... [详细]
  • 交换机配置:intg100unshintvlani1ipadd192.168.56.177qstelseuser-iv4authaaaproinsshupl3qsshuserpyt ... [详细]
  • 本文介绍了计算机网络的定义和通信流程,包括客户端编译文件、二进制转换、三层路由设备等。同时,还介绍了计算机网络中常用的关键词,如MAC地址和IP地址。 ... [详细]
  • 本文讨论了在openwrt-17.01版本中,mt7628设备上初始化启动时eth0的mac地址总是随机生成的问题。每次随机生成的eth0的mac地址都会写到/sys/class/net/eth0/address目录下,而openwrt-17.01原版的SDK会根据随机生成的eth0的mac地址再生成eth0.1、eth0.2等,生成后的mac地址会保存在/etc/config/network下。 ... [详细]
  • SpringMVC接收请求参数的方式总结
    本文总结了在SpringMVC开发中处理控制器参数的各种方式,包括处理使用@RequestParam注解的参数、MultipartFile类型参数和Simple类型参数的RequestParamMethodArgumentResolver,处理@RequestBody注解的参数的RequestResponseBodyMethodProcessor,以及PathVariableMapMethodArgumentResol等子类。 ... [详细]
  • 本文详细解析了vlan接口类型和划分的相关知识,包括access、trunk和hybrid接口类型的特点和功能,以及它们在数据包发送和接收过程中的处理方式。同时介绍了pvid的作用和使用方法,以及trunk接口在发送数据包时的处理规则。最后,还介绍了如何使所有vlan生效的方法。 ... [详细]
  • HSRP热备份路由器协议的应用及配置
    本文介绍了HSRP热备份路由器协议的应用及配置方法,包括设计目标、工作原理、配置命令等。通过HSRP协议,可以实现在主动路由器故障时自动切换到备份路由器,保证网络连通性。此外,还介绍了R1和R2路由器的配置方法以及Sw1和Sw2交换机的配置方法,最后还介绍了测试连通性和路由追踪的方法。 ... [详细]
  • 移动传感器扫描覆盖摘要:关于传感器网络中的地址覆盖问题,已经做过很多尝试。他们通常归为两类,全覆盖和栅栏覆盖,统称为静态覆盖 ... [详细]
  • CISCO ASA防火墙Failover+multiple context详细部署By 年糕泰迪[操作系统入门]
    一.文章概述本文主要就CISCOASA防火墙的高可用和扩张性进行阐述和部署。再cisco防火墙系列中主要有3种技术来实现高可用和扩张性。分别是Failover,multiplese ... [详细]
  • 对于开源的东东,尤其是刚出来不久,我认为最好的学习方式就是能够看源代码和doc,測试它的样例为了方便查看源代码,关联导入源代 ... [详细]
  • 本文由编程笔记#小编为大家整理,主要介绍了logistic回归(线性和非线性)相关的知识,包括线性logistic回归的代码和数据集的分布情况。希望对你有一定的参考价值。 ... [详细]
  • VScode格式化文档换行或不换行的设置方法
    本文介绍了在VScode中设置格式化文档换行或不换行的方法,包括使用插件和修改settings.json文件的内容。详细步骤为:找到settings.json文件,将其中的代码替换为指定的代码。 ... [详细]
  • 本人学习笔记,知识点均摘自于网络,用于学习和交流(如未注明出处,请提醒,将及时更正,谢谢)OS:我学习是为了上 ... [详细]
  • 【爬虫训练场】:分页爬虫案例设计Demo,Python Flask与MySQL的完美连接
    网站类应用,一定离不开MySQL,所以本案例将带着大家学习一下,通过Flask调用MySQL数据,并实现分页呈现。类被称作蓝图,它是一个存储操作方法的容器,Flask可以通过Blu ... [详细]
  • RabbitMq之发布确认高级部分1.为什么会需要发布确认高级部分?在生产环境中由于一些不明原因,导致rabbitmq重启,在RabbitMQ重启期间生产者消息投递失败,导致消息丢 ... [详细]
author-avatar
steveukuk
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有