hadoop ha的配置与踩坑

配置hadoop ha模式,首先配置 zookeeper
配置zoo.cfg

tickTime=2000


maxClientCnxns=0


initLimit=50


syncLimit=5


dataDir=/home/zfy/zookeeper-3.4.13/zkdata

dataLogDir=/home/zfy/zookeeper-3.4.13/zkdatalog


clientPort=2182


server.1=node1664:12888:13888
server.2=node1665:12888:13888
server.3=node1666:12888:13888

在zkdata目录下创建myid,对应的机器下的myid写对应的server的编号,比如node1664写1就行,node1665写2

  1. 配置
    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.namenode.name.dir</name>
        <value>file:/home/zfy/hadoop-3.1.3/data/name</value>
    </property>
    <property>
        <name>dfs.datanode.data.dir</name>
        <value>file:/home/zfy/hadoop-3.1.3/data/data</value>
    </property>
    <property>
        <name>dfs.journalnode.edits.dir</name>
        <value>/home/zfy/hadoop-3.1.3/data/jn</value>
    </property>
    <property>
        <name>dfs.nameservices</name>
        <value>mycluster</value>
    </property>

    <property>
        <name>dfs.ha.namenodes.mycluster</name>
        <value>nn1,nn2</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn1</name>
        <value>node1664:1214</value>
    </property>
    <property>
        <name>dfs.namenode.http-address.mycluster.nn1</name>
        <value>node1664:11214</value>
    </property>
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn2</name>
        <value>node1665:1214</value>
        </property>
        <property>
                <name>dfs.namenode.http-address.mycluster.nn2</name>
                <value>node1665:11214</value>
        </property>
    <property>
        <name>dfs.namenode.shared.edits.dir</name>
        <value>qjournal://node1664:8485;node1665:8485;node1666:8485/mycluster</value>
    </property>
    <property>
        <name>dfs.ha.automatic-failover.enabled</name>
        <value>true</value>
    </property>
    <property>
        <name>dfs.client.failover.proxy.provider.mycluster</name>
        <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
    </property>
    <property>
        <name>dfs.ha.fencing.methods</name>
        <value>sshfence</value>
    </property>
    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
        <value>/home/zfy/hadoop-3.1.3/.ssh/id_rsa</value>
    </property>
    <property>
        <name>dfs.ha.fencing.ssh.connect-timeout</name>
        <value>30000</value>
    </property>



</configuration>

指定datanode,namenode,journalnode的 dir路径,需要手动创建对应的目录
dfs.nameservices 为mycluster
指定哪几个节点为namenode 64,65,66 机器上选择了64,和65 作为namenode,所以 dfs.ha.namenodes.mycluster 设置2个值,因为主节点为2个,然后配置 这两个namenode对应的dfs.namenode.rpc-address.mycluster,dfs.namenode.http-address.mycluster
dfs.namenode.shared.edits.dir 为namenode之间共享的目录
其他的照着配就好,其中dfs.ha.fencing.ssh.private-key-files为hadoop所在路径

core-site.xml

<configuration>
    <property>
        <name>fs.defaultFS</name>
        <value>hdfs://mycluster</value>
    </property>
    <property>
        <name>hadoop.tmp.dir</name>
  <value>/home/zfy/hadoop-3.1.3/data</value>
    </property>
    <property>
      <name>ha.zookeeper.quorum</name>
      <value>node1664:2182,node1665:2182,node1666:2182</value> 
   </property>
    
</configuration>

fs.defaultFS 的配置要跟hdfs-site.xml 的dfs.nameservices对应上
ha.zookeeper.quorum 对应zookeeper中配置的clientPort

3.yarn-site.xml

<configuration>

<!-- Site specific YARN configuration properties -->

<property>
  <name>yarn.resourcemanager.ha.enabled</name>
    <value>true</value>
</property>
<property>
   <name>yarn.resourcemanager.cluster-id</name>
   <value>cluster1</value>
</property>
<property>
   <name>yarn.resourcemanager.ha.rm-ids</name>
   <value>rm1,rm2</value>
</property>
<property>
    <name>yarn.resourcemanager.hostname.rm1</name>
    <value>node1664</value>
</property>
<property>
    <name>yarn.resourcemanager.hostname.rm2</name>
    <value>node1665</value>
</property>
<property>
    <name>yarn.resourcemanager.webapp.address.rm1</name>
    <value>node1664:5088</value>
</property>
<property>
    <name>yarn.resourcemanager.webapp.address.rm2</name>
    <value>node1665:5088</value>
</property>
<property>
    <name>hadoop.zk.address</name>
     <value>node1664:2182,node1665:2182,node1666:2182</value>
</property>
</configuration>

