IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 大数据 -> Hadoop3.3.1 HA配置多个namenode(5个Namenode)详细 -> 正文阅读

[大数据]Hadoop3.3.1 HA配置多个namenode(5个Namenode)详细

前期准备

所有主机关闭防火墙。

所有主机安装JDK1.8,并配置环境变量。

所有主机设置静态IP地址,修改主机名称。

设置所有主机selinux=disabled。

安装好zookeeper集群。并启动。

下载hadoop3.3.1包

集群配置

机器现状

六台虚拟机a2-a7

1. 配置hadoop-env.sh

export JAVA_HOME=/apps/jdk 可以只配置这其他的我这是后边有问题加上的

export HADOOP_PID_DIR=/apps/hadoop/hadoop_data/tmp/pids

HADOOP_CLASSPATH=$HADOOP_CLASSPATH:/apps/hadoop/share/hadoop/mapreduce/*

2.??配置core-site.xml文件

<!-- 指定hdfs的nameservice为ns1 -->
<property>
  <name>fs.defaultFS</name>
  <value>hdfs://test</value>
</property>
<!-- 指定hadoop hdfs目录 -->
<property>
  <name>hadoop.tmp.dir</name>
  <value>/data/hadoop/</value>
</property>
<property>
  <name>hadoop.native.lib</name>
  <value>false</value>
  <description>Should native hadoop libraries, if present, be used.</description>
</property>
<!-- 指定zookeeper地址 -->
<property>
  <name>ha.zookeeper.quorum</name>
  <value>a1:2181,a2:2181,a3:2181,a4:2181,a5:2181,a6:2181</value>
</property>
<!--可选的配置QJM日志目录-->
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/data/hadoop/journal/local/data</value>
</property>

?3.??配置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>
<!--指定hdfs的nameservice为test,需要和core-site.xml中的保持一致 -->
<property>
  <name>dfs.nameservices</name>
  <value>test</value>
</property>
<property>
  <name>dfs.ha.namenodes.test</name>
  <value>nn1,nn2,nn3,nn4,nn5</value>
</property>
<!--配置每一个NameNode的rpc通信地址-->
<property>
  <name>dfs.namenode.rpc-address.test.nn1</name>
  <value>a2:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.test.nn2</name>
  <value>a3:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.test.nn3</name>
  <value>a4:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.test.nn4</name>
  <value>a5:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.test.nn5</name>
  <value>a6:8020</value>
</property>
<!--配置每一个NameNode的web http地址-->
<property>
  <name>dfs.namenode.http-address.test.nn1</name>
  <value>a2:9870</value>
</property>
<property>
  <name>dfs.namenode.http-address.test.nn2</name>
  <value>a3:9870</value>
</property>
<property>
  <name>dfs.namenode.http-address.test.nn3</name>
  <value>a4:9870</value>
</property>
<property>
  <name>dfs.namenode.http-address.test.nn4</name>
  <value>a5:9870</value>
</property>
<property>
  <name>dfs.namenode.http-address.test.nn5</name>
  <value>a6:9870</value>
</property>
<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://a2:8485;a3:8485;a4:8485/test</value>
</property>
<!--配置QJM日志的目录-->
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/data/hadoop/qjm/edits</value>
</property>
<!--配置为自动切换功能打开,需要在core-site.xml文件中配置ZK地址-->
<property>
  <name>dfs.ha.automatic-failover.enabled</name>
  <value>true</value>
</property>
<property>
<name>dfs.client.failover.proxy.provider.test</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>

<!--配置SSH key,注意根据不同的用户名修改目录-->

<property>
  <name>dfs.ha.fencing.ssh.private-key-files</name>
  <value>/root/.ssh/id_rsa</value>
</property>

<property>
  <name>dfs.permissions.enabled</name>
  <value>false</value>
</property>

<!-- 配置sshfence隔离机制超时时间 -->
<property>
  <name>dfs.ha.fencing.ssh.connect-timeout</name>
  <value>30000</value>
</property>
<property>
  <name>dfs.namenode.checkpoint.check.period</name>
  <value>3600s</value>
</property>
</configuration>

?4.??配置mapreduce-site.xml文件

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

?5.??配置yarn-site.xml文件

<!--配置RM高可靠-->

<property>
  <name>yarn.resourcemanager.ha.enabled</name>
  <value>true</value>
</property>

<property>
  <name>yarn.resourcemanager.cluster-id</name>
  <value>cluster1</value>
</property>

    <!--配置Resourcemanager个数,hadoop3以后可以为3到5个-->

<property>
  <name>yarn.resourcemanager.ha.rm-ids</name>
  <value>rm1,rm2,rm3</value>
</property>

    <!--以下配置每一个RM的地址-->

<property>
  <name>yarn.resourcemanager.hostname.rm1</name>
  <value>a2</value>
</property>

<property>
  <name>yarn.resourcemanager.hostname.rm2</name>
  <value>a3</value>
</property>

<property>
  <name>yarn.resourcemanager.hostname.rm3</name>
  <value>a4</value>
</property>

    <!--配置每一个RM的http地址-->

<property>
  <name>yarn.resourcemanager.webapp.address.rm1</name>
  <value>a2:8088</value>
</property>

<property>
  <name>yarn.resourcemanager.webapp.address.rm2</name>
  <value>a3:8088</value>
</property>

<property>
  <name>yarn.resourcemanager.webapp.address.rm3</name>
  <value>a4:8088</value>
</property>

    <!--配置zookeeper地址-->

<property>
  <name>yarn.resourcemanager.zk-address</name>
  <value>a2:2181,a3:2181,a4:2181</value>
</property>

<property>
  <name>yarn.nodemanager.aux-services</name>
  <value>mapreduce_shuffle</value>
</property>
        <property>
                <name>yarn.application.classpath</name>
                <value>/apps/hadoop/etc/hadoop:/apps/hadoop/share/hadoop/common/lib/*:/apps/hadoop/share/hadoop/common/*:/apps/hadoop/share/hadoop/hdfs:/apps/hadoop/share/hadoop/hdfs/lib/*:/apps/hadoop/share/hadoop/hdfs/*:/apps/hadoop/share/hadoop/mapreduce/lib/*:/apps/hadoop/share/hadoop/mapreduce/*:/apps/hadoop/share/hadoop/yarn:/apps/hadoop/share/hadoop/yarn/lib/*:/apps/hadoop/share/hadoop/yarn/*</value>
        </property>
<property>
  <name>yarn.nodemanager.resource.memory-mb</name>
  <value>16384</value>
</property>
<property>
  <name>yarn.nodemanager.resource.cpu-vcores</name>
  <value>4</value>
</property>
<property>
  <name>yarn.scheduler.maximum-allocation-vcores</name>
  <value>4</value>
</property>

?6.??配置workers文件

a2
a3
a4
a5
a6
a7

7.配置start-dfs.sh/stop-dfs.sh

在中间位置,找到一个空白的位置添加:

HDFS_NAMENODE_USER=root

HDFS_SECONDARYNAMENODE_USER=root

HDFS_DATANODE_USER=root

HDFS_DATANODE_SECURE_USER=root

#以下是高可靠配置的

HDFS_JOURNALNODE_USER=root

HDFS_ZKFC_USER=root

8.配置start-yarn.sh/stop-yarn.sh

在两个配置文件中间位置添加以下内容:

YARN_RESOURCEMANAGER_USER=root

YARN_NODEMANAGER_USER=root

9.?现在配置hadoop的环境变量

export HADOOP_HOME=/data/apps/hadoop-3.3.0
export PATH=$PATH:$HADOOP_HOME/bin:$HADOOP_HOME/sbin

?10.拷贝文件其他主机

scp -r?/data/apps/hadoop/? a3:/data/apps/

11.启动journalnode 在journalnode机器上执行

hadoop-daemon.sh start journalnode

12.格式化HDFS

hdfs namenode -format

出现successfully formatted为成功

现在将格式化后的hdfs目录,拷贝到a3,a4,a5,a6主机上的相同目录下:

?scp -r?/data/hadoop/dfs/??a3:/data/hadoop/

内容是这样 的目录

?13.格式化zkfc

格式化前要停止

hadoop-daemon.sh stop?journalnode 不停止会报错,如果不报错就不用在意

hdfs zkfc -formatZK

Successfully created hadoop-ha/cluster in ZK 出现这个就是成功

14.启动dfs yarn

start-dfs.sh? 因为配置了环境变量所以可以直接启动

start-yarn.sh

start-all.sh? ? 启动所有

stop-all.sh? ? 停止全部

?验证

web? 访问 http://ip:9870

?

?

也可以通过以下命令,检查NameNode和ResourceManager的状态

$ hdfs haadmin -getServiceState nn1

active

$ hdfs haadmin -getServiceState nn2

standby

$ yarn rmadmin -getServiceState rm1

active

$ yarn rmadmin -getServiceState rm2

standby

有可能出现的问题:

?这个问题现在还没有解决 可以手动切换namenode 到前两个namenode?

Currently, the standby NN will log StandbyExceptions at ERROR level any time a client tries to connect to it. So, if the second NN in an HA pair is active, the first NN will spew a lot of these errors in the log, as each client gets redirected to the proper NN. Instead, this should be at INFO level, and should probably be logged in a less "scary" manner (eg "Received READ request from client 1.2.3.4, but in Standby state. Redirecting client to other NameNode.")

有大神知道怎么解决可以留言谢谢

  大数据 最新文章
实现Kafka至少消费一次
亚马逊云科技:还在苦于ETL?Zero ETL的时代
初探MapReduce
【SpringBoot框架篇】32.基于注解+redis实现
Elasticsearch:如何减少 Elasticsearch 集
Go redis操作
Redis面试题
专题五 Redis高并发场景
基于GBase8s和Calcite的多数据源查询
Redis——底层数据结构原理
上一篇文章      下一篇文章      查看所有文章
加:2022-09-30 00:59:31  更:2022-09-30 01:01:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2025年4日历 -2025/4/30 6:14:32-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码