hdfs集群搭建-HA模式

ha (双机集群(HA)系统简称)
HA是High Available缩写,是双机集群系统简称,指高可用性集群,是保证业务连续性的有效解决方案,一般有两个或两个以上的节点,且分为活动节点及备用节点。

添加hosts 条目

vi /etc/hosts 添加如下条目

192.168.80.111 node1
192.168.80.112 node2
192.168.80.113 node3
192.168.80.114 node4
角色分布表
主机名NameNodeNameNode2JournalNodeDataNodeZKFCZooKeeper
node1**
node2****
node3**
node4**

配置免密登录

先尝试下自己是否可以ssh登录自己,输入密码登录后退出。

[root@192 ~]#  ssh localhost
root@localhost's password: 
Last login: Fri Jul 24 20:58:41 2020 from 192.168.80.1
[root@192 ~]# exit

打开~/.ssh目录,使用

ssh-keygen -t rsa

然后复制到四个主机的~/.ssh/id_rsa.pub分发给其他主机,使用如下命令(以node1为例):

cd ~/.ssh
scp id_rsa.pub @node1:`pwd`/node1_rsa.pub
scp id_rsa.pub @node2:`pwd`/node2_rsa.pub
scp id_rsa.pub @node3:`pwd`/node3_rsa.pub
scp id_rsa.pub @node4:`pwd`/node4_rsa.pub

以上的命令都要输各个主机的密码。
在四个主机上执行以上命令,然后写入到~/.ssh/authorized_keys

cd ~/.ssh
cat node1_rsa.pub >> authorized_keys
cat node2_rsa.pub >> authorized_keys
cat node3_rsa.pub >> authorized_keys
cat node4_rsa.pub >> authorized_keys

到此免密登录配置结束。

安装zookeeper

将zookeeper的压缩包使用 tar -xf zookeeper-3.4.14.tar.gz命令解压缩

 tar -xf zookeeper-3.4.14.tar.gz

将解压的zookeeper-3.4.14文件夹移动到/opt/bigdata目录下

mv -r zookeeper-3.4.14 /opt/bigdata

设置hadoop的环境变量(和jdk配置的过程一样),编辑etc/profile文件 添加如下条目

export JAVA_HOME='/usr/java/default'
export HADOOP_HOME='/opt/bigdata/hadoop-2.7.3'
export ZK_HOME='/opt/bigdata/zookeeper-3.4.14'
PATH=$PATH:$JAVA_HOME/bin:$HADOOP_HOME/bin:$HADOOP_HOME/sbin:$ZK_HOME/bin

保存并退出后,重新载入一下,使用如下命令

source etc/profile

测试下 ,输入echo $ZK_HOME如果输出/opt/bigdata/zookeeper-3.4.14,表示配置成功。

修改zookeeper的配置文件

进入/opt/bigdata/zookeeper-3.4.14/conf/ ,将zoo_sample.cfg复制一份更改为zoo.cfg,配置zookeeper的节点。


dataDir=/var/bigdata/hadoop/zk
server.1=node2:2888:3888
server.2=node3:2888:3888
server.3=node4:2888:3888
分发基础环境

1.在各个主机分发jdk,在jdk的目录下:

 scp jdk-8u91-linux-x64.rpm @node2:`pwd`
 scp jdk-8u91-linux-x64.rpm @node3:`pwd`
 scp jdk-8u91-linux-x64.rpm @node4:`pwd`

分别在各个主机上安装jdk

rpm -i jdk-8u91-linux-x64.rpm 

2.分发/etc/profile文件

scp /etc/profile @node2:/etc/profile
scp /etc/profile @node3:/etc/profile
scp /etc/profile @node4:/etc/profile

配置hadoop

修改core-site.xml 文件

打开/opt/bigbata/hadoop-2.7.3/etc/hadoop/core-site.xml文件,并在<configuration></configuration>标签中添加:

    <property>
        <name>fs.defaultFS</name>
        <!--配置默认的文件系统-->
        <value>hdfs://mycluster</value>
    </property>

    <property>
        <name>ha.zookeeper.quorum</name>
        <!--配置 zookeeper 服务器地址-->
        <value>node2:2181,node3:2181,node4:2181</value>
    </property>


