HA(高可用)集群搭建

高可用集群搭建


在完全分布式集群基础上修改,共三台结点

配置文件

需要修改两个配置文件
core-site.xml

<configuration>
    <property>
    	#这里的hadoopHA是自定义的集群名称
        <name>fs.defaultFS</name>
        <value>hdfs://hadoopHA</value>
    </property>
    #下面两个配置还是保留完全分布式架构的配置
    <property>
        <name>hadoop.tmp.dir</name>
        <value>/opt/hadoop/tmp</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.hosts</name>
        <value>*</value>
    </property>
    <property>
        <name>hadoop.proxyuser.root.groups</name>
        <value>*</value>
    </property>
    # 使用zookeeper管理的结点列表
    <property>
        <name>ha.zookeeper.quorum</name>
        <value>num01:2181,num02:2181,num03:2181</value>
    </property>
</configuration>

hdfs-site.xml

<configuration>
	# 下面一项可以不用修改
    <property>
        <name>dfs.replication</name>
        <value>3</value>
    </property>
    # 集群名称
    <property>
        <name>dfs.nameservices</name>
        <value>hadoopHA</value>
    </property>
    # 设置高可用主副结点
    <property>
        <name>dfs.ha.namenodes.hadoopHA</name>
        <value>nn1,nn2</value>
    </property>
    # 设置两个namenode的RCP通信地址
    <property>
        <name>dfs.namenode.rpc-address.hadoopHA.nn1</name>
        <value>num01:9000</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.hadoopHA.nn2</name>
        <value>num03:9000</value>
    </property>
    # 设置两个namenode的http通信地址
    <property>
        <name>dfs.namenode.http-address.hadoopHA.nn1</name>
        <value>num01:50070</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.hadoopHA.nn2</name>
        <value>num03:50070</value>
    </property>
    # 指定namenode元数据在journalnode上的存放地址
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://num01:8485;num02:8485;num03:8485/hadoopHA</value>
    </property>
    # 配置隔离机制,同一时刻只能保有一个namenode对外通信
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>
            sshfence
            shell(/bin/true)
        </value>
    </property>
    # 使用ssh无密钥登录
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/root/.ssh/id_rsa</value>
    </property>
    # 设置journalnode服务器存储目录
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/opt/hadoop/data/jn</value>
    </property>
    # 关闭权限检查
    <property>
        <name>dfs.permissions.enable</name>
        <value>false</value>
    </property>
    # 访问代理类: client, mycluster, active 配置失败自动切换实现方
式
    <property>
        <name>dfs.client.failover.proxy.provider.hadoopHA</name>
    	<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    # 设置自动故障切换
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
</configuration>

初始化

第一步:对全部结点操作:删除tmp和logs文件夹
第二步:对全部结点操作:启动journalnode:hadoop-daemon.sh start journalnode
第三步:主结点操作:初始化(操作前确认zookeeper服务开启):hdfs namenode -format
第四步:将初始化生成的tmp文件夹同步给副结点,有两种方式:

  • 第一种:直接使用scp同步:scp -r tmp @主机名:$PWD
  • 第二种:执行同步命令:hdfs namenode -bootstrapStandby

第五步:初始化zookeeper服务:hdfs zkfc -formatZK
第六步:启动DFSZK Failover Controller,现在哪台启动,哪台就是active结点:hadoop-daemon.sh start zkfc
第七步:启动hdfs服务:start-hdfs.sh
服务启动后可以看到,设置的主副结点都有namenode和DFSZKFailoverController服务
在这里插入图片描述

yarn配置

<configuration>
        <property>
                <name>yarn.nodemanager.aux-services</name>
                <value>mapreduce_shuffle</value>
        </property>
        <property>
                <name>yarn.nodemanager.aux-services.mapreduce.shuffle.class</name>
                <value>org.apache.hadoop.mapred.ShuffleHandler</value>
        </property>
        <property>
                <name>yarn.resourcemanager.hostname</name>
                <value>num01</value>
        </property>
        # 启动resourcemanager.ha
        <property>
                <name>yarn.resourcemanager.ha.enabled</name>
                <value>true</value>
        </property>
        # 声明两台resourcemanager的地址
        <property>
                <name>yarn.resourcemanager.cluster-id</name>
                <value>cluster-yarn1</value>
        </property>
        <property>
                <name>yarn.resourcemanager.ha.rm-ids</name>
                <value>rm1,rm2</value>
        </property>
        <property>
                <name>yarn.resourcemanager.hostname.rm1</name>
                <value>num01</value>
        </property>
        <property>
                <name>yarn.resourcemanager.hostname.rm2</name>
                <value>num03</value>
        </property>
        # 指定zookeeper集群地址
        <property>
                <name>yarn.resourcemanager.zk-address</name>
                <value>num01:2181,nu02:2181,num03:2181</value>
        </property>
        # 启用自动恢复
        <property>
                <name>yarn.resourcemanager.recovery.enabled</name>
                <value>true</value>
        </property>
        # 指定 resourcemanager 的状态信息存储在 zookeeper 集群
        <property>
                <name>yarn.resourcemanager.store.class</name>
                <value>org.apache.hadoop.yarn.server.resourcemanager.recovery.ZKRMStateStore</value>
        </property>
</configuration>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值