博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
2、HDFS的HA原理及配置
阅读量:5920 次
发布时间:2019-06-19

本文共 5570 字,大约阅读时间需要 18 分钟。

hot3.png

原理

1、如何保证两个NameNode之间的数据同步?

active namenode记录日志的时候,需要往外部存储系统(qjounal)中记录一份,然后standby NameNode从qjounal中读取数据,然后进行checkpoint(也就是不再需要sandary NameNode)。

这个qjounal是一个分布式的外部存储系统,它借助于zookeeper框架实现。里面的选举也是利用了zookeeper的机制。

2、两个NameNode之间的状态如何切换?

写了一个zkfc(基于zookeeper的failover controller)的模块实现切换功能。每个NameNode的机器上都安装一个zkfc,他们也借助于zookeeper。

如果在状态为active的NameNode机器上的zkfc如果检测到NameNode进程不存在了,就会向zookeeper更新信息,然后处于standby端的zkfc首先是通过ssh发送一个kill -9 | grep namenode 的命令去杀死原本active的NameNode,以确保它真正失效(由于NameNode可能因为full GC是的它短暂失效),这样可以防止脑裂。

收到ssh命令的响应后,zkfc通过rpc去调用standby这边的NameNode的接口,更改他的状态为active,这样他就可以进行状态的切换了。

如果很久都没有收到ssh命令的响应,比如原本activeNameNode这边机器死机了,没有响应,或者网络短期阻塞没有响应等等,这个时候还有一个解决方案,就是需要用户提供一个脚本,这个zkfc帮忙调用去处理一些逻辑:是的原本active的NameNode机器断电等等。最后去切换本机的NameNode为active。

安装步骤:(其实就是修改一下配置文件就可以了)

  • 1、core.site.xml

    fs.defaultFS
    viewfs:///
    fs.viewfs.mounttable.default.link./bi
    hdfs://bi/
    fs.viewfs.mounttable.default.link./dt
    hdfs://dt/
    hadoop.tmp.dir
    /home/hadoop/apps/hdpdata/
    ha.zookeeper.quorum
    mini5:2181,mini6:2181,mini7:2181
  • 2、hdfs.site.xml

    dfs.nameservices
    bi,dt
    dfs.ha.namenodes.bi
    nn1,nn2
    dfs.ha.namenodes.dt
    nn3,nn4
    dfs.namenode.rpc-address.bi.nn1
    mini1:9000
    dfs.namenode.http-address.bi.nn1
    mini1:50070
    dfs.namenode.rpc-address.bi.nn2
    mini2:9000
    dfs.namenode.http-address.bi.nn2
    mini2:50070
    dfs.namenode.rpc-address.dt.nn3
    mini3:9000
    dfs.namenode.http-address.dt.nn3
    mini3:50070
    dfs.namenode.rpc-address.dt.nn4
    mini4:9000
    dfs.namenode.http-address.dt.nn4
    mini4:50070
    dfs.namenode.shared.edits.dir
    qjournal://mini5:8485;mini6:8485;mini7:8485/bi
    dfs.namenode.shared.edits.dir
    qjournal://mini5:8485;mini6:8485;mini7:8485/dt
    dfs.journalnode.edits.dir
    /home/hadoop/apps/hdpdata/journaldata
    dfs.ha.automatic-failover.enabled
    true
    dfs.client.failover.proxy.provider.bi
    org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
    dfs.client.failover.proxy.provider.dt
    org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
    dfs.ha.fencing.methods
    sshfence shell(/bin/true)
    dfs.ha.fencing.ssh.private-key-files
    /home/hadoop/.ssh/id_rsa
    dfs.ha.fencing.ssh.connect-timeout
    30000
  • 3、mapreduce.site.xml

    mapreduce.framework.name
    yarn
  • 4、yarn.site.xml(也是做HA的)

    yarn.resourcemanager.ha.enabled
    true
    yarn.resourcemanager.cluster-id
    yrc
    yarn.resourcemanager.ha.rm-ids
    rm1,rm2
    yarn.resourcemanager.hostname.rm1
    mini3
    yarn.resourcemanager.hostname.rm2
    mini4
    yarn.resourcemanager.zk-address
    mini5:2181,mini6:2181,mini7:2181
    yarn.nodemanager.aux-services
    mapreduce_shuffle

转载于:https://my.oschina.net/liufukin/blog/796545

你可能感兴趣的文章
分享用二级域名来做站的注意事项
查看>>
优惠书价计算---c++--软件工程
查看>>
Linux系统之路——如何在服务器用U盘安装CentOS7.2(二)
查看>>
2.4 GO Interface
查看>>
asp.net菜鸟到中级程序员的飞跃 --30本好书点评
查看>>
程序开发常用第三方类库一览表(VendorLib)
查看>>
linux root 用户 定时任务添加
查看>>
(译)Windsor入门教程---第四部分 整合
查看>>
JS中几种判断数据类型的方法
查看>>
常见的几种web攻击方式
查看>>
NDK编程中如何在C文件中打印调试信息
查看>>
读书笔记--SQL必知必会12--联结表
查看>>
KNN算法python实现小样例
查看>>
简单的登录验证,应用MVC和使用Servlet作为控制器写一个简单的登录验证
查看>>
Spring Aop底层原理详解
查看>>
数值积分中的辛普森方法及其误差估计
查看>>
Debian apt-get 无法补全
查看>>
c# SendMail
查看>>
性能测试学习 第十课--LR12中的性能分析
查看>>
1.正则re
查看>>