HA-高可用的HDFS搭建(hdfs+zookeeper)(一)

早期的Hadoop1.x版本,NN是HDFS集群的单点故障点,每一个集群只有一个NN,如果这个机器或进程不可用,整个集群就无法使用。

为了解决这个问题在Hadoop2.x中借助于中间特定的中间渠道解决单点故障点问题,官方文档中提供两种解决方法: NFS和QJM

HA-高可用的HDFS搭建(hdfs+zookeeper)(一)_第1张图片

NFS:采用的是网络共享文件模式

QJM:Quorum Journal Manager  是hdfs用来共享Action NameNode与Standby NameNode之间的edit logs

 Quorum Journal Manager (QJM) to share edit logs between the Active and Standby NameNodes

HA-hdfs的设计架构图

HA-高可用的HDFS搭建(hdfs+zookeeper)(一)_第2张图片

  • 基本原理就是用2N+1台 JN 存储EditLog,每次写数据操作有大多数(>=N+1)返回成功时即认为该次写成功,数据不会丢失了。当然这个算法所能容忍的是最多有N台机器挂掉,如果多于N台挂掉,这个算法就失效了。这个原理是基于Paxos算法
  • 在HA架构里面SecondaryNameNode这个冷备角色已经不存在了,为了保持standby NN时时的与主Active NN的元数据保持一致,他们之间交互通过一系列守护的轻量级进程JournalNode
  • 任何修改操作在 Active NN上执行时,JN进程同时也会记录修改log到至少半数以上的JN中,这时 Standby NN 监测到JN 里面的同步log发生变化了会读取 JN 里面的修改log,然后同步到自己的的目录镜像树里面

关于原理的的知识暂时就不多说了

首先开始一步一步搭建吧

 简单介绍概况:

Linux服务器 4台 node01 node02 node03 node04

各个节点分布与使用

集群节点分布 
服务节点 NN  DN JN ZK ZKFC
node01 1     1 1
node02 1 1 1 1 1
node03   1 1 1  
node04   1 1    

NN: namenode部署node01,node02

DN:datenode部署node02,node03node04

JN: journalnode 部署node02,node03node04

。。。就不依次介绍了


搭建前提要求:

 1. 最好配置有 ssh免密钥(RSA)

 2. Zookeeper集群环境(具体可以参考官网)

  3. Hadoop安装包

    wget http://mirrors.hust.edu.cn/apache/hadoop/common/hadoop-2.8.3/hadoop-2.8.3.tar.gz 


开始配置Hdfs的配置文件

1. 解压tar包

tar -xvf  hadoop-2.8.3.tar.gz 

2. 修改配置文件

进入 解压的文件 的 etc/

HA-高可用的HDFS搭建(hdfs+zookeeper)(一)_第3张图片

 第一步:    

  修改hadoop-env.sh  的 JAVA_HOME的路径(经常无法识别JAVA_HOME--所有直接指定路径)

vim hadoop-env.sh   

HA-高可用的HDFS搭建(hdfs+zookeeper)(一)_第4张图片

第二步:

 修改   hdfs-site.xml  

 namenode服务名称 
  
     dfs.nameservices
     hdfsServer
   
   
 namenode服务节点
  
    dfs.ha.namenodes.hdfsServer
      nn1,nn2
  
  
  namenode通信RPC
   
     dfs.namenode.rpc-address.hdfsServer.nn1
       node01:8020
    

    
        dfs.namenode.rpc-address.hdfsServer.nn2
        node02:8020
   
   
   namenode通信Http
   
      dfs.namenode.http-address.hdfsServer.nn1
        node01:50070
        
    
        dfs.namenode.http-address.hdfsServer.nn2
        node02:50070
   
JN   
    
       dfs.namenode.shared.edits.dir
       qjournal://node02:8485;node03:8485;node04:8485/hdfsServer
    

	 故障迁移
	 
      dfs.client.failover.proxy.provider.hdfsServer
        org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider
    
	
	免密钥
	
           dfs.ha.fencing.methods
           sshfence
    

    
        dfs.ha.fencing.ssh.private-key-files
        /root/.ssh/id_rsa
    
 
	
	JN edits 文件
	
       dfs.journalnode.edits.dir
       /root/hdpdata/journal/data
     

	启动自动的故障迁移

   dfs.ha.automatic-failover.enabled
   true
 


修改core-site.xml

 
        fs.defaultFS
        hdfs://hdfsServer
    
	
	zookeeper集群
    
        ha.zookeeper.quorum
        node01:2181,node02:2181,node03:2181
     

注意:


完成上述配置后使用 scp -r  xxxx node02:$PWD  

将配置后的hadop配置文件依次拷贝到不同的服务节点上


具体启动方式见下篇文章 ---->  HA-高可用的HDFS搭建(hdfs+zookeeper)(二)


你可能感兴趣的:(Hadoop,大数据)