这是我参与「第四届青训营 」笔记创作活动的第3天。
今日内容:#HDFS知识
学习重点:了解概念与场景
一、课前预习
1.POSIX
Portable Operating System Interface of UNIX 可移植操作系统接口
2高可用
HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。
3吞吐量
每秒的数据处理量,即单位时间内完成的指令数。吞吐量是在给定时间段内系统完成的交易数量。即系统的吞吐量越大,说明系统在单位时间内完成的用户或系统请求越多。
4. 垂直扩展与水平扩展
垂直扩展:想要增加系统负荷,就意味着要在系统现有的部件上下工夫,即通过提高系统部件的能力来实现。
水平扩展:不是通过增加单个成员的负荷,而是通过增加更多的系统成员。
5.纠删码
(erasure coding,EC)一种数据保护方法,它将数据分割成片段,把冗余数据块扩展、编码,并将其存储在不同的位置,比如磁盘、存储节点或者其它位置。
二、课中笔记
HDFS基本知识
1.HDFS: Hadoop Distributed File System
3层:应用-调度-存储
win/linux单机文件系统
EXT4,BTRFS,ZFS…
分布式文件系统
更多机器、存储介质/多副本提高容错/不需高端硬件扩容
HDFS 功能特性:
分布式/容错/高可用/高吞吐/可扩展/廉价
HDFS 交互:
命令行/页面
架构原理
组件:3大件
Client/SDK(操作) – NameNode(数量少) – DataNode(数量多,用户数据)
作用:
写数据块(datanode间,Pipeline写)
NameNode:
维护目录树/维护文件和数据块/维护文件块存放节点/分配
DataNode:
数据块存取/汇报(给namenode)/副本复制
关键设计
分布式存储系统概念:
容错/一致性/可扩展/节点/数据放置/单机存储引擎
NameNode目录树维护
-fsimage
-Editlog
**NameNode数据放置 ** -数据块信息维护(维护节点信息,动态维护位置信息,不会持久化)
-数据放置策略(合理搬迁,存放,副本)
DataNode
-数据块硬盘存放
-启动扫盘
HDFS写异常与处理:
1.Lease Recovery
-写了一半挂掉的问题(副本不一致/租约(修改文件上的锁)无法释放)
-解决方案为Lease Recovery
2.Pipeline Recovery
-文件写入,DataNode侧异常挂掉
-解决方案为Pipeline Recovery
Client读异常与处理:
-读取文件时, DataNode出异常
-解决:节点Failover