HA高可用

HA:高可用
-----------------------------------------------------------
1.Quorum Journal Manager:群体日志管理
  个数2n+1个,保证节点宕机次数为(n-1)/2;一般情况下,JNS在slave节点开启;
2.HA的namenode个数:一定是两个:nn1和nn2;
3.搭建HA步骤:
0.创建软连接:指向hadoop_cluster_HA
1.修改【hdfs-site.xml】
  <property>
    <name>dfs.nameservices</name>
    <value>mycluster</value>
  </property>
  //指定两个namenode的唯一标识:注意一定是两个
  <property>
    <name>dfs.ha.namenodes.mycluster</name>
    <value>nn1,nn2</value>
  </property>
  //修改namenode RPC访问端口
  <property>
    <name>dfs.namenode.rpc-address.mycluster.nn1</name>
    <value>master:9000</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.mycluster.nn2</name>
    <value>slave1:9000</value>
  </property>
  //修改http-WEBUI访问端口
  <property>
    <name>dfs.namenode.http-address.mycluster.nn1</name>
    <value>master:50070</value>
  </property>
  <property>
    <name>dfs.namenode.http-address.mycluster.nn2</name>
    <value>slave1:50070</value>
  </property>
  //标识NameNodes写入/读取编辑的一组JNs的URI
  <property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://master:8485;slave1:8485;slave2:8485/mycluster</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/exampleuser/.ssh/id_rsa</value>
  </property>

2.修改【core-site.xml】
  <property>
    <name>fs.defaultFS</name>
    <value>hdfs://mycluster</value>
  </property>
  <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/home/hyxy/tmp/journal</value>
  </property>
3.将所有的配置项分发至其他节点
  $>scp -r hadoop_cluater_ha [email protected]:~/soft/hadoop/etc/
  $>scp -r hadoop_cluater_ha [email protected]:~/soft/hadoop/etc/
4.在【master:8485;slave1:8485;slave2:8485】三个节点上分别开启journalnode
  $>hadoop-daemon.sh start journalnode
  $>jps
5.一旦启动了JournalNodes,就必须首先同步两个HA NameNodes的磁盘元数据。
  a.如果要设置新的HDFS集群,则应首先在其中一个NameNode上运行format命令
    $>hdfs namenode -format
    慎用!!!
  b.如果您已经格式化了NameNode,或者正在将启用了HA的群集转换为启用HA,
  在未格式化的NameNode上,则现在应该通过运行命令“ hdfs namenode -bootstrapStandby”将NameNode元数据目录的内容复制到另一个未格式化的NameNode上。
  运行此命令还将确保JournalNodes(由dfs.namenode.shared.edits.dir配置)包含足够的编辑事务,以便能够启动两个NameNode。
  确保JournalNodes开启,在nn2上执行以下命令;
    $>hadoop-daemon.sh start namenode(首先在nn1开启namenode进程)
    $>hdfs namenode -bootstrapStandby
  说明:将nn1节点的fsimage复制到nn2中【{HADOOP_TMP_DIR}/dfs/name】
  c.如果要将非HA NameNode转换为HA,则应运行命令“ hdfs namenode -initializeSharedEdits ”,该命令将使用来自本地NameNode编辑目录的编辑数据初始化JournalNodes。
  在nn1上,执行以下命令;
    $>hadoop-daemon.sh stop namenode(关闭namenode)
    $>hdfs namenode -initializeSharedEdits
6.start-dfs.sh
7.验证:分别打开WebUI,查看nn1和nn2的相关信息,均为standby(备用状态)
8.HA 集群管理:
用法:hdfs haadmin
[ -transitionToActive <serviceId>] // 将给定NameNode的状态转换为Active
[-transitionToStandby <serviceId>] // 将给定NameNode的状态转换为Standby
[-failover [--forcefence] [--forceactive] <serviceId> <serviceId>]
[-getServiceState <serviceId>]
[-checkHealth <serviceId> ]
[-help <command>]

