HadoopHDFS系统双机热备方案

上传人:小** 文档编号:55603121 上传时间:2022-02-18 格式:DOC 页数:21 大小:362KB
收藏 版权申诉 举报 下载
HadoopHDFS系统双机热备方案_第1页
第1页 / 共21页
HadoopHDFS系统双机热备方案_第2页
第2页 / 共21页
HadoopHDFS系统双机热备方案_第3页
第3页 / 共21页
资源描述:

《HadoopHDFS系统双机热备方案》由会员分享,可在线阅读,更多相关《HadoopHDFS系统双机热备方案(21页珍藏版)》请在装配图网上搜索。

1、Hadoop HDFS系统双机热备方案1. 刖言HDFS包含两种角色:数据节点(data node)和名字节点(name node),名字节点只有一个,数据节点最多支持2000个。HDFS可以确保在硬件失效情况下数据存储的可靠性。常见的三种失败:名字节点失效,数据节点失效和网络分割(network partitions)。HDFS将每个文件存储成 block序列,除了最后一个block,所有的block都是同样的大 小。文件的所有 block为了容错都会被复制。每个文件的 block大小和replication因子都是 可配置的。Replication因子可以在文件创建的时候配置,以后也可以改

2、变。每个Data node节点都向 Name node周期性地发送心跳包。网络切割可能导致一部分Data node跟Name node失去联系。Name node通过心跳包的缺失检测到这一情况,并将这些Data node标记为dead,不会将新的10请求发给它们。Data node的死亡可能引起一些 block 的副本数目低于指定值,Name node不断地跟踪需要复制的block,在任何需要的情况下启动复制。因此在HDFS中通过复制可以确保数据节点的高可用性,名字节点的高可用性一般通 过HA方式实现:方案 1 drbd+heartbeat采用drbd实现共享存储,采用 heartbeat实现

3、心跳监控,所有服务器都配有双网卡,其 中一个网卡专门用于建立心跳网络连接。方案2磁盘阵列或SAN+ heartbeat名字节点负责整个文件系统目录结构、文档权限和文档的扩展属性连同维护整个文档 系统的数据一致性和响应客户端的请求。HDFS能够配置两个名字节点服务器,采用active/passive模式,两个服务器采用共享存储的方式来存放元数据。当某个名字节点出现故障后,备份服务器能够接管其服务,确保系统的正常运行。以下我们通过 DRBD和heartbeat实现了名字节点的高可用。2. 基本配置2.1. 硬件环境测试环境为 2节点,2台机器操作系统均为Red Hat Enterprise Lin

4、ux AS4 UP2,2.6.9-22.EL。两台主机的eth1使用双机对联线直接连接。每台主机预留 30G的raw空间作 为共用空间被HA使用。DRBD实现了网络RAID-1功能,即两台服务器一台是主节点,提供存储服务,一台是 从节点。在主节点上的任何操作 ,都会被同步到从节点的相应磁盘分区上,达到数据备份的 效果。当主节点发生故障时,通过 heartbeat从节点可以接管主节点的虚拟 IP。主机IP地址配置ost2(主节点)eth0: 192.168.188.202eth1: 10.0.0.202 (HA 心跳使容量:80G 接口标准:IDE用地址)eth0:0: 192.168.188.

5、201(虚拟IP)转速:7200rpm缓存容量:2M 平均寻道时间:9ms传输标准:ATA 133ost3 (从节点)eth0: 192.168.188.203eth1: 10.0.0.203 (HA 心跳使 用地址)eth0:0: 192.168.188.201(虚拟IP)容量:80G 接口标准:IDE 转速:7200rpm缓存容量:2M 平均寻道时间:9ms传输标准:ATA 13322网络配置1 修改 /etc/hostsvi /etc/hosts1)ost2的hosts内容如下:127.0.0.1localhost.localdoma in localhost192.168.188.20

6、1ostvip192.168.188.203ost3192.168.188.202ost2192.168.188.204ost410.0.0.202ost210.0.0.203ost3192.168.188.205ost52) ost3的hosts内容如下:127.0.0.1localhost.localdoma in localhost192.168.188.201ostvip192.168.188.203ost3192.168.188.202ost2192.168.188.204ost410.0.0.202ost210.0.0.203ost32其他配置文件1) ost2的hosts内容如下

