这是我参与「第四届青训营 -大数据场」笔记创作活动的第11篇笔记
本文已参与「新人创作礼」活动, 一起开启掘金创作之路。
分布式与集群的区别
- 分布式(Distributed):多台机器,每台机器上部署不同组件
- 集群(Cluster):多态机器,每台集群部署相同组件
负载均衡
- 将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行
- 解决了单个无法处理所有任务,多个一起处理的问题
负载均衡一般面对集群
故障转移
- 当活动的服务或应用以外终止时,快速启用冗余或备用的服务器、系统、硬件或者网络接替它们工作
- 故障转移系统又称容错系统
- 故障转移的核心是设置备份出现故障时,主备切换
- 主备切换的前提是数据状态保持一致
伸缩性
- 伸缩性又称弹性、可拓展性
- 指系统可以根据需求动态的扩容、缩容
分布式文件系统HDFS
HDFS:Hadoop分布式文件系统
HDFS解决大数据如何存储问题。分布式意味着是横跨在多台计算机上的存储系统
HDFS是一种能够在普通硬件上运行的分布式文件系统,它是高度容错的,适应于具有大数据集的应用程序,它非常适于存储大型数据
HDFS使用多台计算机存储文件,并且提供统一的访问接口,像是访问一个普通文件系统一样使用分布式文件系统
HDFS上的应用主要是以流式读取数据
大部分HDFS应用对文件要求的是write-one-read-many访问模型。一个文件一旦创建、写入、关闭之后就不需要修改了。这一假设简化了数据一致性问题,使高吞吐量的数据访问成为可能
移动计算的代价比移动数据的代价低。一个应用请求的计算,离它操作的数据越近就越有效。将计算移动到数据附近,比将数据移动到应用所在显然更好
主从架构
HDFS采用master/slave架构,一般一个HDFS集群是有一个NameNode和一定数目的DataNode组成。NameNode是HDFS主节点,DataNode是HDFS从节点,两种角色各司其职,共同协调完成分布式的文件存储服务
NameNode:
DataNode:
分块存储机制
HDFS中的文件在物理上是分块存储(block)的,块的大小可以通过配置参数来规定,参数位于hdfs-default.xml中:dfs.blocksize 默认大小是128M
副本机制
文件的所有block都会有副本。每个文件的block大小(dfs.blocksize)和副本系数(dfs.replication)都是可配置的。副本系数可以在文件创建的时候指定,也可以在之后通过命令改变
namespace
HDFS支持传统的层次型文件组织结构。
NameNode负责维护文件系统的namespace名称空间,任何对文件系统名称空间或属性的修改都将被NameNode记录下来
HDFS会给客户端提供一个统一的抽象目录树,客户端通过路径来访问文件
元数据管理
在HDFS中,NameNode管理的元数据具有两种类型:
- 文件自身属性信息:文件名称、权限、修改时间、文件大小、复制因子、数据块大小
- 文件块位置映射信息:记录文件块和DataNode之间的映射信息,即哪个块位于哪个节点上
数据块存储
文件的各个block的具体存储管理由DataNode节点承担。每个block都可以在多个DataNode上存储
(未完待续)
Client写流程
Client读流程