手动切换Active/Standby状态:
  $>hdfs haadmin -transitionToActive nn1
  $>hadoop fs -put tt.txt
  $>hdfs haadmin -transitionToStandby nn1
  $>hdfs haadmin -transitionToActive nn2
  $>hadoop fs -put tt1.txt

自动容灾
-----------------------------------------------
1.完成自动容灾,需在HDFS部署环境中增加两个组件:
  a.Zookeeper 集群
  b.ZKFC:zookeeper FailoverController process
2.Zookeeper作用:
  Apache ZooKeeper是一种高可用性服务,用于维护少量协调数据,通知客户端该数据的更改以及监视客户端的故障。自动HDFS故障转移的实现依赖于ZooKeeper来实现以下功能:
  a.故障检测:集群中的每个NameNode计算机都在ZooKeeper中维护一个持久会话。如果计算机崩溃,ZooKeeper会话将过期,通知另一个NameNode应该触发故障转移。
  b.active活跃节点的选举:ZooKeeper提供了一种简单的机制,可以将节点专门选为活动节点。如果当前活动的NameNode崩溃,则另一个节点可能在ZooKeeper中采用特殊的独占锁,指示它应该成为下一个活动的。
3.ZKFailoverController(ZKFC)作用:
  a.它是一个ZooKeeper客户端,它还监视和管理NameNode的状态。
  b.运行NameNode的每台机器也运行ZKFC,ZKFC负责:
  运行状况监视:ZKFC定期使用运行状况检查命令对其本地NameNode进行ping操作。只要NameNode及时响应健康状态,ZKFC就会认为该节点是健康的。如果节点已崩溃,冻结或以其他方式进入不健康状态,则运行状况监视器会将其标记为运行状况不佳。
  ZooKeeper会话管理:当本地NameNode运行正常时,ZKFC在ZooKeeper中保持会话打开。如果本地NameNode处于活动状态,它还拥有一个特殊的“锁定”znode。此锁使用  ZooKeeper对“临时”节点的支持; 如果会话到期,锁定节点将自动删除。
  选举制度:如果本地NameNode是健康的,并且ZKFC发现没有其他节点当前持有锁znode,它将自己尝试获取锁。如果成功,那么它“赢得了选举”,并负责运行故障转移以使其本地NameNode处于活动状态。故障转移过程类似于上述手动故障转移:首先,必要时对先前的活动进行隔离,然后本地NameNode转换为活动状态。
4.安装zookeeper
  a.下载zookeeper3.4.6.tar.gz
  b.解压至【/home/hyxy/soft】
  c.创建软连接:$>ln -s zookeeper3.4.6/ zookeeper
  d.配置环境变量:在~/.bash_profile中追加
    export ZOOKEEPER_HOME=/home/hyxy/soft/zookeeper
    export PATH=$ZOOKEEPER_HOME/bin:$PATH
  e.修改【{ZOOKEEPER_HOME}/conf/zoo.cfg】zoo.cfg需cp
    tickTime=2000
    initLimit=10
    syncLimit=5
    dataDir=/home/hyxy/tmp/zookeeper
    clientPort=2181
  f.开启zookeeper Server
    $>zkServer.sh start
    $>jps
      5914 QuorumPeerMain //QuorumPeerMain:zookeeper Server的守护进程
      5931 Jps
  g.客户端连接:
    $>zkCli.sh
      5988 ZooKeeperMain //ZooKeeperMain:zookeeper client的守护进程
  h.关机Zookeeper Server
    $>zkServer.sh stop

原文地址:https://www.cnblogs.com/lyr999736/p/9381709.html

时间: 2024-08-27 17:08:50

HA高可用的相关文章

CentOS7+Hadoop2.7.2(HA高可用+Federation联邦)+Hive1.2.1+Spark2.1.0 完全分布式集群安装

1       VM网络配置... 3 2       CentOS配置... 5 2.1             下载地址... 5 2.2             激活网卡... 5 2.3             SecureCRT. 5 2.4             修改主机名... 6 2.5             yum代理上网... 7 2.6             安装ifconfig. 8 2.7             wget安装与代理... 8 2.8       

搭建HA高可用集群