7、:cat /etc/sysc on fig/network-scripts/ifcfg-ethO DEVICE=ethOONBOOT=yesBOOTPROTO=noneIPADDR=192.168.188.202NETMASK=255.255.255.0GATEWAY=192.168.188.253TYPE=Ethernetcat /etc/sysconfig/network-scripts/ifcfg-eth1DEVICE=eth1ONBOOT=yesBOOTPROTO=noneIPADDR=10.0.0.202NETMASK=255.255.255.0USERCTL=noPEERDNS=y

8、esTYPE=EthernetIPV6INIT=no2) ost3 的 hosts 内容如下 :cat /etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0ONBOOT=yesBOOTPROTO=staticIPADDR=192.168.188.203NETMASK=255.255.255.0GATEWAY=192.168.188.253cat /etc/sysconfig/network-scripts/ifcfg-eth1DEVICE=eth1ONBOOT=yesBOOTPROTO=staticIPADDR=10.0.0.203NETMA

9、SK=255.255.255.0配置完成后,试试在各自主机上 ping 对方的主机名,应该可以 ping 通。3 修改主机名vi /etc/sysconfig/network1) ost2 的 hosts 内容如下:NETWORKING=yesHOSTNAME=ost22) ost3 的 hosts 内容如下 :NETWORKING=yesHOSTNAME=ost32.3. 关闭 selinux( 所有机器 )SELinux 是一种基于 域-类型 模型( domain-type )的强制访问控制( MAC )安全系统, 它由 NSA 编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也

10、被打了 SELinux 的补丁,最后还有一个相应的安全策略。 Lustre 存储服务器和元数据目录服务器通 信会使用一些特殊端口,最好关闭 SELINUX 。编辑文件 /etc/sysconfig/selinux ,设置:SELINUX=disabled然后 reboot2.4. 关闭防火墙(所有机器)如果系统启动了 Iptables 服务,需要为相关服务打开端口(988, 1021 1023 等),简单的处理是关闭防火墙。#清除规则iptables -F#保存service iptables savechkconfig -level 2345 iptables offservice ipta

11、bles stop3. heartbeat 部署3.1. 安装HA与HA依赖包rpm -Uvh perl-TimeDate-1.16-1.2.el4.rf.noarch.rpmrpm -Uvh libnet-1.1.2.1-2.1.i386.rpmrpm -Uvh heartbeat-pils-2.1.4-2.1.i386.rpmrpm -Uvh heartbeat-stonith-2.1.4-2.1.i386.rpmrpm -Uvh heartbeat-2.1.4-2.1.i386.rpm32 配置 /etc/ha.d/ha.cf配置heartbeat守护进程使用交叉网络发送和接收心跳数据包

12、。1、使用下面的命令查找 Heartbeat RPM 包安装后释放的 ha.cf 样本配置文件:rpm -qd heartbeat | grep ha.cf2、使用下面的命令将样本配置文件复制到适当的位置:cp /usr/share/doc/packages/heartbeat/ha.cf /etc/ha.d/3、编辑 /etc/ha.d/ha.cf 文件,取消注释符号或增加以下内容:udpport 694#采用 ucast 方式,使用网卡 eth1 在主服务器和备用服务器之间发送心跳消息。指定对端 ip,即在 ost2 上指定 10.0.0.203,在 ost3 上指定 10.0.0.202

13、ucast eth1 10.0.0.2034、同时,取消 keepalive, deadtime 和 initdead 这三行的注释符号:keepalive 2deadtime 30initdead 120initdead 行指出 heartbeat 守护进程首次启动后应该等待 120 秒后再启动主服务器上的资 源,keepalive行指出心跳消息之间应该间隔多少秒,deadtime行指出备用服务器在由于主服务器出故障而没有收到心跳消息时,应该等待多长时间,Heartbeat 可能会发送警告消息指出你设置了不正确的值(例如:你可能设置 deadtime 的值非常接近 keepalive 的值以

14、确保一 个安全配置) 。5、将下面两行添加到 /etc/ha.d/ha.cf 文件的末尾:node ost2node ost3这里填写主、备用服务器的名字(uname -n命令返回的值)。6 日志文件,没有就创建logfile/var/log/ha-log7 使用 Heartbeat 重新启动守护进程你可以告诉 Heartbeat 它每次启动时启动一个守护进程,如果该守护进程停止运行时就启 动重新启动,要实现这样的功能,在 /etc/ha.d/ha.cf 中使用下面这样一行:respawn userid /usr/bin/mydaemon3.3. 配置 /etc/ha.d/authkeys1、

