HadoopHA高可用集群搭建详细步骤及部分报错解决

一、创建虚拟机

二、 虚拟机安装centos7

打开虚拟机创建需要的文件夹
在这里插入图片描述

三、 克隆虚拟机

在这里插入图片描述

四、 配置虚拟机ip及主机名

1. 查看虚拟机网络配置范围

在这里插入图片描述

2. 设置虚拟机主机名

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

3. 配置静态ip

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

4. 配置主机名和ip地址的映射

在这里插入图片描述
在这里插入图片描述

5. 查看ip地址配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

6. 查看连通内外网情况

在这里插入图片描述
Node-02ping不通外网 发现是
在这里插入图片描述
这里写成了DSN1 修改为DNS1后成功

7. Xshell连接虚拟机

在这里插入图片描述

五、 免密登录

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

六、 配置安装各个软件

1. 安装lrzsz和wget

在这里插入图片描述
在这里插入图片描述

2. 安装jdk

在这里插入图片描述
配置环境变量
在这里插入图片描述
在这里插入图片描述

3. 安装hadoop

在这里插入图片描述
在这里插入图片描述
配置环境变量
在这里插入图片描述

4. 安装zookeeper

(1)安装解压

在这里插入图片描述

(2)配置环境变量

在这里插入图片描述

(3)配置zoo.cfg

在这里插入图片描述

dataDir=/export/data/zookeeper/zkdata
server.1=node-01:2888:3888
server.2=node-02:2888:3888
server.3=node-03:2888:3888

在这里插入图片描述
在这里插入图片描述
Zookeeper启动成功
在这里插入图片描述

(4)关闭防火墙

在这里插入图片描述
说明安装成功
在这里插入图片描述

(5)使环境变量起作用

在这里插入图片描述

(6)创建myid文件

在这里插入图片描述
在这里插入图片描述

(7)分发文件到02 03

在这里插入图片描述

(8)修改02 03 的myid文件分别为2和3

在这里插入图片描述

5. 配置hadoop高可用集群

到该路径下
在这里插入图片描述

(1)修改core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://ns1</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/export/servers/hadoop-3.1.4/tmp</value>      
    </property>
    <property>
        <name>hadoop.http.staticuser.user</name>
        <value>hadoop</value>
    </property>
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>node-01:2181,node-02:2181,node-03:2181</value>
    </property>
</configuration>

(2)配置hdfs-site.xml

<configuration>
    <property>  
        <name>dfs.replication</name>
        <value>2</value>
    </property>  
    <property>  
        <name>dfs.permissions.enabled</name>
        <value>false</value>
    </property>  
    <property>  
        <name>dfs.nameservices</name>
        <value>ns1</value>
    </property>  
    <property>  
        <name>dfs.blocksize</name>
        <value>134217728</value>
    </property>  
    <property>
        <name>dfs.ha.namenodes.ns1</name>
        <value>nn1,nn2</value>
    </property>  
<!-- nn1的RPC通信地址,nn1所在地址  -->
<property>  
        <name>dfs.namenode.rpc-address.ns1.nn1</name>
        <value>node-01:9000</value>
    </property>  
    <!-- nn1的http通信地址,外部访问地址 -->
    <property>  
        <name>dfs.namenode.http-address.ns1.nn1</name>
        <value>node-01:50070</value>
    </property>  
    <!-- nn2的RPC通信地址,nn2所在地址 -->
    <property>  
        <name>dfs.namenode.rpc-address.ns1.nn2</name>
        <value>node-02:9000</value>
    </property>  
    <!-- nn2的http通信地址,外部访问地址 -->
    <property>  
        <name>dfs.namenode.http-address.ns1.nn2</name>
        <value>node-02:50070</value>
    </property>  
    <!-- 指定NameNode的元数据在JournalNode日志上的存放位置(一般和zookeeper部署在一起) -->
    <property>  
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://node-01:8485;node-02:8485;node-03:8485/ns1</value>
    </property>  
    <!-- 指定JournalNode在本地磁盘存放数据的位置 -->
    <property>  
        <name>dfs.journalnode.edits.dir</name>
        <value>/export/data/hadoop/journaldata</value>
    </property>  
    <!--开启namenode失败自动切换-->
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
    <!--客户端通过代理访问namenode,访问文件系统,HDFS 客户端与Active 节点通信的Java 类,使用其确定Active 节点是否活跃  -->
    <property>
        <name>dfs.client.failover.proxy.provider.ns1</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>  
    <!--这是配置自动切换的方法,有多种使用方法,具体可以看官网,在文末会给地址,这里是远程登录杀死的方法  -->
    <property>  
        <name>dfs.ha.fencing.methods</name>
        <value>
            sshfence
            shell(/bin/true)
        </value>    
    </property>  
    <!-- 这个是使用sshfence隔离机制时才需要配置ssh免登陆 -->
    <property>  
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>  
    <!-- 配置sshfence隔离机制超时时间,这个属性同上,如果你是用脚本的方法切换,这个应该是可以不配置的 --> 
    <property>  
        <name>dfs.ha.fencing.ssh.connect-timeout</name>
        <value>30000</value>
    </property>  
    <!-- 这个是开启自动故障转移,如果你没有自动故障转移,这个可以先不配 -->
    <property>  
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>  
</configuration>