修改hdfs-site.xml

打开/opt/bigbata/hadoop-2.7.3/etc/hadoop/hdfs-site.xml文件,并在<configuration></configuration>标签中添加:

    <property>
        <name>dfs.replication</name>
        <!--配置文件副本数-->
        <value>2</value>
    </property>

    <property>
        <name>dfs.nameservices</name>
         <!--配置服务器名称-->
        <value>mycluster</value>
    </property>

    <property>
        <name>dfs.ha.namenodes.mycluster</name>
         <!--配置namenode的服务器-->
        <value>nn1,nn2</value>
    </property>

    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn1</name>
                <!--配置nn1的服务地址-->
        <value>node1:8020</value>
    </property>

    <property>
        <name>dfs.namenode.http-address.mycluster.nn1</name>
           <!--配置nn1的http服务地址-->
        <value>node1:50070</value>
    </property>
    
 
    <property>
        <name>dfs.namenode.rpc-address.mycluster.nn2</name>
             <!--配置nn2的服务地址-->
        <value>node2:8020</value>
    </property>
    

    <property>
        <name>dfs.namenode.http-address.mycluster.nn2</name>
        <!--配置nn2的http服务地址-->
        <value>node2:50070</value>
    </property>

	<property> 
		<name>dfs.ha.automatic-failover.enabled.mycluster</name> 
        <!--开启故障转移-->
		<value>true</value> 
	</property> 

    <property>
        <name>dfs.namenode.shared.edits.dir</name>
         <!-- 配置edits共享地址,journalnode的地址。 -->
         <value>qjournal://node1:8485;node2:8485;node3:8485/mycluster</value>
    </property>

    <property>
        <name>dfs.journalnode.edits.dir</name>
          <!-- 配置journalnode的目录。 -->
        <value>/var/bigdata/hadoop/ha/dfs/jn</value>
    </property>


    <property>
        <name>dfs.client.failover.proxy.provider.mycluster</name>
          <!--不懂,求告知 -->
          <value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverPro
xyProvider</value>   
	 </property>


	
	 <property>  
		<name>dfs.ha.fencing.methods</name>  
		<value> 
		sshfence
		shell(/bin/true)
		</value>  
	</property>

    <property>
        <name>dfs.ha.fencing.ssh.private-key-files</name>
          <!-- 免密登录的加密方式 -->
        <value>/root/.ssh/id_rsa</value>
    </property>




dfs.ha.fencing.methods配置有sshfence和shell两种方法:
sshfence:防止namenode脑裂,当脑裂时,会自动通过ssh到old-active将其杀掉,将standby切换为active。
但是只能在网络通畅时有效,一旦ipdown后fencing方法返回false,standby不会自动切换active,
只能手动执行 hdfs haadmin failover namenode1 namenode2 进行切;所以需要加配shell(/bin/true)。
想要kill掉namenode active后standby自动切换为active,需要安装psmisc(fuser);因为sshfence方式
是使用fuser通过ssh登录old-active进行诊断从而切换active/standby的。
shell(/bin/true):如果出现故障并且fencing方法返回false,则会继续执行shell(true),从而active/standby自动切换。
fencing方法返回true,则不会执行shell。
原文链接:https://blog.csdn.net/w892824196/article/details/100059674

修改slaves文件

将slaves文件做如下修改

node2
node3
node4
分发hadoop文件

进入目录/opt/bigdata

scp hadoop-2.7.3 @node2:`pwd`
scp hadoop-2.7.3 @node3:`pwd`
scp hadoop-2.7.3 @node4:`pwd`

格式化集群

在node2-node4上启动zookeeper

zkServer.sh start

在node1-node3 上启动journalnode

hadoop-daemon.sh start journalnode

在node1上格式化集群,使用命令
```bash
hdfs namenode -format

在node1初始化zkfc

hdfs zkfc -formatZK

在node1启动namenode

hadoop-daemon start namenode

在node2上同步集群

hdfs namenode -bootstrapStandby

回到node1 ,启动集群

start-dfs.sh 

启动ZKFC

hadoop-daemon.sh   start  zkfc 

到此配置结束。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值