15、使用下面的命令定位样本 authkeys 文件,并将其复制到适当的位置:rpm -qd heartbeat | grep authkeyscp /usr/share/doc/packages/heartbeat/authkeys /etc/ha.d2、编辑/etc/ha.d/authkeys文件,取消下面两行内容前的注释符号:auth11 crc3、确保 authkeys 文件只能由 root 读取:chmod 600 /etc/ha.d/authkeys3.4. 配置 /etc/ha.d/haresourcesharesources的实际配置在drbd的配置中描述,这里只描述haresour

16、ces的语法。主服务器和备用服务器上的/etc/ha.d/haresources文件必须相同。haresources文件中的每一行通常都包括下面的内容:1) 正常情况下运行资源的服务器的名字(主服务器),后面跟一个空格或一个tab键2) 一个(可选的)ip 别名,启动资源前, Heartbeat 应该将其添加到系统上,后面跟一个空格。( ip 别名定义可能包括一个子网掩码和一个广播地址,使用斜线“/”字符分割)3)存在于 /etc/init.d 目录或 /etc/ha.d/resource.d 目录的一个资源脚本(这个脚本用于启动 和停止资源) ,如果需要传递参数给资源脚本,在参数前面添加两个

17、冒号即可,如果有多个 参数,参数之间也用两个冒号分隔。4)其他的资源脚本可以使用空格字符作为分隔符进行添加。注意:如果你需要创建一个比你屏幕长度还要长的haresource行,你可以使用反斜线“指出下一行仍然是haresources条目。这个语法简单地说就是一行有两个资源,每个资源有两个参数,如:primary-server IPaddress resource1:arg1:arg2 resource2:arg1:arg2实际上,在一个叫做 的服务器上,运行有 sendmail 和 httpd ,ip 地址是 209.100.100.3,那么就表示为: 209.100.100.3 sendma

18、il httpd 让我们更细致地检验 haresources 文件中的每一个元素。3.4.1. 主服务器名在 haresources 行的开头输入的主服务器名应该与在 /etc/ha.d/ha.cf 文件中指定的服务器 名匹配,同时也应该与在主服务器上运行 uname -n 命令返回的结果一致。3.4.2.ip 别名尽管它不是必须的,但通常在haresources文件中还是指定了ip别名,这个ip别名可以由主服务器提供也可以由备用服务器提供,依赖于谁的系统更健康,例如: 209.100.100.3Heartbeat将添加209.100.100.3作为现有网卡的ip别名,并通过这个网卡发送 AR

19、P欺 骗广播,如果主服务器停机,只需要在备用服务器上添加。实际上,当Heartbeat在haresources文件中看到一个 ip地址时,它运行/etc/ha.d/resource.d 目录下叫做 IPaddr 的资源脚本, 并传递需要的 ip 地址作为一个参数, /etc/ha.d/resource.d/IPaddr脚本调用包括在 Heartbeat包中的程序findif (查找接口),传递ip 别名给它, 这个程序自动选择物理网卡基于内核的网络路由表添加 ip 别名, 如果 findif 程序 不能定位添加ip别名的接口,它将在/var/log/messages文件中记录类似下面的信息:h

20、eartbeat: ERROR: unable to find an interface for 200.100.100.33.4.3. 资源haresources文件中的每一行可以包含一个或多个资源脚本名,资源之间使用空格隔开, 参数之间可以使用两个冒号隔开,例如:如果你需要Heartbeat发送一个专门的参数(假设FIFLE1 )到你的资源脚本(在单词start,status,或stop前),你应该使用下面的语法: myresource:FILE1 假设你在主服务器和备用服务器上的 haresources 文件中都添加了这一行,当它在主服 务器上第一次启动时,Heartbeat 将运行 /

21、etc/ha.d/resource.d/myresource FILE1 start,当主服务器失效时将在备用服务器上再次运行,当资源需要“释放”或停止,Heartbeat将使用命令/etc/ha.d/resource.d/myresource FILE1 stop 运行脚本。如果我们想联合我们的 iptakeover 脚本和 myresource 脚本和它的 FIFLE1 参数,我们应 该使用下面这一行: iptakeover myresource:FILE1要发送你的资源脚本几个参数的话, 在同一行上脚本名后输入它们, 每个参数用一对冒 号隔开,例如:要发送参数 FIFLE1 , UNAM

