大数据
从字面上来说大数据就是巨大的数据,大数据有着四个特征,大量,多样,高速,价值。
HDFS
HDFS产生背景
随着数据量的不断增大,最终会导致数据在一个操作系统的磁盘中存储不下。那么为了存储这些数据,就需要将这些数据分配到更多的操作系统管理的磁盘中进行存储,但是这样导致数据的管理和存储非常不方便,所以就迫切需要一种系统来管理和维护多台机器上的数据文件,实际这种系统就是分布式文件系统,而HDFS只是这种分布式文件系统的一种。
HDFS设计理念
将数据切分并存储到若干台计算机组成的集群中,这些计算器通过网络连接。
而HDFS作为一个抽象层架构在集群网络之上,使用户就像在一台电脑上操作。
核心理念:
- 支持超大文件存储
- 流式数据访问
-流失数据可以简单理解为:读取数据文件就像打开水龙头一样,可以不停的读取。 - 简单的一致模型
在HDFS中一个文件一旦经过创建,写入,关闭之后,一般不再进行修改,这样就可以简单地保证数据的一致性。 - 硬件的故障检测和快速应对
虽然说HDFS文件系统所需要的服务器有成千上百台,但是HDFS在设计之初就已经考虑到,认为硬件故障是常态不是问题,如何快速进行检查,和快速自动恢复也是HDFS的重要组成部分。
HDFS系统架构
Namenode:主节点(管理员),维护目录树,目录文件,目录信息,放置在fsimage镜像中,镜像文件在每次增删改查之后并不会每次增加,会先储存在编辑日志中,之后在合并。
SecondaryNameNode:备用节点,它用于定期合并fsimage和edits
DataNode:数据节点,具体的数据储存,存储的是数据块。一个大文件可以分成块储存在不同的数据节点中。
合并的具体过程:元数据节点中的日志和镜像文件在从元数据节点使用http get复制(复制的过程中会生生一个新的日志文件),将镜像文件导入内存,应用edits中的操作,生成fsimage.ckpt,再用http post复制到元数据节点,在元数据节点中替换。
HDFS读取流程
HDFS客户端首先要打开一个分布式文件系统的示例对象,通过rpc的名字节点获取块的位置信息,打开一个输入流,从最近一个数据节点开始读取,数据节点之间会形成一个管道,读完获取的信息之后,会继续获取。
HDFS副本放置策略
副本1:在客户端的节点上
副本2:在不同机架上的节点上
副本3:同第二个副本的机架中的另一个节点上
其他副本:随机挑选
HA
高可用HA,为了避免单点故障问题出现了HA,部署两台或者多台主节点,形成主备关系,但是某一时刻只有一个主节点能够运行,只有当一个挂了之后,才会发生替换。
在两个主节点之间有一个共享数据的JourmalNode集群,在此集群中一有新数据节点生成,就会替换镜像文件。
如何发现主节点挂机,因为存在一个主备切换器。