「HDFS 原理与应用」(下)|青训营笔记

72 阅读3分钟

这是我参与「第四届青训营」笔记创作活动的的第11天!

前言

  1. 可扩展性:分布式存储系统需要具备横向扩张scale-out的能力
  2. 节点体系:常见的有主从模式、对等模式等,不管哪种模式,高可用是必须的功能
  3. 数据放置:系统是由多个节点组成,数据是多个副本存放时,需要考虑数据存放的策略
  4. 单机存储引擎:在绝大部分存储系统中,数据都是需要落盘持久化,单机引擎需要解决的是根据系统特点,如何高效得存取硬盘数据。

HDFS读写异常处理

HDSF写异常处理

Lease Recovery

情景:文件写了一半,client自己挂掉了,可能产生的问题: 副本不一致、Lease无法释放; 租约lease:Client要修改一个文件时,需要通过NameNode上锁,这个锁就是租约; 副本不一致:比较系统三个副本内容大小(长度),选择最小的作为最终版本更新,最终的写入结果; Lease无法释放:客户端定期续租,如果超过设定时间,踢掉挂掉的client。

Pipeline Recovery

情景:文件写入过程中,DataNode侧出现异常挂掉了; 异常出现的时机:创建连接时、数据传输时、complete阶段(DN完成落盘后向上(NameNode)报新块); 创建连接:重新选一个节点; 数据传输:如果有一个节点挂了,pipeline到重新构建阶段,将坏的节点摘除; complete阶段:pipeline重新构建,重新选节点。

HDFS读异常处理

Client读异常处理; 情景:读取文件的过程,DataNode侧出现异常挂掉了; 解决办法:节点Failover; 增强情景:节点半死不过,读取很慢--------------->节点切换; 检测出快/慢,客户端网络问题导致的慢(客户端不断切换节点)。

旁路系统与控制面建设

旁路系统

异步解决问题,这些问题不是马上出现,而是不断积累恶化,影响系统运行;简化了系统的实现; Balancer:均衡DataNode的容量; Mover:确保副本放置符合策略要求,NameNode选择块放在哪里,分布在不同DataNode,且在两个不同的机架上; 这些组件不运行不会马上影响读写操作,但是长时间会积累系统性问题,例如读写不均衡导致IO热点等。

控制面建设

保障系统稳定性;

可观测性设施:快速发现定位问题

*指标埋点

*数据采集

*访问日志

数据分析

运维体系建设:从最基本的命令行手工操作,脚本自动化再到完善的运维平台

运维操作需要平台化;

NameNode操作更复杂;

DataNode机器规模庞大;

组件控制面API

课程总结:

HDFS是大数据存储底座,是分布式存储系统的代表。本节课主要学习HDFS的总体架构和关键设计,从原理上了解HDFS,同时了解它的多方面应用。通过对HDFS的学习进一步理解分布式系统,为以后设计和优化分布式系统提供部分理论依据。