22、E=JOIN 和 L3 给 myresource 脚本,你的 haresources 文件看起来应该象: iptakeover myresource:FILE1:UNAME=JOHN:L33.5. 在备用服务器上安装 Heartbeat在主服务器上执行下面的命令复制所有配置文件到备用服务器上:scp -r /etc/ha.d ost3:/etc/ha.dscp命令是安全复制命令,它使用SSH协议在两个节点之间复制数据,-r选项指定scp复制主服务器上 /etc/ha.d 目录下的所有文件和所有子目录。3.6. 启动 Heartbeat1在主服务器和备用服务器上把heartbeat配置为开机自动

23、启动chkconfig -level 35 heartbeat on2 手工启停方法/etc/init.d/heartbeat start或者service heartbeat start/etc/init.d/heartbeat stop或者service heartbeat stop4. DRB部署4.1. 原理DRBD ( Distributed Replicated Block Device )是基于 Linux 系统下的块复制分发设备。 它可以实时的同步远端主机和本地主机之间的数据, 类似与 Raid1 的功能, 我们可以将它看 作为网络 Raid1 。在服务器上部署使用 DRBD

24、,可以用它代替共享磁盘阵列的功能, 因为数 据同时存在于本地和远端的服务器上, 当本地服务器出现故障时, 可以使用远端服务器上的 数据继续工作,如果要实现无间断的服务,可以通过 drbd 结合另一个开源工具 heartbeat, 实现服务的无缝接管。 DRBD 的工作原理如下图:SERVICESERVICEFILE SYSTEMBUFFER CACHEnarHDISK SCHEOHISIC DRIVER胖DISKRAW DEVICETClVlPillNIC DAIVERNICRAW DEVUCETCR/IPFILE SYSTEMuBUFFER CACHE:ufiD11 *DISKSCHEDI于

25、 I毎I JDISK DRIVERDISK42编译linux 内核由于2.4.9缺少CONNECTOR,导致drbd无法安装,因此必须编译内核。1下载内核首先从 http:/www.kernel.org/pub/linux/kernel/v2.6/ 下载内核,这里是linux-2618.tar.gz。2编译安装cd /usr/srctar zxvf lin ux-2618.tar.gzcd /usr/src/li nu x-2.6.18make mrpropercp /boot/config-uname -r .configmake menuconfig选择选项Load an Alternat

26、e Configuration File,然后 select,选择提取.config。在 device driver 中,选择Conn ector - uni fied userspace kern elspace lin ker-makemake modules_ in stallmake in stall3 修改 /boot/grub/grub.confdefault=0timeout=5splashimage=(hdO,O)/grub/splash.xpm.gzhidde nmenutitle Red Hat En terprise Linux AS (2.6.18)root (hd0,

27、0)kernel /vmli nu z-2.6.18 ro root=LABEL=/ rhgb quietinitrd /ini trd-2.6.18.imgtitle Red Hat En terprise Linux AS (2.6.9-67.0.4.EL_lustre.1.6.4.3smp)root (hd0,0)kernel /vmlinuz-2.6.9-67.0.4.EL_lustre.1.6.4.3smp ro root=LABEL=/ rhgb quietinitrd /initrd-2.6.9-67.0.4.EL_lustre.1.6.4.3smp.imgtitle Red H

28、at Enterprise Linux AS (2.6.9-22.EL)root (hd0,0)kernel /vmlinuz-2.6.9-22.EL ro root=LABEL=/ rhgb quietinitrd /initrd-2.6.9-22.EL.img4 重新启动补充说明:1) 错误提示新内核系统启动提示 Enforcing mode requested but no policy loaded. Halting now.kernel panic - not syncing: Attenpted to kill init2)原因enforcing 参数是在启动内核时传递给 seli

29、nux 的内核参数,它用来决定你系统的内核运 行于 强制( enforcing )模式还是自由( permissive ) 模式。在自由模式下 SELinux 只是记录他该做什么,而事实上并不做任何动作。在强制模式 下 SElinux 可能会阻止登陆。所以正常情况下在启动时传 enforcing=1 给内核,当 SELinux 策略有问题时,可以临时传 enforcing=0 给内核来查错。3) 解决办法(参见 2.3)方法 1编辑文件 /etc/sysconfig/selinux ,设置:SELINUX=disabled然后 reboot方法 2kernel /vmlinuz-2.6.18

