桥连控制高可用HDFS集群

HDFS完全分布式高可用集群一般至少有4个节点,平时学习过程中我们一般会通过搭建四个虚拟机来实现。
但如果一台机子同时启动四台虚拟机外加以后需要用到的eclipse和tomcat,其负载之大可以想象,所以我们可以通过用另一台主机A去连接主机B上的虚拟机中的HDFS从而加快我们的开发速度。

1.桥接模式

vmware workstation中有三种虚拟机网络的连接方式,分别为桥连,NAT和主机模式

1)桥接

桥接网络是指本地物理网卡和虚拟网卡通过VMnet0虚拟交换机进行桥接,物理网卡和虚拟网卡在拓扑图上处于同等地位,那么物理网卡和虚拟网卡就相当于处于同一个网段,虚拟交换机就相当于一台现实网络中的交换机,所以两个网卡的IP地址也要设置为同一网段
在这种模式下,虚拟机可以被宿主机以及同一局域网中的任何计算机访问

2)NAT

相较于桥接,NAT模式也可以自由访问外网,但是他只能和宿主机之间相互通信,局域网中的其他计算机无法访问到他

3)主机模式

最封闭的模式,与外界完全隔绝,无法访问外网以及被外网访问,只能和宿主机之间相互通信

对比这三种模式,我们可以得出结论当需要访问的虚拟机大于1台时,我们就只能通过桥接模式去访问虚拟机(在一台虚拟机的情况下可以通过nat的端口转发功能,但超过一台似乎就无法实现)

将所有节点的网络连接方式设置为桥连
在这里插入图片描述

2.配置ip

###1)首先关闭防火墙!关闭防火墙!关闭防火墙!
hdfs集群的很多错误都是因为防火墙未关闭导致,所以首先我们关闭所有防火墙
在所有节点上运行

service iptables stop
chkconfig iptables off

接着关闭虚拟机的selinux

修改/etc/selinux/config 文件将SELINUX=enforcing改为SELINUX=disabled重启机器即可

然后修改网络配置文件

vi /etc/sysconfig/network

添加一行

GATEWAY=(宿主机网关)
vi /etc/sysconfig/network-scripts/ifcfg-eth0 

ONBOOT=yes
BOOTPROTO=static
在这里插入图片描述
下面是宿主机ip请对应更改
ip查看方式
win+r
输入cmd
输入ipconfig/all
在这里插入图片描述

附上vmware物理网卡地址
在这里插入图片描述
最后重启网络服务

service network restart

这样应该就可以访问外网了
在虚拟机打开浏览器进行测试
在这里插入图片描述
最后在查看是否能和局域网中的其他机器相互ping通
在虚拟机输入ping 172.17.36.49(同一局域网中的其他主机的ip)
在这里插入图片描述
在其他主机的cmd上输入

ping 172.17.36.223(虚拟机的ip)

在这里插入图片描述
测试成功,请在其余三台虚拟机上也完成以上配置
完成后接下来我们开始搭建hadoop高可用完全分布式集群

3.HDFS高可用完全分布式进群搭建

准备工作

       首先需要准备4台CentOS6.5虚拟机
       在搭建之前我们首先设定好各个虚拟机的角色
在这里插入图片描述
       分工好后需要进一步配置hosts:
       命令行:vi /etc/hosts/
       文件打开后在文件结尾处分别添加上四台虚拟机对应的IP地址与主机名。
在这里插入图片描述
**注意:四台虚拟机都需要修改hosts文件且均为桥接修改后的ip

配置免密登录

       配置免密登录之前需要先弄清楚几台虚拟机之间的连接关系,即NameNode连接其余所有节点,以及namenode02和namenode01之间的连接。所以本次将会用hadoop01连接自身与其余节点以及hadoop02连接hadoop01。
       首先在每个节点的命令行中输入:ssh-keygen -t rsa,这样就会在每个节点下的根目录中的 .ssh目录中生成一个公钥与私钥。
       最后在NameNode节点(Hadoop01)中运行:

ssh-copy-id -i ~/.ssh/id_rsa.pub root@hadoop01
ssh-copy-id -i ~/.ssh/id_rsa.pub root@hadoop02
ssh-copy-id -i ~/.ssh/id_rsa.pub root@hadoop03
ssh-copy-id -i ~/.ssh/id_rsa.pub root@hadoop04

在NameNode节点(Haddop02)中运行

ssh-copy-id -i ~/.ssh/id_rsa.pub root@hadoop01

