BigData-Haddop-Hdfs

HDFS:
0.高可用架构角色划分

  • Hdfs中角色即进程,有NameNode,JournalNode,DataNode;
  • Hdfs通过Zookeeper(ZK)来协调NN集群,NN为主从模式,推荐3个节点,不超过5个节点(节点间涉及数据一致性,节约维护成本)。
  • NN间的数据一致性通过JN来完成(JN>3台,负责同步NN的EditLog),JN同Zookeeper一样,基于改良的Paxos算法来管理集群,提供可靠的一致性消息传递服务。
  • Hdfs通过Zkfc服务结合Zk来实现自动维护NN集群(NN的主从选举和切换)。
  • Zkfc监测操作系统、NN、硬件的健康信息,一般和NN在同一台机器,这样可以节约通信成本,同时使得健康检查的信息更可靠。
  • Zkfc一只手连着NN,监测其健康信息;另一只手连着Zk,用于抢锁(创建目录)或删除锁(删除目录);第三只手用于抢锁成功后探测前Master节点的状态。
  • Zkfc分别在ZK上注册回调函数callback,当zk上的锁目录被删除后会回调所有注册的对应函数,即zkfc开始抢锁。
  • 若Zkfc和ZK连接中断,或Zkfc探测到NN的状态问题,都会导致zk上的锁删除事件,则其余zkfc开始抢锁。新选出来的MasterNN所属Zkfc会先去探测前MasterNN的状态(此处要实现两台机器之间的免密),得到对方确切状态后,则会将自己设置为Master,若未得到确切状态则不会设置自己为Master(这种网络故障概率极低,所以此种情况可忽略).

1.日志合并(元数据持久化):
  1.1 有两种写日志方式FSimage和EditLog;

  • FS是每间隔一个时点拍一个matadata的数据快照,缺点:时点之间故障,会导致数据丢失,且全量数据的重新写入磁盘,I/O时间长,耗能;优点:日志精简;
  • EditLog是将每一次操作影响的所有数据记录都写下来,eg:updata A where B>10000,加入影响的数据有2w条,则会记录所有影响的2w条数据。缺点,冗余繁琐;优点:记录全面,恢复数据  不丢失;
  • 优化方式:结合两种日志方案,时点间隔间继续记录EditLog,隔一段时间合并FS和增量EL形成新的FS。


1.2 写日志的角色

  • 分布式中,NN写日志,SNN(Secondary)合并日志;
  • 高可用架构中,没有SNN,只有从节点NN(Stanby),从节点合并日志;


2.读流程:

  • Client连接NN获取某blk的信息后,可以给出offset等metadata信息来读取其中某一个blk。


3.写流程:
  3.1 client存储数据
    1.Client连接主NN请求存某个blk的副本集,NN返回存储的DN列表;
    2.Client选取其中离自己最近的DN,将blk传给该DN;
    3.DN间是手拉手的pipeline工作形式,所以DN本地保存后,会将blk传给下一个DN。

3.2 NN的metadata的写入

  • NN的数据来源于两端:Client和DN;
  • Client写如NN的数据,通过JN同步给从NN;
  • DN写入NN的数据,直接分别写给每一个主从NN,不涉及NN的主从同步。


3.3 副本放置策略

  • 第一个blk1会放置在client所在的本地节点(或者距离其最近节点);
  • 第二个blk2一定会出机架;
  • 第三个blk3和blk2在同机架不同节点;
  • 其余blk随机节点放置。


3.4 存储模型

  • 文件按字节线性切割成block,具有offset、id;
  • block大小可自行设置,同一文件除最后一个block,其它block大小一致;
  • block没有主从概念,同一副本不能在同一节点;
  • 上传后的文件不支持修改,只能修改副本数。

4.HA高可用:

  • NN的单点故障采用主从集群模式解决;
  • NN的单点压力,采用Federation(元数据分片)来解决,NN的元数据用DN来分开存储,NN只管理数据(由于企业中一般也没有这么多数据,因此此方案很少使用)。


5.搭建流程
  1.基础环境搭建:操作系统、环境、网络、必须软件

  • 设置IP及主机名
  • 设置hosts映射
  • 关闭防火墙&selinux
  • 时间同步


  2.应用搭建
  3.启动和初始化
  4.验证理论知识


 

posted @ 2022-06-03 16:14  北静  阅读(67)  评论(0)    收藏  举报