30、ro root=LABEL=/ rhgb quiet修改为kernel /vmlinuz-2.6.18 ro root=LABEL=/ enforcing=0 rhgb quiet4.3. 安装 drbd从官方网站 www.drbd.org 下载源码包 drbd-8.3.0.tar.gz ,分别在两台主机上安装。tar xvzf drbd-8.3.0.tar.gzcd drbd-8.3.0cd drbdmake clean allcd .make toolsmake installmake install-tools4.4. 配置 drbd1.DRBD 使用的硬盘分区 这两个分区的大小必须相同

31、。我们指定两台主机的 /dev/hda5 分区作为 DRBD 的使用的分区这两个分区大小都为 32G。分区需为空白。主机 1 : ost2, IP 地址为 10.0.0.202, DRBD 分区为 /dev/hdb5主机 1 : ost3,IP 地址为 10.0.0.203, DRBD 分区为 /dev/hda5这里用 eth1 作为两个主机的通信接口。2. drbd.conf 配置文件DRBD 运行时, 会读取一个配置文件 /etc/drbd.conf 。这个文件里描述了 DRBD 设备与硬 盘分区的映射关系,和 DRBD 的一些配置参数:# 是否参加 DRBD 使用者统计 .默认是 yes

32、 global usage-count yes; # 设置主备节点同步时的网络速率最大值 ,单位是字节 . common syncer rate 10M; # 一个DRBD设备(即:/dev/drbdX),叫做一个”资源.里面包含一个 DRBD设备的主备 节点的相关信息 .resource r0 #使用协议C.表示收到远程主机的写入确认后,则认为写入完成 protocol C;disk on-io-error detach;size 30G; (由于硬盘大小不同,所以需要设置 drbd 的大小)net after-sb-0pri disconnect;rr-conflict disconnec

33、t;syncer rate 10M;(设置网络同步速率)al-extents 257;#每个主机的说明以on开头,后面是主机名在后面的中为这个主机的配置 on ost2 # /dev/drbd1 使用的磁盘分区是 /dev/hdb1device/dev/drbd0;disk/dev/hdb5;# 设置 DRBD 的监听端口 ,用于与另一台主机通信address 10.0.0.202:7788; flexible-meta-disk internal;on ost3 device /dev/drbd0;disk /dev/hda5; address 10.0.0.203:7788; meta-d

34、isk internal;3 将 drbd.conf 文件复制到备机上 /etc 目录下 scp /etc/drbd.conf ost3:/etc4.5. 初始化 drbd1、加载模块drbd 采用的是模块控制的方式,所以先要加载 drbd.ko 模块insmod drbd.ko 或者 modprobe drbd使用 lsmod 来查看模块是否加载成功。2、创建数据块drbdadm create-md r03、启动 drbd/etc/init.d/drbd start4、启动 drbd 服务,在后台状态下运行drbdadm up all5、设置主节点在 ost2 上执行以下命令,设置 ost2

35、 为主节点:drbdsetup /dev/drbdO primary -o6、查看连接netstat -atn 的输出结果,说明两台机器的 drbd 服务已经连接上了:tcp00 10.0.0.203:5936910.0.0.202:7788ESTABLISHEDtcp00 10.0.0.203:778810.0.0.202:34123ESTABLISHED7、查看同步状态cat /proc/drbd主节点上执行这个名后的结果,显示数据正在同步中version: 8.3.0 (api:88/proto:86-89)GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e83

36、48ddb95829 build by rootost2, 2008-12-30 17:23:440: cs:SyncSource ro:Primary/Secondary ds:UpToDate/Inconsistent C r-ns:750308 nr:0 dw:0 dr:750464 al:0 bm:45 lo:0 pe:7 ua:5 ap:0 ep:1 wo:b oos:30707168synced: 2.5% (29987/30720)Mfinish: 0:46:14 speed: 10,952 (10,272) K/sec8、创建文件系统在主节点上的设备 /dev/drbd0 上创

