Hadoop入门(3)——HA和Federation

除了官方文档之外强烈推荐http://www.cnblogs.com/tgzhu/p/5790565.html这位的博客。

关系型数据库的类比

HA和Federation都是HDFS发展过程的必然产物,对应于关系型数据库就是数据库的高可用和拆分。

关系型数据库的高可用要解决的几个点就是:
1,单点故障问题——库分主备
一主一备,一主多备,互为主备多种解决方案
2,库分主备——主备一致性问题——主备同步
主备通信,共享存储
3,热切换问题——实现主备热切
中间需要“分脑”问题,分脑问题就是说主备切换之后,主又恢复,导致两个节点同时对外服务,导致系统出现两个逐渐产生差异无法合并的版本。

关系型数据库的拆分分为竖直拆分和水平拆分:

竖直拆分就是分库,专库专用:这样会带来一些问题:
1,应用需要分数据源;
2,数据库连接池需要隔离;
3,原先的单机业务可能变成多机跨库业务,需要改变数据库表结构或使用分布式事务。

当竖直拆分后又遇到瓶颈,即一个数据库的单个表变得无比大时,需要水平拆分:

水平拆分就是分割表,除了以上竖直拆分的问题,还会造成:
1,关系型数据库的自增主键不可用,需要额外机制保证主键不重复;
2,需要增加读写规则来确定数据读写的源。

HDFS HA

详情参考官方文档和推荐的博客,这里只简单总结:
1,NameNode一主一备
2,多个JournalNode解决主备同步
NN向JN通信是并行;传递的信息时editLog;JN数量应该奇数,超过半数JN得到更新才算更新事务成功。
3,平时,DataNode向两个NameNode发送心跳
4,借助ZKFailOverController来做热切
5,有对DFSClient和DataNode的Fencing来避免“分脑”

HDFS Federation

多个NN共用一个集群里的存储资源,每个NN都可以单独对外提供服务;

每个NN都会定义一个存储池,有单独的id,每个DN都为所有存储池提供存储;

DN会按照存储池id向其对应的NN汇报块信息,同时,DN会向所有NN汇报本地存储可用资源情况;

如果需要在客户端方便的访问若干个NN上的资源,可以使用客户端挂载表,把不同的目录映射到不同的NN,但NN上必须存在相应的目录。

设计优势:
改动最小,向前兼容;现有的NN无需任何配置改动;如果现有的客户端只连某台NN的话,代码和配置也无需改动
分离命名空间管理和块存储管理
客户端挂载表:通过路径自动对应NN、使Federation的配置改动对应用透明

HA 的CheckPoint

配置了HA的HDFS中,有active和standby namenode两个namenode节点。因为standby namenode已经将集群状态存储在内存中了,所以创建检查点checkpoint的过程只需要从内存中生成新的fsimage。

详细过程如下: (standby namenode=SNN, activenamenode=ANN)

SNN查看是否满足创建检查点的条件:

(1) 距离上次checkpoint的时间间隔 >= ${dfs.namenode.checkpoint.period}

(2) Edits中的事务条数达到${dfs.namenode.checkpoint.txns}限制

这两个条件任何一个被满足了,就触发一次检查点创建。

Checkpoint过程:

  1. SbNN将内存中当前的状态保存成一个新的文件,命名为fsimage.ckpt_txid。其中txid是最后一个edit中的最后一条事务的ID(transaction ID)。然后为该fsimage文件创建一个MD5文件,并将fsimage文件重命名为fsimage_txid。

  2. SbNN向active namenode发送一条HTTP GET请求。请求中包含了SbNN的域名,端口以及新fsimage的txid。

  3. ANN收到请求后,用获取到的信息反过来向SbNN再发送一条HTTP GET请求,获取新的fsimage文件。这个新的fsimage文件传输到ANN上后,也是先命名为fsimage.ckpt_txid,并为它创建一个MD5文件。然后再改名为fsimage_txid。fsimage过程完成。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值