您好,欢迎访问三七文档
当前位置:首页 > 商业/管理/HR > 信息化管理 > Hadoop-HDFS系统双机热备方案
HadoopHDFS系统双机热备方案1.前言HDFS包含两种角色:数据节点(datanode)和名字节点(namenode),名字节点只有一个,数据节点最多支持2000个。HDFS可以确保在硬件失效情况下数据存储的可靠性。常见的三种失败:名字节点失效,数据节点失效和网络分割(networkpartitions)。HDFS将每个文件存储成block序列,除了最后一个block,所有的block都是同样的大小。文件的所有block为了容错都会被复制。每个文件的block大小和replication因子都是可配置的。Replication因子可以在文件创建的时候配置,以后也可以改变。每个Datanode节点都向Namenode周期性地发送心跳包。网络切割可能导致一部分Datanode跟Namenode失去联系。Namenode通过心跳包的缺失检测到这一情况,并将这些Datanode标记为dead,不会将新的IO请求发给它们。Datanode的死亡可能引起一些block的副本数目低于指定值,Namenode不断地跟踪需要复制的block,在任何需要的情况下启动复制。因此在HDFS中通过复制可以确保数据节点的高可用性,名字节点的高可用性一般通过HA方式实现:方案1drbd+heartbeat采用drbd实现共享存储,采用heartbeat实现心跳监控,所有服务器都配有双网卡,其中一个网卡专门用于建立心跳网络连接。方案2磁盘阵列或SAN+heartbeat名字节点负责整个文件系统目录结构、文档权限和文档的扩展属性连同维护整个文档系统的数据一致性和响应客户端的请求。HDFS能够配置两个名字节点服务器,采用active/passive模式,两个服务器采用共享存储的方式来存放元数据。当某个名字节点出现故障后,备份服务器能够接管其服务,确保系统的正常运行。以下我们通过DRBD和heartbeat实现了名字节点的高可用。2.基本配置2.1.硬件环境测试环境为2节点,2台机器操作系统均为RedHatEnterpriseLinuxAS4UP2,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.201(虚拟IP)转速:7200rpm缓存容量:2M平均寻道时间:9ms传输标准:ATA133ost3(从节点)eth0:192.168.188.203eth1:10.0.0.203(HA心跳使用地址)eth0:0:192.168.188.201(虚拟IP)容量:80G接口标准:IDE转速:7200rpm缓存容量:2M平均寻道时间:9ms传输标准:ATA1332.2.网络配置1修改/etc/hostsvi/etc/hosts1)ost2的hosts内容如下:127.0.0.1localhost.localdomainlocalhost192.168.188.201ostvip192.168.188.203ost3192.168.188.202ost2192.168.188.204ost410.0.0.202ost210.0.0.203ost3192.168.188.205ost52)ost3的hosts内容如下:127.0.0.1localhost.localdomainlocalhost192.168.188.201ostvip192.168.188.203ost3192.168.188.202ost2192.168.188.204ost410.0.0.202ost210.0.0.203ost32其他配置文件1)ost2的hosts内容如下:cat/etc/sysconfig/network-scripts/ifcfg-eth0DEVICE=eth0ONBOOT=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=yesTYPE=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.203NETMASK=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编写并设计成内核模块包含到内核中,相应的某些安全相关的应用也被打了SELinux的补丁,最后还有一个相应的安全策略。Lustre存储服务器和元数据目录服务器通信会使用一些特殊端口,最好关闭SELINUX。编辑文件/etc/sysconfig/selinux,设置:SELINUX=disabled然后reboot2.4.关闭防火墙(所有机器)如果系统启动了Iptables服务,需要为相关服务打开端口(988,1021~1023等),简单的处理是关闭防火墙。#清除规则iptables–F#保存serviceiptablessavechkconfig--level2345iptablesoffserviceiptablesstop3.heartbeat部署3.1.安装HA与HA依赖包rpm-Uvhperl-TimeDate-1.16-1.2.el4.rf.noarch.rpmrpm-Uvhlibnet-1.1.2.1-2.1.i386.rpmrpm-Uvhheartbeat-pils-2.1.4-2.1.i386.rpmrpm-Uvhheartbeat-stonith-2.1.4-2.1.i386.rpmrpm-Uvhheartbeat-2.1.4-2.1.i386.rpm3.2.配置/etc/ha.d/ha.cf配置heartbeat守护进程使用交叉网络发送和接收心跳数据包。1、使用下面的命令查找HeartbeatRPM包安装后释放的ha.cf样本配置文件:rpm-qdheartbeat|grepha.cf2、使用下面的命令将样本配置文件复制到适当的位置:cp/usr/share/doc/packages/heartbeat/ha.cf/etc/ha.d/3、编辑/etc/ha.d/ha.cf文件,取消注释符号或增加以下内容:udpport694#采用ucast方式,使用网卡eth1在主服务器和备用服务器之间发送心跳消息。指定对端ip,即在ost2上指定10.0.0.203,在ost3上指定10.0.0.202ucasteth110.0.0.2034、同时,取消keepalive,deadtime和initdead这三行的注释符号:keepalive2deadtime30initdead120initdead行指出heartbeat守护进程首次启动后应该等待120秒后再启动主服务器上的资源,keepalive行指出心跳消息之间应该间隔多少秒,deadtime行指出备用服务器在由于主服务器出故障而没有收到心跳消息时,应该等待多长时间,Heartbeat可能会发送警告消息指出你设置了不正确的值(例如:你可能设置deadtime的值非常接近keepalive的值以确保一个安全配置)。5、将下面两行添加到/etc/ha.d/ha.cf文件的末尾:nodeost2nodeost3这里填写主、备用服务器的名字(uname-n命令返回的值)。6日志文件,没有就创建logfile/var/log/ha-log7使用Heartbeat重新启动守护进程你可以告诉Heartbeat它每次启动时启动一个守护进程,如果该守护进程停止运行时就启动重新启动,要实现这样的功能,在/etc/ha.d/ha.cf中使用下面这样一行:respawnuserid/usr/bin/mydaemon3.3.配置/etc/ha.d/authkeys1、使用下面的命令定位样本authkeys文件,并将其复制到适当的位置:rpm-qdheartbeat|grepauthkeyscp/usr/share/doc/packages/heartbeat/authkeys/etc/ha.d2、编辑/etc/ha.d/authkeys文件,取消下面两行内容前的注释符号:auth11crc3、确保authkeys文件只能由root读取:chmod600/etc/ha.d/authkeys3.4.配置/etc/ha.d/haresourcesharesources的实际配置在drbd的配置中描述,这里只描述haresources的语法。主服务器和备用服务器上的/etc/ha.d/haresources文件必须相同。haresources文件中的每一行通常都包括下面的内容:1)正常情况下运行资源的服务器的名字(主服务器),后面跟一个空格或一个tab键2)一个(可选的)ip别名,启动资源前,Heartbeat应该将其添加到系统上,后面跟一个空格。(ip别名定义可能包括一个子网掩码和一个广播地址,使用斜线“/”字符分割)3)存在于/etc/init.d目录或/etc/ha.d/resource.d目录的一个资源脚本(这个脚本用于启动和停止资源),如果需要传递参数给资源脚本,在参数前面添加两个冒号即可,如果有多个参数,参数之间也用两个冒号分隔。4)其他的资源脚本可以使用空格字符作为分隔符进行添加。注意:如果你需要创建一个比你屏幕长度还要长的haresource行,你可以使用反斜线“\”指出下一行仍然是haresources条目。这个语法简单地说就是一行有两个资源,每个资源有两个参数,如:primary-server[IPaddress]resource1[::arg1::arg2][resource2[::arg1::arg2]实际上,在一个叫做primary.mydomain.com的服务器上,运行有sendmail和httpd,ip地址是209.100.100.3,那么就表示为:primary.mydomain.com209.100.100.3sendmailhttpd让我们更细致地检验haresources文件中的每一个元素。3.4.1.主服务器名在haresources行的开头输入的主服务器名应该与在/etc/ha.d/ha.cf文件中指定的服务器名匹配,同
本文标题:Hadoop-HDFS系统双机热备方案
链接地址:https://www.777doc.com/doc-5234764 .html