37、建一个文件系统, 可以把 DRBD 设备挂载到 /mnt/drbd 目录上使用。从节点的 DRBD 设备无法被挂载,因为它是用来接收主机数据的,由 DRBD 负责操作。因此不需要这个过程。在 ost2 上执行:mkfs.ext3 -j /dev/drbd0mkdir /mnt/drbdmount /dev/drbd0 /mnt/drbddf/dev/drbd0 30963708 176200 29214644 1% /mnt/drbd9、设置 drbd 开机自动启动chkconfig -level 35 drbd on4.6. 主备机切换有时 ,需要将 DRBD 的主备机互换一下,可以执行下面

38、的操作:1、在主节点上 ,先要卸载掉 DRBD 设备。 umount /mnt/drbd02、将主节点 ost2 降级为”从节点” : drbdadm secondary r03、在从节点 ost3 上,将它升级为”主节点” :drbdadm primary r04、在从节点 ost3 上 ,挂载 drbd 设备mount /dev/drbd0 /mnt/drbd4.7. 通过 haresources 配置自动切换heartbeat 的如果不使用 heartbeat 的情况下, DRBD 只能手工切换主从关系,现在修改 配置文件,使 DRBD 可以通过 heartbeat 自动切换。4.7.1

39、. 创建资源脚本1 新建脚本 hdfs ,用于启停 hdfs 文件系统,内容如下: cd /etc/ha.d/resource.dvi hdfs#!/bin/shcase $1 instart)# Start commands go herecd /home/hdfs/hdfsinstall/hadoop/binmsg=su - hdfs -c sh /home/hdfs/hdfs in stall/hadoop/b in/start-dfs.sh logger $msgJ Jstop)# Stop commands go herecd /home/hdfs/hdfsinstall/hadoo

40、p/binmsg=su - hdfs -c sh /home/hdfs/hdfsinstall/hadoop/bin/stop-dfs.sh logger $msgstatus)# Status commands go hereJ Jesac2 修改权限chmod 755 /etc/ha.d/resource.d/hdfs3 把脚本拷贝到备份机并同样修改权限scp /etc/ha.d/resource.d/hdfs ost3: /etc/ha.d/resource.d/chmod 755 /etc/ha.d/resource.d/hdfs4.7.2. 配置 haresources1 修改 /e

41、tc/ha.d/haresourcesvi /etc/ha.d/haresourcesost2 192.168.188.201 drbddisk:r0 Filesystem:/dev/drbd0:/mnt/drbd:ext3 hdfs注释:ost2主服务器名192.168.188.201对外服务 IP 别名drbddisk:r0资源 drbddisk ,参数为r0Filesystem:/dev/drbd0:/mnt/drbd:ext3 资 源 Filesystem , mount设 备 /dev/drbd0 到/mnt/drbd 目录,类型为 ext3hdfs hdfs 文件系统资源4.8.

42、测试 drbd1、 drbd 同步测试1)在 ost2 上cd /mnt/drbddd if=/dev/zero of=/mnt/drbd/testfile bs=104857600 count=2umount /mnt/drbddrbdadm secondary all2)在 ost3 上drbdadm primary allmkdir -p /mnt/drbdmount /dev/drbd0 /mnt/drbdls -l /mnt/drbd可以看到文件 testfile 在主节点写入 ,在从节点马上可以看到。2、 heartbeat 自动切换测试1)启动 heartbeat在 ost2 和

43、 ost3 上执行:/etc/init.d/heartbeat start2)在 ost2 上到 ifconfig可以看到虚拟 IP 已经启动eth0:0 Link encap:Ethernet HWaddr 00:11:D8:94:C6:1Cinet addr:192.168.188.201 Bcast:192.168.188.255 Mask:255.255.255.0UP BROADCAST RUNNING MULTICASTMTU:1500 Metric:1Interrupt:177 Base address:0xc4003)在 ost2 上停止 heartbeat 服务或关机/etc

44、/init.d/heartbeat stop4)在 ost3 上 ifconfig可以看到虚拟 IP 已经启动eth0:0 Link encap:Ethernet HWaddr 00:11:2F:85:F9:DDinet addr:192.168.188.201 Bcast:192.168.188.255 Mask:255.255.255.0UP BROADCAST RUNNING MULTICASTMTU:1500 Metric:1Interrupt:177 Base address:0xc4005. drbd , heartbeat,hdfs 联调测试5.1. 测试 1 创建文件和目录1、