在这里需要制定zookeeper 的客户端的端口,和namenode
mapred-site.xml 跟正常的hadoop那样配置就行了

2.启动
每个节点分别启动 journalnode
hdfs --daemon start journalnode

然后进行初始化namenode
hdfs namenode -format

在未进行初始化的namenode执行下面命令
hdfs namenode -bootstrapStandby

初始化namenode以后就进行zookeeper初始化
$HADOOP_HOME/bin/hdfs zkfc -formatZK

之后就可以开启 集群
start-dfs.sh
hdfs --daemon start zkfc

遇见的问题:
hdfs-site.xml中的的datanode和namenode对应的目录的路径要单斜杆
zookeeper从新启动失败,要确保配置的dataDir中只有myid一个文件,把多余的其他的文件都删除掉

官网的参考
https://hadoop.apache.org/docs/r3.1.3/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html
https://hadoop.apache.org/docs/r3.1.3/hadoop-yarn/hadoop-yarn-site/ResourceManagerHA.html

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Hadoop 是一个分布式计算框架,常用于处理大规模数据。下面是 Hadoop配置Hadoop HA配置说明: 1. Hadoop 配置Hadoop配置文件一般位于 $HADOOP_HOME/etc/hadoop 目录下,包括以下几个文件: - core-site.xml:配置 Hadoop 核心功能相关的参数,如 Hadoop 集群的名称、HDFS 的默认文件系统等。 - hdfs-site.xml:配置 HDFS 相关的参数,如数据块大小、副本数量等。 - mapred-site.xml:配置 MapReduce 相关的参数,如 JobTracker 的地址、TaskTracker 的数量等。 - yarn-site.xml:配置 YARN 相关的参数,如 ResourceManager 的地址、NodeManager 的数量等。 其中,core-site.xml 和 hdfs-site.xml 是必须的,而 mapred-site.xml 和 yarn-site.xml 可以根据需要进行配置。 2. Hadoop HA 配置Hadoop HA(高可用)是指在 Hadoop 集群中实现 NameNode 的高可用性,以保证在 NameNode 发生故障时能够快速切换到另一个活动的 NameNode。Hadoop HA配置包括以下几个步骤: - 配置 Hadoop 的 core-site.xml 文件,增加以下两行配置: ``` <property> <name>fs.defaultFS</name> <value>hdfs://nameservice1</value> </property> <property> <name>ha.zookeeper.quorum</name> <value>zk1:2181,zk2:2181,zk3:2181</value> </property> ``` 其中,fs.defaultFS 指定了 HDFS 的默认文件系统,nameservice1 是 HDFS 的名称服务,需要在 hdfs-site.xml 文件中进行配置ha.zookeeper.quorum 指定了 ZooKeeper 集群的地址,用于实现 NameNode 的选举和状态共享。 - 配置 hdfs-site.xml 文件,增加以下几行配置: ``` <property> <name>dfs.nameservices</name> <value>nameservice1</value> </property> <property> <name>dfs.ha.namenodes.nameservice1</name> <value>nn1,nn2</value> </property> <property> <name>dfs.namenode.rpc-address.nameservice1.nn1</name> <value>nn1:8020</value> </property> <property> <name>dfs.namenode.rpc-address.nameservice1.nn2</name> <value>nn2:8020</value> </property> <property> <name>dfs.namenode.http-address.nameservice1.nn1</name> <value>nn1:50070</value> </property> <property> <name>dfs.namenode.http-address.nameservice1.nn2</name> <value>nn2:50070</value> </property> <property> <name>dfs.client.failover.proxy.provider.nameservice1</name> <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value> </property> ``` 其中,dfs.nameservices 指定了 HDFS 的名称服务;dfs.ha.namenodes.nameservice1 指定了 NameNode 的名称,nn1 和 nn2 分别代表了两个 NameNode;dfs.namenode.rpc-address.nameservice1.nn1 和 dfs.namenode.rpc-address.nameservice1.nn2 分别指定了两个 NameNode 的 RPC 地址;dfs.namenode.http-address.nameservice1.nn1 和 dfs.namenode.http-address.nameservice1.nn2 分别指定了两个 NameNode 的 HTTP 地址;dfs.client.failover.proxy.provider.nameservice1 指定了客户端故障转移的方式。 - 配置 mapred-site.xml 文件或 yarn-site.xml 文件,增加以下一行配置: ``` <property> <name>mapreduce.jobhistory.address</name> <value>hadoop1:10020</value> </property> ``` 其中,mapreduce.jobhistory.address 指定了 JobHistoryServer 的地址。 配置完成后,启动 Hadoop 集群,并在两个节点上启动 NameNode。在启动过程中,Hadoop 会自动进行选举,选出一个活动的 NameNode 和一个备用的 NameNode,以实现 NameNode 的高可用性。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值