HA 集群搭建

集群分配方案

NN-1NN-2DNZKZKFCJNN
node1✔️✔️✔️✔️
node2✔️✔️✔️✔️✔️
node3✔️✔️✔️
node3✔️

HA 状态下:

  • 当处于 active 状态的节点挂掉之后,standby 状态的节点自动接替任务,转为 active 状态,对外提供服务。
  • 当挂掉的节点重新恢复之后,他不会再恢复成 active 状态,保持为 standby 状态。

注意:
配置免密的时候,要配置 node2 -> node1 的秘钥,node2 转为 active 状态之后,无法正常与 node1 进行连接。

Hadoop配置

hadoop-env.sh

export JAVA_HOME=/usr/local/java/jdk1.8.0_271

hdfs-site.xml

<configuration>
    <property>
        <name>dfs.nameservices</name>
        <value>mycluster</value>
    </property>
    <property>
        <name>dfs.ha.namenodes.mycluster</name>
        <value>nn1,nn2</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn1</name>
        <value>node1:8020</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn2</name>
        <value>node2:8020</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.mycluster.nn1</name>
        <value>node1:50070</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.mycluster.nn2</name>
        <value>node2:50070</value>
    </property>
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://node1:8485;node2:8485;node3:8485/mycluster</value>
    </property>
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/home/hdfs/var/hadoop/ha/jn</value>
    </property>
    <property>
        <name>dfs.client.failover.proxy.provider.mycluster</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/home/hdfs/.ssh/id_rsa</value>
    </property>
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
</configuration>

core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://mycluster</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/home/hdfs/var/hadoop/tmp</value>
    </property>
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>node1:2181,node2:2181,node3:2181</value>
    </property>
</configuration>

slaves

node2
node3
node4

环境变量

# hadoop-ha
export HADOOP_HOME=/home/hdfs/env/hadoop-2.10.1-ha
export PATH=${HADOOP_HOME}/bin:${HADOOP_HOME}/sbin:$PATH

Zookeeper配置(node1)

zoo.cfg 文件

dataDir=/home/hdfs/var/zookeeper 

server.1=node1:2888:3888
server.2=node2:2888:3888
server.3=node3:2888:3888

分发到 node2、node3

配置环境变量

# zookeeper
export ZOOKEEPER_HOME=/home/hdfs/env/apache-zookeeper-3.6.2-bin
export PATH=${ZOOKEEPER_HOME}/bin:$PATH

myid

mkdir -p var/zookeeper
vim var/zookeeper/myid

myid 文件 node1 2 3 分别 为 1 2 3

启动集群

node1 node2 node3 分别执行

zkServer.sh start 

注意是否关闭防火墙

HA 启动步骤

  1. node1,node2,node3 先启动 journalnode ,把 active 状态的信息拿过来

    hadoop-daemon.sh start journalnode
    
  2. 正常启动第一台 NN (不要启动集群)

    hdfs namenode -format
    hadoop-daemon.sh start namenode  
    
  3. 在第二台 NN 上启动处于 standby 状态的节点

    hdfs namenode -bootstrapStandBy
    
  4. 在node2、node3上 启动 zookeeper

    zkServer.sh start 
    
  5. 对 zookeeper 进行格式化,在第一台 NN 节点上执行

    hdfs zkfc -formatZK
    
  6. 启动集群

    start-dfs.sh
    
    zookeeper 处于启动状态,它就回去选择哪一个节点作为 active 的 NN 
    
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值