45、 202 上 heartbeat 和 drbd 启动由于 202 为主节点,在启动 heartbeat 服务后,虚拟地址 192.168.188.201 被配置到 202 上,同时挂载了 drbd 文件系统在 /mnt/drbd 。1)执行 /sbin/ifconfig 可以看到eth0:0 Link encap:Ethernet HWaddr 00:11:D8:94:C6:1Cinet addr:192.168.188.201 Bcast:192.168.188.255 Mask:255.255.255.0UP BROADCAST RUNNING MULTICASTMTU:1500 Metr

46、ic:1Interrupt:177 Base address:0xc4002)在 202上执行 cat /proc/drbd ,可以看到 202和 203之间同步正常, 202为主节点 version: 8.3.0 (api:88/proto:86-89)GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by rootost2, 2008-12-30 17:23:440: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r- ns:17672 nr:0 dw:176

47、64 dr:157 al:20 bm:1 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:03)在 203上执行 cat /proc/drbd ,可以看到 203和 202之间同步正常, 203为备份节点 version: 8.3.0 (api:88/proto:86-89)GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by rootost3, 2008-12-30 17:16:320: cs:Connected ro:Secondary/Primary ds:UpToDate/UpToDate C r-n

48、s:0 nr:9292 dw:9292 dr:0 al:0 bm:1 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:04)在 202 上执行 df ,看到 drbd 已挂载/dev/drbd0 30963708 176320 29214524 1% /mnt/drbd2、在 hdfs 文件系统创建目录# 必须切换到 hdfs 用户才可以访问 hdfs 文件系统su hdfscd /home/hdfs/hdfsinstall/hadoop# 创建目录 testdirbin/hadoop dfs -mkdir testdir3、把本地文件 hello 拷贝到 HDFS 的根目

49、录下bin/hadoop dfs -put /home/hdfs/hdfsinstall/hadoop/hello hello4、查看现有的文件和目录 bin/hadoop dfs -ls-rw-r-r-1 hdfs supergroup1951937 2009-01-14 17:15 /user/hdfs/hellodrwxr-xr-x- hdfs supergroup0 2009-01-13 16:44 /user/hdfs/testdir5.2. 测试 2 主备节点切换1、在 202 上停止 heartbeat在 202 上执行 reboot 或执行 /etc/init.d/heartb

50、eat stop2、查看 2031)执行 /sbin/ifconfig 可以看到虚拟 ip 已经切换到 203 上 eth0:0 Link encap:Ethernet HWaddr 00:11:2F:85:F9:DDinet addr:192.168.188.201 Bcast:192.168.188.255 Mask:255.255.255.0UP BROADCAST RUNNING MULTICASTMTU:1500 Metric:1Interrupt:177 Base address:0xc4002)在 203 上执行 cat /proc/drbd ,看到 203 切换为主节点,备节点

51、状态为 Unknown version: 8.3.0 (api:88/proto:86-89)GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by rootost3, 2008-12-30 17:16:320: cs:WFConnection ro:Primary/Unknown ds:UpToDate/DUnknown C r-ns:0 nr:17744 dw:17836 dr:6505 al:11 bm:1 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:843)执行 df ,看到 drbd 已挂载/de

52、v/drbd0 30963708 185580 29205264 1% /mnt/drbd3、在 203 上查看 hdfs 文件系统 bin/hadoop dfs -ls 查看现有的文件和目录。显示是正常的。-rw-r-r-1 hdfs supergroup1951937 2009-01-14 17:15 /user/hdfs/hello0 2009-01-13 16:44 /user/hdfs/testdirdrwxr-xr-x- hdfs supergroup5.3. 测试 3 主备节点再次切换1、在 203 上停止 heartbeat在 203 上执行 reboot 或执行 /etc/i

53、nit.d/heartbeat stop2、查看 2021) 执行 /sbin/ifconfig 可以看到虚拟 ip 已经切换到 202 上 eth0:0 Link encap:Ethernet HWaddr 00:11:D8:94:C6:1Cinet addr:192.168.188.201 Bcast:192.168.188.255 Mask:255.255.255.0UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:177 Base address:0xc4002) 在 202 上执行 cat /proc/drbd ,看

