Hadoop高可用安装与配置

【前言:提前安装好Hadoop的集群模式】

一、配置文件

1、core-site.xml

<configuration>
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://hadoopHA</value>
</property>
<property>
  <name>hadoop.tmp.dir</name>
  <value>/root/software/hadoop/tmp</value>
</property>
<property>
  <name>hadoop.proxyuser.root.hosts</name>
  <value>*</value>
</property>
<property>
  <name>hadoop.proxyuser.root.groups</name>
  <value>*</value>
</property>
<property>
<name>ha.zookeeper.quorum</name>
<value>hadoop100:2181,hadoop101:2181,hadoop102:2181</value>
</property>
</configuration>

2、hdfs-site.xml

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="configuration.xsl"?>
<!--
  Licensed under the Apache License, Version 2.0 (the "License");
  you may not use this file except in compliance with the License.
  You may obtain a copy of the License at

    http://www.apache.org/licenses/LICENSE-2.0

  Unless required by applicable law or agreed to in writing, software
  distributed under the License is distributed on an "AS IS" BASIS,
  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  See the License for the specific language governing permissions and
  limitations under the License. See accompanying LICENSE file.
-->

<!-- Put site-specific property overrides in this file. -->

<configuration>
<property>
  <name>dfs.replication</name>
  <value>3</value>
</property>
<property>
    <name>dfs.namenode.secondary.http-address</name>
    <value>hadoop101:50090</value>
</property>

<property>
    <name>dfs.nameservices</name>
    <value>hadoopHA</value>
</property>
<!-- 集群中 NameNode 节点都有哪些,这里是 nn1 和 nn2 -->
<property>
    <name>dfs.ha.namenodes.hadoopHA</name>
    <value>nn1,nn2</value>
</property>
<!-- nn1 的 RPC 通信地址 -->
<property>
    <name>dfs.namenode.rpc-address.hadoopHA.nn1</name>
    <value>hadoop100:9000</value>
</property>
<!-- nn2 的 RPC 通信地址 -->
<property>
    <name>dfs.namenode.rpc-address.hadoopHA.nn2</name>
    <value>hadoop103:9000</value>
</property>
<!-- nn1 的 http 通信地址 -->
<property>
    <name>dfs.namenode.http-address.hadoopHA.nn1</name>
    <value>hadoop100:50070</value>
</property>
<!-- nn2 的 http 通信地址 -->
<property>
    <name>dfs.namenode.http-address.hadoopHA.nn2</name>
    <value>hadoop103:50070</value>
</property>
<!-- 指定 NameNode 元数据在 JournalNode 上的存放位置 -->
<property>
    <name>dfs.namenode.shared.edits.dir</name>    
    <value>qjournal://hadoop100:8485;hadoop101:8485;hadoop103:8485/hadoopHA</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/soft/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>

二、启动Journalnode

sbin/hadoop-daemon.sh start journalnode

三、删除tmp和logs文件夹

所有机器都删除

rm -rf logs/
rm -rf tmp/

四、HDFS格式化

主节点

bin/hdfs namenode -format

五、同步元数据(分发tmp文件给从机)

主节点

scp -r tmp/ root@hadoop101 $PWD
scp -r tmp/ root@hadoop102 $PWD

五、启动namenode

配置namenode的节点同时启动

sbin/hadoop-daemon.sh start namenode

可以jps看一下namenode是否起来

六、初始化Zookeeper

开启Zookeeper进程

zookeeper/bin/zkServer.sh start

主节点

bin/hdfs zkfc -formatZK

七、全部开启

主节点

sbin/start-dfs.sh

利用jps查看节点进程是否起来

八、测试

将其中一个namenode节点kill掉,看另外的namenode 节点是否能变成Active

hadoop100
在这里插入图片描述
hadoop103
在这里插入图片描述
现在kill掉hadoop100的namenode(模拟宕机)

在这里插入图片描述
kill掉之后再来看看 hadoop103,是否变成Active
在这里插入图片描述

九、配置高可用YARN

1.配置 yarn-site.xml

<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>
<!-- 指定YARN的ResourceManager的地址 -->
<property>
    <name>yarn.resourcemanager.hostname</name>
    <value>hadoop100</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>hadoop100</value>
</property>
<property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>hadoop103</value>
</property>
<!--指定 zookeeper 集群的地址-->
<property>
    <name>yarn.resourcemanager.zk-address</name>
    <value>hadoop100:2181,hadoop101:2181,hadoop103: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>

2.启动YARN

在hadoop100节点上启动

start-yarn.sh

在hadoop103节点上启动

yarn-daemon.sh start resourcemanager

3.配置Windows系统中的hosts文件

c:
最后一行添加:各个机器的IP 主机名
在这里插入图片描述
保存退出后,在浏览器中输入103(备份机器的IP:8088),会自动跳转到hadoop100的yarn

在这里插入图片描述

猜你喜欢

转载自blog.csdn.net/qq_43288259/article/details/115090492
今日推荐