(3)修改mapred-site.xml

<configuration>
    <property>
        <name>mapreduce.framework.name</name>
        <value>yarn</value>
    </property> 
</configuration>

(4)修改yarn-site.xml

<configuration>
    <property>  
        <name>yarn.nodemanager.aux-services</name>
        <value>mapreduce_shuffle</value>  
    </property>
    <!-- Site specific YARN configuration properties -->
    <!--启用resourcemanager ha-->  
    <!--是否开启RM ha,默认是开启的-->  
    <property>  
       <name>yarn.resourcemanager.ha.enabled</name>  
       <value>true</value>  
    </property>
    <!--声明两台resourcemanager的地址-->
    <property>
       <name>yarn.resourcemanager.cluster-id</name>  
       <value>yrc</value>        
    </property>
    <property>  
       <name>yarn.resourcemanager.ha.rm-ids</name>  
       <value>rm1,rm2</value>  
    </property>
    <property>  
       <name>yarn.resourcemanager.hostname.rm1</name>  
       <value>node-01</value> 
    </property>  
    <property>  
       <name>yarn.resourcemanager.hostname.rm2</name>
       <value>node-02</value>  
    </property>  

    <!--指定zookeeper集群的地址-->   
    <property>  
       <name>yarn.resourcemanager.zk-address</name>
        <value>node-01:2181,node-02:2181,node-03:2181</value>
    </property>  
    <!--启用自动恢复,当任务进行一半,rm坏掉,就要启动自动恢复,默认是false-->
    <property>  
       <name>yarn.resourcemanager.recovery.enabled</name>
       <value>true</value>  
    </property>  

    <!--指定resourcemanager的状态信息存储在zookeeper集群,默认是存放在FileSystem里面。-->
    <property>  
       <name>yarn.resourcemanager.store.class</name>
       <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
    </property> 

</configuration>

(5)修改workers

在这里插入图片描述

(6)修改hadoop-env.sh

在这里插入图片描述
在这里插入图片描述

(7)修改start-dfs.sh和stop-dfs.sh

#!/usr/bin/env bash
HDFS_JOURNALNODE_USER=root
HDFS_ZKFC_USER=root
HDFS_DATANODE_USER=root
HADOOP_SECURE_DN_USER=hdfs
HDFS_NAMENODE_USER=root
HDFS_SECONDARYNAMENODE_USER=root

(8)修改start-yarn.sh和stop-yarn.sh

#!/usr/bin/env bash
YARN_RESOURCEMANAGER_USER=root
HADOOP_SECURE_DN_USER=yarn
YARN_NODEMANAGER_USER=root

七、 启动各项进程

1. 启动各个节点zookeeper

在这里插入图片描述

2. 启动journalnamenode

在这里插入图片描述
在这里插入图片描述

3. 在node-01上格式化namenode

在这里插入图片描述

4. 分发到node-02

在这里插入图片描述

5. node-01格式化zkfc

在这里插入图片描述

6. 启动集群和yarn

在这里插入图片描述
在这里插入图片描述

7. Jps查看node-02无namenode

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
02没有启动namenode

(1)查看日志 关于namenode的log文件

在这里插入图片描述
在这里插入图片描述
发现error说没有name文件
在这里插入图片描述
创建name文件
在这里插入图片描述
在这里插入图片描述

(2)启动后node-02 jps namenode出现一下就消失了

继续查看日志
在这里插入图片描述
node-02没有格式化
在这里插入图片描述
启动node-02 namenode成功
在这里插入图片描述

8. 最终Jps

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值