54、到 202 切换为主节点,备节点状态为 Unknown version: 8.3.0 (api:88/proto:86-89)GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by rootost2, 2008-12-30 17:23:440: cs:StandAlone ro:Primary/Unknown ds:UpToDate/DUnknownr-ns:0 nr:0 dw:4 dr:21 al:1 bm:0 lo:0 pe:0 ua:0 ap:0 ep:1 wo:b oos:683) 执行 df ,看到 drbd 已挂载/d

55、ev/drbd0 30963708 185580 29205264 1% /mnt/drbd3、在 202 上查看 hdfs 文件系统 bin/hadoop dfs -ls 查看现有的文件和目录。显示是正常的。-rw-r-r-1 hdfs supergroup 1951937 2009-01-14 17:15 /user/hdfs/hellodrwxr-xr-x - hdfs supergroup 0 2009-01-13 16:44 /user/hdfs/testdir5.4. 测试 4 split brain 自动处理1、按照其他中描述配置split brain 自动处理2、重新启动 20

56、2 和 203,等待几分钟后3、查看 202cat /proc/drbd显示Connected,表示同步正常。version: 8.3.0 (api:88/proto:86-89)GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by rootost2, 2008-12-30 17:23:440: cs:Connected ro:Primary/Secondary ds:UpToDate/UpToDate C r-ns:112 nr:0 dw:4 dr:129 al:1 bm:6 lo:0 pe:0 ua:0 ap:0 ep:1

57、wo:b oos:04、查看 203cat /proc/drbd显示Connected,表示同步正常。version: 8.3.0 (api:88/proto:86-89)GIT-hash: 9ba8b93e24d842f0dd3fb1f9b90e8348ddb95829 build by rootost3, 2008-12-30 17:16:320: cs:C onn ected ro:Sec on dary/Primary ds:UpToDate/UpToDate C r-n s:0 nr:112 dw:112 dr:0 al:0 bm:6 lo:0 pe:0 ua:0 ap:0 ep:1

58、 wo:b oos:05、在202上查看hdfs文件系统bin/hadoop dfs -ls查看现有的文件和目录。显示是正常的。-rw-r-r-1 hdfs supergroup 1951937 2009-01-14 17:15 /user/hdfs/hellodrwxr-xr-x - hdfs supergroup0 2009-01-13 16:44 /user/hdfs/testdir6. hdfs文件读写测试6.1. 测试内容对HDFS文件系统读写不同大小文件的性能进行测试。1)创建测试目录 testdirbin/hadoop dfs -mkdir testdir2)用dd在本地创建不同

59、大小的文件如 dd if=/dev/zero of=hello bs=1G count=1 / 创建 1M 大小的文件3)拷贝测试文件到 HDFS下testdir目录bin/hadoop dfs -copyFromLocal hello testdir/4)执行测试java HadoopDFSFileReadWrite testdir/hello testdir/hello15)删除测试文件bin/hadoop dfs -rm testdir/*6.2. 测试结果文件大小Hdfs以网络方式写入网络节点(ms)Hdfs以网络方式与入本地节点(ms)2k16k64k256k512k1M224115

60、2M3302813M3503734M3564308M70472416M140696664M44764888256M16347136671G63234464846.3. 结果分析为了实现双机热备,hdfs文件系统的元数据需要保存在共享存储(这里是drbd)上。目前的测试只有两个节点,因此 hdfs的文件数据也保存在共享存储上。即文件数据也需要 通过网络访问,而不是本地访问。从结果看(第一列为旧的测试数据),目前的双机方式对 hdfs性能没有什么影响,进一 步的测试可以考虑加入和删除数据节点。7. 其他7.1. 用户映射在202上和203上我们的都创建相同的用户/口令:hdfs/hdfs,但在/e

61、tc/passwd和/etc/group中可以看到,在两台机器上,用户和组所对应的useid和groupid是不同的,这样会导致,drbd切换时,drbd的存储在两台机器上映射到不一致的用户和组。因此需要在创建用户和 组时指定useid和groupid。目前我们采用修改203的方式:1 首先打开 202 上的 /etc/passwd 和/etc/group,得到 hdfs 的 useid 和 groupid 值为 10008。2 在 203 上修改 hdfs 的 useid 和 groupid 值为 10008。usermod -u 10008 hdfsgroupmod -u 10008 hdfs3这样drbd切换时,就不会出现权限问题。7.2. split brai n问题处理split brain实际上是指在某种情况下,造成drbd的两个节点断开了连接,都以

展开阅读全文
温馨提示:
1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
2: 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
3.本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!