HA搭建介绍

HA步骤

配置之前先拍摄快照(重要)

快照名称设置为 Zookeeper

node1节点和master节点分别有一个NameNode

  • 配置免密登录

    # 在node1节点执行
    ssh-keygen -t rsa
    # 三次回车之后
    ssh-copy-id node1
    ssh-copy-id node2
    ssh-copy-id master
    
  • 关闭所有Hadoop

    # 关闭Hadoop
    stop-all.sh
    
  • 在core-site.xml中添加如下配置:

    -- 注意需要将原先的9000修改成cluster
    <property>
            <name>fs.defaultFS</name>
           <!-- <value>hdfs://master:9000</value> -->
            <value>hdfs://cluster</value>
    </property>
    
    <property>
                  <name>ha.zookeeper.quorum</name>
                  <value>master:2181,node1:2181,node2:2181</value>
    </property>
    
  • 在hdfs-site.xml中添加如下配置:

    <!-- //以下为HDFS HA的配置// -->
    <!-- 指定hdfs的nameservices名称为 cluster -->
    <property>
    <name>dfs.nameservices</name>
    <value>cluster</value>
    </property>
    
    <!-- 指定cluster的两个namenode的名称分别为 master,nn1 -->
    <property>
    <name>dfs.ha.namenodes.cluster</name>
    <value>master,nn1</value>
    </property>
    
    <!-- 配置master,nn1的rpc通信端口 -->
    <property>
    <name>dfs.namenode.rpc-address.cluster.master</name>
    <value>master:8020</value>
    </property>
    <property>
    <name>dfs.namenode.rpc-address.cluster.nn1</name>
    <value>node1:8020</value>
    </property>
    
    <!-- 配置nn1,nn2的http通信端口 -->
    <property>
    <name>dfs.namenode.http-address.cluster.master</name>
    <value>master:9870</value>
    </property>
    <property>
    <name>dfs.namenode.http-address.cluster.nn1</name>
    <value>node1:9870</value>
    </property>
    
    <!-- 指定namenode元数据存储在journalnode中的路径 -->
    <property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://master:8485;node1:8485;node2:8485/cluster</value>
    </property>
    
    <!-- 指定journalnode日志文件存储的路径 -->
    <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/usr/local/soft/hadoop-3.1.1/data/journal</value>
    </property>
    
    <!-- 指定HDFS客户端连接active namenode的java类 -->
    <property>
    <name>dfs.client.failover.proxy.provider.cluster</name>
    <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    
    <!-- 配置隔离机制为 ssh -->
    <property>
    <name>dfs.ha.fencing.methods</name>
    <value>sshfence</value>
    </property>
    
    <!-- 指定秘钥的位置 -->
    <property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/root/.ssh/id_rsa</value>
    </property>
    
    <!-- 开启自动故障转移 -->
    <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
    </property>
    
    <!-- 关闭权限验证 -->
    <property>
    <name>dfs.permissions.enabled</name>
    <value>false</value>
    </property>
    
  • 上传配置文件至master的 /usr/local/soft/hadoop-3.1.1/etc/hadoop 并分发其他节点

    cd /usr/local/soft/hadoop-3.1.1/etc/hadoop
    scp hdfs-site.xml root@node1:`pwd`
    scp hdfs-site.xml root@node2:`pwd`
    scp core-site.xml root@node1:`pwd`
    scp core-site.xml root@node2:`pwd`
    
  • 删除所有节点中的tmp目录

    # 在master node1 node2 节点删除
    rm -rf /usr/local/soft/hadoop-3.1.1/data
    
  • 启动Zookeeper三台都需要启动

    zkServer.sh start
    zkServer.sh status
    
  • 配置node1、node2 环境变量添加 HADOOP_HOME

    vim /etc/profile
    # 添加:
    # HADOOP_HOME
    export HADOOP_HOME=/usr/local/soft/hadoop-3.1.1
    export PATH=$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$PATH
    
    source /etc/profile
    
  • 启动JN 存储hdfs元数据

    三台JN上执行 启动命令: 
     	hadoop-daemon.sh start journalnode
    
  • 格式化 在一台NN上执行(在master上执行)

    hdfs namenode -format
    # 并启动NameNode
    hadoop-daemon.sh start namenode
    
  • 执行同步 没有格式化的NN上执行 在另外一个namenode上面执行(在node1上执行)

    hdfs namenode -bootstrapStandby
    
  • 格式化ZK 在已经启动的namenode上面执行(在master上执行)

    # 保证Zookeeper启动状态
    hdfs zkfc -formatZK
    
  • 配置用户 在三个节点中的环境变量添加如下内容 并source生效

    export HDFS_JOURNALNODE_USER=root
    export HDFS_ZKFC_USER=root
    
  • 启动整个集群

    start-all.sh
    

注意再通过快照恢复之前的状态

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值