搭建HA高可用集群 一.搭建集群的准备环境 有三台机器,两台上装ricci,另外一台装luci Luci管理机:172.25.47.6 Ricci节点:172.25.47.4   172.25.47.5 Yum仓库: Yum仓库中要指向其他的一些包 注意:yum仓库一般是从Server目录中下载包,但是也有一些其他的包在其他的目录下,因此此次yum 源的配置会和以往不一样 Yum源中配置的是这几个模块: 防火墙方面: 永久关闭防火墙 Selinux方面: 由于这些套件是redhat自带的,所以可

HA高可用的搭建

HA 即 (high available)高可用,又被叫做双机热备,用于关键性业务. 简单理解就是,有两台机器A和B,正常是A提供服务,B待命闲置,当A宕机或服务宕掉,会切换至B机器继续提供服务.常用实现高可用的开源软件有heartbeat和keepalived,其中keepalived有负载均衡的功能.<ignore_js_op> HA高可用搭建目的及环境说明: 这次是为nginx服务搭建高可用集群. 环境说明:1台主服务器,一台备用服务器. 其中主服务器的eth0 192.168.2.77

ha高可用集群配置(双机热备)

我们用heartbeat开源软件来做ha高可用 准备两台主机A和B A  : eth1 192.168.1.100 B : eth1 192.168.1.101 给主机A修改主机名 hostname master 或者vim /etc/sysconfig/network 给主机B修改主机名 hostname slave 或者vim /etc/sysconfig/network 修改/etc/hosts文件 两台机器上都加入 192.168.1.100  master 192.168.1.101

【4】搭建HA高可用hadoop-2.3(部署配置HBase)

[1]搭建HA高可用hadoop-2.3(规划+环境准备) [2]搭建HA高可用hadoop-2.3(安装zookeeper) [3]搭建HA高可用hadoop-2.3(部署配置hadoop--cdh5.1.0) [4]搭建HA高可用hadoop-2.3(部署配置HBase) 部署配置habase (1)安装habase master1.slave1.slave2.slave3 #cd /opt #tar xf  hbase-0.98.1-cdh5.1.0.tar.gz #ln -s  hbas

Heartbeat学习笔记--HA高可用集群实现

一.部署环境: 服务器版本:CentOS6.5 双主热备模式: VIP:192.168.3.30(MASTER上) VIP:192.168.3.32(BACKUP上) 主机网络参数: 接口 MASTER BACKUP 说明 eth1 192.168.3.23 192.168.3.24 内网管理IP eth2 192.168.5.23 192.168.5.24 心跳线 eth3 192.168.2.23 192.168.2.24 外网(临时下载文件用) 网络拓扑: 二.需求分析: 通过Heartb

红帽436——HA高可用集群之概念

一.集群概念: 集群:提高性能,降低成本,提高可扩展性,增强可靠性,任务调度室集群中的核心技术. 集群作用:保证业务不断 集群三种网络:业务网络,集群网络,存储网络 二.集群三种类型: HA:高可用集群     -->正在学习的集群 LP:负载均衡集群 HPC:分布式集群 三.HA模型架构图:(图一.图二) (图一) (图二)

红帽436——HA高可用集群之概念篇

一.集群概念: 集群:提高性能,降低成本,提高可扩展性,增强可靠性,任务调度室集群中的核心技术. 集群作用:保证业务不断 集群三种网络:业务网络,集群网络,存储网络 二.集群三种类型: HA:高可用集群     -->正在学习的集群 LP:负载均衡集群 HPC:分布式集群 三.HA模型架构图:(图一.图二) (图一) (图二)

红帽436——HA高可用集群之安装篇

红帽436--HA高可用集群的安装 图释: 1-  su - :真实机切换至root用户 2-  virt-manager :打开KVM管理工具 3-  从Desktop开启虚拟机:classroom(充当服务器的作用)和三台节点机 图释:在每台节点中操作 1-  通过ssh以节点root远程登录三个节点进行操作: ssh [email protected] 2-  安装pcs服务 3-  关闭firewall,并永久启用pcs服务 4-  设置用户hacluster密码:redhat    -