高可用HA的搭建

10 篇文章 0 订阅
10 篇文章 2 订阅

配置高可用

1.安装zookeeper
2.编辑那个安装zookeeper目录下conf文件夹里面的zoo_cfg

没有的话拷贝zoo_(添加到里面三台机器的ip地址,创建目录,在目录下创建myid,然后在每个myid下添加1,2,3、分别对应第一台,第二三台机器)

dataDir=/home/hadoop/apps/zkdata

server.1=192.168.80.10:2888:3888
server.2=192.168.80.11:2888:3888
server.3=192.168.80.12:2888:3888

3.在每台机器上开启服务

zkServer.sh start

开启失败时,去看下etc/hosts 将第一行注释很大原因是它,要么就是版本不匹配

4.查看状态

zkServer.sh status

5配置所有文件
vi core-site.xml
<configuration>
	<!-- 指定hdfs的nameservice为ns1 -->
	<property>
		<name>fs.defaultFS</name>
		<value>hdfs://qf/</value>
	</property>
	<!-- 指定hadoop临时目录 -->
        <property>
        	<name>hadoop.tmp.dir</name>
        	<value>/home/hadoop/hdpdata</value>
	</property>
					
<!-- 指定zookeeper地址 -->
	<property>
		<name>ha.zookeeper.quorum</name>
		<value>mini01:2181,mini02:2181,mini03:2181</value>
	</property>
</configuration>

vi hdfs-site.xml
<configuration>
  <property>
    <name>dfs.replication</name>
    <value>3</value>
  </property>

  <property>
    <name>dfs.block.size</name>
    <value>134217728</value>
  </property>

  <property>
    <name>dfs.namenode.name.dir</name>
    <value>/home/hadoop/name1</value>
  </property>

  <property>
    <name>dfs.datanode.data.dir</name>
    <value>/home/hadoop/apps/hadoop/data</value>
  </property>



  <!--指定hdfs的虚拟服务名-->
  <property>
    <name>dfs.nameservices</name>
    <value>qf</value>
  </property>

  <!--指定hdfs的虚拟服务名下的namenode-->
  <property>
    <name>dfs.ha.namenodes.qf</name>
    <value>nn1,nn2</value>
  </property>  
  <!--指定namenode的内部通信地址-->
  <property>
    <name>dfs.namenode.rpc-address.qf.nn1</name>
    <value>mini01:9000</value>
  </property>
  <property>
    <name>dfs.namenode.rpc-address.qf.nn2</name>
    <value>mini02:9000</value>
  </property>

  <!--指定namenode的web ui通信地址-->  
  <property>
    <name>dfs.namenode.http-address.qf.nn1</name>
    <value>mini01:50070</value>
  </property>
  <property>
    <name>dfs.namenode.http-address.qf.nn2</name>
    <value>mini02:50070</value>
  </property>

  <!--指定journalnode数据共享目录-->
  <property>
    <name>dfs.namenode.shared.edits.dir</name>
    <value>qjournal://mini01:8485;mini02:8485;mini03:8485/qf</value>
  </property>

   <!--存放journalnode本地存放目录-->
   <property>
    <name>dfs.journalnode.edits.dir</name>
    <value>/home/hadoop/apps/hadoop/journaldata</value>
  </property>
  <!--开启namenode失败是否自动切换-->
   <property>
    <name>dfs.ha.automatic-failover.enabled</name>
    <value>true</value>
  </property>

   <!--指定namanode失败进行自动切换的主类-->
   <property>
     <name>dfs.client.failover.proxy.provider.qf</name>
     <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
   </property>
   <!--指定脑裂时,采用某种方式杀死期中一个-->
  <!--防止多个namenode,同active(脑裂)-->
   <property>
    <name>dfs.ha.fencing.methods</name>
    <value>sshfence</value>
  </property>

  <property>
    <name>dfs.ha.fencing.ssh.private-key-files</name>
    <value>/home/hadoop/.ssh/id_rsa</value>
  </property>  
   <property>
    <name>dfs.ha.fencing.ssh.connect-timeout</name>
    <value>30000</value>
  </property>



</configuration>

在hdfs高可用HA的基础上搭建yarn
配置运行环境
vi mapred-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_67
vi yarn-env.sh
export JAVA_HOME=/usr/java/jdk1.7.0_67

##### 配置配置文件
vi mapred-site.xml

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

vi yarn-site.xml
<configuration>
<!-- 开启RM高可用 -->
<property>
<name>yarn.resourcemanager.ha.enabled</name>
<value>true</value>
</property>
<!-- 指定RM的cluster id -->
<property>
<name>yarn.resourcemanager.cluster-id</name>
<value>yrc</value>
</property>
<!-- 指定RM的名字 -->
<property>
<name>yarn.resourcemanager.ha.rm-ids</name>
<value>rm1,rm2</value>
</property>
<!-- 分别指定RM的地址 -->
<property>
<name>yarn.resourcemanager.hostname.rm1</name>
<value>mini01</value>
</property>
<property>
<name>yarn.resourcemanager.hostname.rm2</name>
<value>mini02</value>
</property>
<!-- 指定zk集群地址 -->
<property>
<name>yarn.resourcemanager.zk-address</name>
<value>mini01:2181,mini02:2181,mini03:2181</value>
</property>
<property>
<name>yarn.nodemanager.aux-services</name>
<value>mapreduce_shuffle</value>
</property>
</configuration>
分发:

scp命令

scp -r hadoop-2.7.7 root@hadoop02:$PWD

scp -r hadoop-2.7.7 root@hadoop03:$PWD

免密:

各台机器间的免密设置

两台resourecmanager之间一定要免密

启动

启动zk
zkServer.sh start

jps查看
2674 Jps
2647 QuorumPeerMain

启动journalnode服务
hadoop-daemon.sh start journalnode

jps查看
2739 JournalNode
2788 Jps
2647 QuorumPeerMain

挑选两个namenode之中的一台来格式化
hdfs namenode -format

然后启动namenode,任意一台
hadoop-daemonsh start namenode

在另一台namenode的机子上拉取元数

hdfs namenode -bootstrapStandby

格式化zkfc(在namenode节点)
hdfs zkfc -formatZK,两个节点

开启服务

start-all.sh

注意:每次重新启动开启服务时,保证zookeeper服务和journalnode是启动的再去启动所有服务。

还有namenode和zookeeper的格式化不宜频繁,在完美成功一次后尽量不要在初始化。

此次问题:

每次的namenode只能启动一台,并且hadoop01挂掉后hadoop02也会挂掉,最后发现在每次删除namenode和datanode的存放路径时连带把zookeeper下的配置路径下的myid也删除,有这个原因导致后面的集群启动失败,后来zookeeper的进程只能强制杀死,最后重新启动zookeeper并格式化,重新启动集群。注意:一定要按顺序启动。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值