配置ZooKeeper文件

       1.下载并解压ZooKeeper.tar.gz下载地址.
       由于我们只需要在hadoop02、03、04下配置zookeeper集群,所以我们将压缩包下载并解压至hadoop02节点
       2.将conf目录下的zoo_sample.cfg的名称改为zoo.cfg,命令行:mv zoo_sample.cfg zoo.cfg

       3.修改zoo.cfg,dataDir修改到任意目录,最后根据图片和主机名在文件最后添加一下文字。
在这里插入图片描述
       4.在hadoop02、03、04节点,dataDir中声明的目录中(/var/vickey/zookeeper),各自都创建一个myid的文件,各自的数值为添加语句中对应数值,如hadoop02的myid中数值为1,依次类推。
在这里插入图片描述
       5.配置完成后将配置好的文件包发给hadoop03和hadoop04

scr -r zookeeper-3.4.10 root@hadoop03:`pwd`
scr -r zookeeper-3.4.10 root@hadoop04:`pwd`

注意:需要根据主机名、自身文件路径与目标路径对语句进行简单调整

       6.在hadoop02、03、04节点ZooKeeper的bin目录下依次启动Zookeeper服务,命令行:./zkServer.sh start

配置hadoop文件

       修改hdfs-site.xml文件

<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>hadoop01:8020</value>
</property>
<property>
  			<name>dfs.namenode.rpc-address.mycluster.nn2</name>
  			<value>hadoop02:8020</value>
</property>
<property>
  			<name>dfs.namenode.http-address.mycluster.nn1</name>
  			<value>hadoop01:50070</value>
</property>
<property>
  			<name>dfs.namenode.http-address.mycluster.nn2</name>
  			<value>hadoop02:50070</value>
</property>
<property>
  			<name>dfs.namenode.shared.edits.dir</name>
  			<value>qjournal://hadoop01:8485;hadoop02:8485;hadoop03:8485/mycluster</value>
</property>
<property>
  			<name>dfs.journalnode.edits.dir</name>
  			<value>/var/sxt/hadoop/ha/jn</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>/root/.ssh/id_rsa</value>
</property>
<property>
   			<name>dfs.ha.automatic-failover.enabled</name>
   			<value>true</value>
</property>

       修改core-site.xml文件

<property>
   <name>fs.defaultFS</name>
   <value>hdfs://mycluster</value>
</property>
<property>
   <name>ha.zookeeper.quorum</name>
   <value>hadoop02:2181,hadoop03: 2181,hadoop04:2181</value>
</property>

       因为我们的虚拟机网络采用桥接模式,所以各个节点之间相互的通信速度会比较慢,hadoop默认的连接时间较短,初始化时如果连接超时会报错,所以我们需要额外追加新的配置来延长连接时间

<property>
    <name>ipc.client.connect.max.retries</name>
    <value>100</value>
</property>
<property>
    <name>ipc.client.connect.retry.interval</name>
    <value>10000</value>
</property>

将以上代码也写入core-site.xml
       修改slaves文件

hadoop02
hadoop03
hadoop04

配置完成,将配置好的hadoop文件夹发送给其余三个节点

scp -r hadoop-2.6.5 root@hadoop02:`pwd`
scp -r hadoop-2.6.5 root@hadoop03:`pwd`
scp -r hadoop-2.6.5 root@hadoop04:`pwd`

启动集群

       1)在hadoop01、02、03都执行以下命令

hadoop-daemon.sh start journalnode

       2)随机选取一台NameNode节点运行

hdfs namenode -format
hadoop-daemon.sh start namenode

       3)在另一台NameNode节点运行

hdfs namenode  -bootstrapStandby

       4)初始化ZKFC

hdfs zkfc -formatZK

       5)关闭所有节点的hdfs进程

stop-dfs.sh

       6)启动hdfs

start-dfs.sh

启动完成后,我们先通过jps查看所有进程是否启动
四个节点应该启动的进程对应如下
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
接着我们可以去浏览器查看集群运行情况
因为本次搭建我们采用的网络连接方式是桥接模式
所以我们可以直接在同一局域网的其他主机上的本地浏览器上查看
在这里插入图片描述
为了方便我们在以后的开发中更好的连接集群,我们可以将这四个节点和对应的ip写入本机的hosts文件
win10系统下hosts文件的位置为
C:\Windows\System32\drivers\etc
在hosts文件中加入四条记录
在这里插入图片描述
保存后配置完成

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值