Hadoop可靠性来源于它的分布式文件系统(HDFS)和MapReduce框架。HDFS是一个分布式文件系统,它将数据存储在多台服务器上,并使用多个副本来保证数据的安全性和可靠性。这样,即使一台服务器出现故障,也不会影响整个集群的运行。此外,HDFS还具有自动故障转移功能,当一台服务器出现故障时,它会自动将其数据转移到其他服务器上。
MapReduce是一个分布式计算框架,它将大量的工作分割成小任务并在多台服务器上进行并行处理。如果一台服务器出现故障,MapReduce会自动重新分配该任务的工作量到其他可用的服务器上。此外,MapReduce还具有自我修复能力,如果在执行过程中出现问题(例如内存不足或者任务执行时间过长),它会自动释放内存或者重新启动任务来保证作业的正常执行。
HDFS 的可靠性主要有以下几点:
可以在 hdfs-site.xml 中设置复制因子指定副本数量
所有数据块都可副本
DataNode 启动时,遍历本地文件系统,产生一份 HDFS 数据块和本地文件的对应关系列表 (blockreport) 汇报给 Namenode
HDFS 的"机架感知",通过节点之间发送一个数据包,来感应它们是否在同一个机架
一般在本机架放一个副本,在其他机架再存放一个副本,这样可以防止机架失效时丢失数据,也可以提高带宽利用率
NameNode 周期性从 DataNode 接受心跳信息和块报告
NameNode 根据块报告验证元数据
没有按时发送心跳的 DataNode 会被标记为宕机,不会再给他任何 I/O 请求
如果 DataNode 失效造成副本数量下降,并且低于预先设定的值,NameNode 会检测出这些数据库,并在合适的时机重新复制
引发重新复制的原因还包括数据副本本身损坏,磁盘错误,复制因子被增大等
NameNode 启动时会先经过一个 "安全模式" 阶段
安全模式阶段不会产生数据写
在此阶段 NameNode 收集各个 DataNode 的报告, 当数据块达到最小副本数以上时,会被认为是"安全"的
在一定比例(可设置) 的数据块被确定为"安全" 后 ,在过若干时间,安全模式结束
当检测到副本数不足的数据块时,该块会被复制,直到达到最小副本数
在文件创立时,每个数据块都产生效验和
效验和会作为单独一个隐藏文件保存在命名空间下
客户端获取数据时可以检查效验和是否相同,从而发现数据块是否损坏
如果正在读取的数据块损坏,则可以继续读取其他副本
删除文件时,其实是放入回收站 /trash
回收站里的文件是可以快速恢复的
可以设置一个时间值,当回收站里文件的存放时间超过了这个值,就被彻底删除,并且释放占用的数据块
映像文件和事物日志是 NameNode 的核心数据.可以配置为拥有多个副本
副本会降低 NameNode 的处理速度,但增加安全性
NameNode 依然是单点,如果发生故障要手工切换
Node节点下的Container管理启动时向ResourceManager注册并定时发送心跳消息,等待ResourceManager的指令监控Container的运行,维...
Object wx.getMenuButtonBoundingClientRect()基础库 2.1.0 开始支持,低版本需做兼容处理。获取菜单按钮(右上角胶囊按钮)的布...
MediaContainerwx.createMediaContainer()基础库 2.9.0 开始支持,低版本需做兼容处理。创建音视频处理容器,最终可将容器中的轨...
关键词:阻塞赋值,非阻塞赋值,并行过程性赋值是在initial或always语句块里的赋值,赋值对象是寄存器、整数、实数等类...