`

Hadoop HA高可用配置

阅读更多

 【注:文中配置未实际验证】 



 

 

一) 配置:

修改hdfs-site.xml

1. dfs.nameservices - the logical name for this new nameservice

Note: If you are also using HDFS Federation, this configuration setting should also include the list of other nameservices, HA or otherwise, as a comma-separated list.

<property>
  <name>dfs.nameservices</name>
  <value>mycluster</value>
</property>

 

2. dfs.ha.namenodes.[nameservice ID] - unique identifiers for each NameNode in the nameservice

<property>
  <name>dfs.ha.namenodes.mycluster</name>
  <value>nn1,nn2</value>
</property>

 

3. dfs.namenode.rpc-address.[nameservice ID].[name node ID] - the fully-qualified RPC address for each NameNode to listen on

<property>
  <name>dfs.namenode.rpc-address.mycluster.nn1</name>
  <value>machine1.example.com:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.mycluster.nn2</name>
  <value>machine2.example.com:8020</value>
</property>

 或者使用http地址:

<property>
  <name>dfs.namenode.http-address.mycluster.nn1</name>
  <value>machine1.example.com:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.mycluster.nn2</name>
  <value>machine2.example.com:50070</value>
</property>

 

4. dfs.namenode.shared.edits.dir - the URI which identifies the group of JNs where the NameNodes will write/read edits

<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://node1.example.com:8485;node2.example.com:8485;node3.example.com:8485/mycluster</value>
</property>

 

5. dfs.client.failover.proxy.provider.[nameservice ID] - the Java class that HDFS clients use to contact the Active NameNode

<property>
  <name>dfs.client.failover.proxy.provider.mycluster</name>
  <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>

 

6. dfs.ha.fencing.methods - a list of scripts or Java classes which will be used to fence the Active NameNode during a failover

有两种可选方案:

sshfence - SSH to the Active NameNode and kill the process

<property>
  <name>dfs.ha.fencing.methods</name>
  <value>sshfence</value>
</property>

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

或 

shell - run an arbitrary shell command to fence the Active NameNode

<property>
  <name>dfs.ha.fencing.methods</name>
  <value>shell(/path/to/my/script.sh arg1 arg2 ...)</value>
</property>

 

7. fs.defaultFS - the default path prefix used by the Hadoop FS client when none is given

<property>
  <name>fs.defaultFS</name>
  <value>hdfs://mycluster</value>
</property>

 

8.dfs.journalnode.edits.dir - the path where the JournalNode daemon will store its local state 

<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/path/to/journal/node/local/data</value>
</property>

 

 二)、部署

上述配置调整完毕后,我们就可以启动journalNodes守护进程,默认的"sbin/start-dfs.sh"脚本会根据"dfs.namenode.shared.edits.dir"配置,在相应的Datanode上启动journalNodes。当然我们可以使用::"bin/hdfs start journalnode"分别在相应的机器上启动。

一旦JournalNodes启动成功,它们将会从Namenode上同步metadata。

1、如果你的HDFS集群是新建的,那么需要在每个Namenode上执行"hdfs namenode -format"指令。

2、如果你的namenodes已经format了,或者是将non-ha转换成ha架构,你应该在将其中一个namenode上的metadata复制到另一台上(dfs.namenode.name.dir目录下的数据),然后在那个没有format的新加入的namenode上执行"hdfs namenode -bootstrapStandby"。运行这个指令需要确保JournalNodes中持有足够多的edits。

3、如果你将一个non-ha的Namenode(比如backup,其已经formated)切换成HA,你需要首先运行"hdfs -initializeSharedEdits",这个指令将本地Namenode中的edits初始化Journalnodes。

 

此后,你就可以启动HA Namenodes。可以通过配置指定的HTTP地址(dfs.namenode.https-address)来查看各个Namenode的状态,Active or Standby。

 

三)、管理员指令 手动切换主备namenode

HA集群启动后,我们可以通过一些指令来管理HDFS集群。“bin/hdfs haadmin -DFSHAAdmin”指令,其可选参数:

1、-transitionToActive <namenode id>与-transitionToStandbyl <namenode id>:将指定的namenode ID切换为Active或者standby。这个指令并不会触发“fencing method”,所以不常用,我们通常使用"hdfs haadmin -failover"来切换Namenode状态。

2、-failover [--forcefence] [--foreactive] <serviceId-fist> <serviceId-second>:在两个Namenode之间failover。这个指令会触发将first节点failover到second节点。如果first处于standby,那么只是简单的将second提升为Active。如果first为Active,那么将会友好的将其切换为standby,如果失败,那么fencing methods将会触发直到成功,此后second将会提升为Active。如果fencing method失败,那么second将不会被提升为Active。

例如:"hdfs haadmin -DFSHAAdmin -failover nn1 nn2"

3、-getServiceState <serviceId>:获取serviceId的状态,Active还是Standby。链接到指定的namenode上,并获取其当前的状态,打印出“standby”或者“active”。我可以在crontab中使用此命令,用来监测各个Namenode的状况。

4、-checkHealth <serviceId>:检测指定的namenode的健康状况。

 

四 自动Failover  失败情况下自动切换主备namenode

1. hdfs-site.xml

<property>  
    <name>dfs.ha.automatic-failover.enabled</name>  
    <value>true</value>  
</property>  

 2. core-site.xml

<property>
   <name>ha.zookeeper.quorum</name>
   <value>zk1.example.com:2181,zk2.example.com:2181,zk3.example.com:2181</value>
 </property>

 

3. 初始化HA状态

上述准备工作结束后,我们还需要在zookeeper中初始化HA的状态,通过执行“hdfs zkfc -formatZK”,此命令将会在zookeeker中创建一个znode,用来保存HA或failover的数据。

 

4. 启动集群

可以使用"start-dfs.sh"这个便捷的指令,它启动了hdfs所需要的所有守护进程,当然包括ZKFC。也可以使用"hadoop-daemon.sh start zkfc"手动启动ZKFC客户端。

 

 

 

 

 

参考:

http://hadoop.apache.org/docs/r2.6.5/hadoop-project-dist/hadoop-hdfs/HDFSHighAvailabilityWithQJM.html

http://shift-alt-ctrl.iteye.com/blog/2102571

  • 大小: 11.5 KB
分享到:
评论

相关推荐

    Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase)

    Hadoop HA高可用集群搭建(Hadoop+Zookeeper+HBase) 一、Hadoop HA高可用集群...通过规划服务器环境、选择合适的版本组合、安装和配置Zookeeper、Hadoop和HBase三个组件,可以搭建一个高效的Hadoop HA高可用集群。

    Hadoop HA高可用详细配置,100分也不贵

    ### Hadoop HA高可用配置详解 #### 一、HA机制-高可用性 在Hadoop集群中实现高可用性(HA)是确保集群稳定运行的关键技术之一。通过配置Hadoop HA,可以在Namenode出现故障时自动切换到备份Namenode,从而保障系统的...

    hadoop HA高可用性完全分布式集群安装

    ### hadoop HA高可用性完全分布式集群安装 在大数据处理领域,Hadoop作为一个开源软件框架,主要用于分布式存储和处理大规模数据集。为了提高系统的稳定性和可靠性,Hadoop提供了高可用性(High Availability,简称...

    Hadoop高可用配置HA.docx

    Hadoop高可用配置HA.docx

    hadoop3.1.1高可用配置

    本篇将详细介绍在Hadoop 3.1.1中实现HDFS(Hadoop Distributed File System)和YARN(Yet Another Resource Negotiator)的高可用配置。 首先,我们要理解高可用性(High Availability,HA)的重要性。在生产环境中...

    Hadoop(HA)高可用配置文件

    详细的 hadoop (HA)高可用配置文件内容,以及注释摘要。四个配置文件详细内容。

    HadoopHA高可用集群配置 yarn-site.xml

    HadoopHA高可用集群配置 yarn-site.xml yarn两台namenode配置不同

    HadoopHA高可用集群配置 core-site.xml

    ### Hadoop HA高可用集群配置核心解析:core-site.xml #### 概述 在搭建Hadoop高可用(High Availability, HA)集群时,`core-site.xml`是其中一个至关重要的配置文件。它主要用于定义Hadoop集群的基本属性,如...

    HadoopHA高可用集群配置 hdfs-site.xml

    ### Hadoop HA高可用集群配置详解 #### 一、引言 在大数据处理领域,Hadoop作为一款开源软件框架,以其高效稳定的数据处理能力而受到广泛欢迎。而在实际生产环境中,为了确保系统的高可用性和数据的安全性,通常会...

    HadoopHA集群配置文件

    本文将深入探讨Hadoop HA(高可用性)集群的配置文件,包括`core-site.xml`、`hdfs-site.xml`、`mapred-site.xml`、`yarn-site.xml`以及`slaves`文件,这些都是确保Hadoop集群稳定运行的基础。 1. `core-site.xml`:...

    HadoopHA高可用集群配置 yarn-site.xml slave

    HadoopHA高可用集群配置 yarn-site.xml slave

    hadoop3.3.4HA高可用配置

    hadoop3.3.4HA高可用配置

    HadoopHA高可用集群配置 yarn-site.xml master2

    ### Hadoop HA高可用集群配置详解 #### 一、引言 Hadoop 是一个能够对大量数据进行分布式处理的软件框架。随着业务需求的增长和技术的发展,对于数据处理平台的稳定性和可靠性提出了更高的要求。Hadoop HA(High ...

    第5章-Hadoop HA集群配置.pdf

    整个实验过程共分为三个部分:实验一:高可用 ZooKeeper 集群部署、实验二:Hadoop HA 集群配置和实验三:Hadoop HA 集群测试。 一、实验一:高可用 ZooKeeper 集群部署 1.1. 实验目的 本实验的目的是部署高可用 ...

    基于zookeeper的hadoop ha集群安装过程

    4. 配置Hadoop HA集群,以实现高可用性和可扩展性。 在安装过程中,需要注意以下几点: * 需要确保ZooKeeper集群的高可用性,以便于Hadoop HA集群的正常运行。 * 需要确保Hadoop NameNode和DataNode的高可用性,以...

    Hadoop2的HA配置一键运行脚本startall

    【标签】"HadoopHA"强调了这个话题的重点是Hadoop的高可用性特性。Hadoop HA通过增加一个备用NameNode,确保在主NameNode出现故障时,数据访问和服务不中断,提高了整个Hadoop集群的稳定性。 【压缩包子文件的文件...

    Hadoop HA搭建笔记和配置文件

    3. **配置HDFS HA**:在`hdfs-site.xml`中配置HA相关参数,如`fs.defaultFS`为HDFS的高可用命名空间地址,通常采用`hdfs://nameservice1`形式。还需配置`dfs.nameservices`,定义NameNode集群的名字。同时,为每个...

    配hadoopHA最怕就是配置文件错了

    在Hadoop分布式计算环境中,高可用性(High Availability, HA)是确保系统稳定运行的关键特性。标题提到的“配Hadoop HA最怕就是配置文件错了”,意味着配置Hadoop HA时,配置文件的正确性至关重要。这里我们将深入...

    Hadoop HA(QJM)高可集群性配置

    在配置高可用性时,需要至少两个NameNode节点,一个处于Active状态,而另一个处于Standby状态。Active NameNode负责处理客户端的所有操作请求,而Standby NameNode则通过共享存储设备保持与Active节点的数据同步,...

    HadoopHA配置文件.rar

    本文件"**HadoopHA配置文件.rar**"包含了实现Hadoop HA所需的一些核心配置,主要包括`core-site.xml`、`hdfs-site.xml`、`mapred-site.xml`和`yarn-site.xml`,以及`slaves`文件。以下将详细解析这些配置文件中的...

Global site tag (gtag.js) - Google Analytics