当前位置: 移动技术网 > 科技>人工智能>云计算 > HDFS高可用性HA架构原理及环境搭建

HDFS高可用性HA架构原理及环境搭建

2018年04月02日  | 移动技术网科技  | 我要评论
1、元数据同步 HDFS高可用性保证两个namenode内存中存储的文件系统元数据是一致的。 namenode的启动过程:一个namenode启动时,读取fsimage和edits文件,读

1、元数据同步
HDFS高可用性保证两个namenode内存中存储的文件系统元数据是一致的。
namenode的启动过程:一个namenode启动时,读取fsimage和edits文件,读取后会生成新的fsimage和edits文件,另一个namenode同样需要去读取这两个文件,变化后的edits日志文件,同样需要读取。在启动过程中还需要注册、发送心跳报告、读取块的报告,需要向另一个namenode实时的汇报。
日志文件的安全性:cloudera公司提出:分布式日志存储方案。找到一个datanode节点目录,zookeeper在2n+1个节点上有n+1个节点日志文件写成功,就说明该日志文件写成功。写多份,再读取,节点数目必须是奇数。日志文件还可以存储在zookeeper上。
通过代理来让客户端判断现在对外提供服务的是哪台namenode。
有两个namenode,但是必须在任何情况下,只能有一个namenode对外提供服务。
HA架构还有JournalNode日志节点,用来保存运行日志,
而SecondaryNameNode在HA架构下就不需要了。
2、HDFS HA配置步骤
(1)关闭已经启动的所有进程。
(2)配置文件hdfs-site.xml。

    
            dfs.nameservices
            ns1
    

指定两个namenodeID名称:

    
            dfs.ha.namenodes.ns1
            nn1,nn2
    

指定namenode所在的机器位置以及交互端口号:

    
            dfs.namenode.rpc-address.ns1.nn1
            hadoop-senior.ibeifeng.com:8020
    
    
            dfs.namenode.rpc-address.ns1.nn2
            hadoop-senior02.ibeifeng.com:8020
    

指定namenode所在的机器位置以及外部交互端口号:

    
            dfs.namenode.http-address.ns1.nn1
            hadoop-senior.ibeifeng.com:50070
    
    
            dfs.namenode.http-address.ns1.nn2
            hadoop-senior02.ibeifeng.com:50070
    

指定日志节点的机器以及端口号以及命名空间名称:

    
            dfs.namenode.shared.edits.dir
            qjournal://hadoop-senior.ibeifeng.com:8485;hadoop-senior02.ibeifeng.com:8485;hadoop-senior03.ibeifeng.com:8485/ns1
    

指定并创建日志节点存储的位置路径:

    
           dfs.journalnode.edits.dir  
           /opt/app/hadoop-2.5.0/data/dfs/jn
    

指定代理访问文件系统:

    
           dfs.client.failover.proxy.provider.ns1
            org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
    

指定隔离的方式,选择的是SSH远程协议:

    
           dfs.ha.fencing.methods
           sshfence
    
    
           dfs.ha.fencing.ssh.private-key-files
           /home/beifeng/.ssh/id_rsa
    

(3)配置文件core-site.xml,指定命名空间:

    
            fs.defaultFS
            hdfs://ns1
    

(4)将配置分发到各个节点
[beifeng@hadoop-senior etc]$ scp -r hadoop/
hadoop-senior02.ibeifeng.com:/opt/app/hadoop-2.5.0/etc/
(5)先启动zookeeper和日志节点(三台机器上都启动)
$ cd /opt/app/zookeeper-3.4.5/
$ bin/zkServer.sh start
$ bin/zkServer.sh status
$ cd /opt/app/hadoop-2.5.0/
$ sbin/hadoop-daemon.sh start journalnode
(6)格式化namenode
注意:如果不清楚有什么选项,可以在输入的命令后加-help
$ bin/hdfs namenode -format
启动namenode(一台namenode启动)
$ sbin/hadoop-daemon.sh start namenode
另一台namenode做同步
$ bin/hdfs namenode -bootstrapStandby
启动datanode(三台datanode都启动)
$ sbin/hadoop-daemon.sh start datanode
将一台namenode转为活跃
$ bin/hdfs haadmin -transitionToActive
(7)向HDFS上传文件
$ bin/hdfs dfs -put etc/hadoop/hdfs-site.xml /user/beifeng/temp/conf
将活跃的namenode进程杀死
$ kill -9 3306
将不活跃的namenode进程转为活跃,通过查看HDFS上的文件,以验证HDFS是否共享
$ bin/hdfs haadmin -transitionToActive nn2
查看HA服务状态:
$ bin/hdfs haadmin -getServiceState
(8)关闭NameNode:
$ sbin/hadoop-daemon.sh stop namenode
关闭JournalNode:
$ sbin/hadoop-daemon.sh stop journalnode
关闭zookeeper:
zookeeper-3.4.5]$ bin/zkServer.sh stop

如您对本文有疑问或者有任何想说的,请 点击进行留言回复,万千网友为您解惑!

相关文章:

验证码:
移动技术网