根据HA架构图,规划HA的分布式集群服务器
HA集群规划
根据官方文档配置HA
部分说明
- Architecture
在典型的ha集群中,两台独立的机器被配置为namenode。在任何时间点,一个namenodes处于活动状态,另一个处于备用状态。活动NameNode负责集群中的所有客户端操作,而备用服务器只是充当从服务器,保持足够的状态,以便在必要时提供快速故障转移。备用节点与活动节点保持状态同步,两个节点都与一组称为“日志节点”(Jns)的独立守护进程通信。当任何名称空间修改由活动节点执行时,它会将修改的记录持久地记录到这些jn中的大多数。备用节点能够从JNS读取编辑,并不断监视它们对e的更改。 - Hardware resources
要部署HA集群,您应该准备以下内容:NameNode计算机—运行主动和备用Namenodes的计算机应具有彼此等效的硬件,以及与非HA群集使用的硬件相当的硬件。日志节点计算机-运行日志节点的计算机。日志节点守护程序相对较轻,因此这些守护程序可以合理地配置在具有其他Hadoop后台进程的计算机上,例如NameNODES、JobTracker或纱线资源Manager。注意:必须至少有3个日志节点守护程序,因为编辑日志修改必须写入到大多数JNS。这将允许系统容忍单个机器的故障。您还可以运行3个以上的日志节点,但为了实际增加系统可以承受的故障数,您应该运行奇数的JNS,(即,3、5、7等)。请注意,在使用N个日志节点运行时,系统可以容忍最多(n-1)/2故障,并继续正常运行。请注意,在HA集群中,备用NameNode还执行命名空间状态的检查点,因此不必在HA集群中运行辅助NameNode、检查点节点或BackupNode。事实上,这样做将是错误。这也允许一个正在重新配置非HA启用HDFS集群的人启用高可用性,以便重新使用以前专用于辅助NameNode的硬件。
- 配置概述
与联邦配置类似,HA配置是向后兼容的,允许现有的单个NameNode配置不受更改地工作。新配置的设计使得集群中的所有节点都可以具有相同的配置,而无需根据节点的类型将不同的配置文件部署到不同的计算机上。
与HDFFederation一样,HA集群重用名称服务ID来标识单个HDFS实例,该实例实际上可能由多个HARNameNodes组成。此外,HA还添加了一个名为NameNodeID的新抽象。集群中的每个不同的NameNode都有一个不同的NameNode ID来区分它。为了支持所有NameNode的单个配置文件,相关的配置参数都以名称服务ID和NameNode ID作为后缀。
备份hadoop中的配置文件和数据(131,132,133)
HA配置
- hdsf-site.xml
dfs.nameservices - the logical name for this new nameservice
Note: If you are also using HDFS Federation, this configuration setting should also include the list of other nameservices, HA or otherwise, as a comma-separated list.
配置nameservices
<property>
<name>dfs.nameservices</name>
<value>ns1</value>
</property>配置namenodes
<property>
<name>dfs.ha.namenodes.ns1</name>
<value>nn1,nn2</value>
</property>配置namenode
<property>
<name>dfs.namenode.rpc-address.ns1.nn1</name>
<value>hadoop-senior.beifeng.com:8020</value>
</property>
<property>
<name>dfs.namenode.rpc-address.ns1.nn2</name>
<value>hadoop-senior02.beifeng.com:8020</value>
</property>配置访问地址namenode.http-address
<property>
<name>dfs.namenode.http-address.ns1.nn1</name>
<value>hadoop-senior.beifeng.com:50070</value>
</property>
<property>
<name>dfs.namenode.http-address.ns1.nn2</name>
<value>hadoop-senior02.beifeng.com:50070</value>
</property>共享日志目录配置
<property>
<name>dfs.namenode.shared.edits.dir</name>
<value>qjournal://hadoop-senior.beifeng.com:8485;hadoop-senior02.beifeng.com:8485;hadoop-senior03.beifeng.com:8485/ns1</value>
</property>配置代理
<property>
<name>dfs.client.failover.proxy.provider.mycluster</name>
<value>org.apache.hadoop.hdfs.server.namenode.ha.ConfiguredFailoverProxyProvider</value>
</property>nodeName ssh fencing 可以实现131和132上的nameNode可以无密码登入。131->132登入。也可以132->131登入
<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>配置 journalnode 的edits日志存放的目录
<property>
<name>dfs.journalnode.edits.dir</name>
<value>/opt/app/hadoop-2.5.0/data/dfs/jn</value>
</property>
core-site.xml配置
配置默认的HDFS
<property>
<name>fs.defaultFS</name>
<value>hdfs://ns1</value>
</property>hadoop数据存储目录
<property>
<name>hadoop.tmp.dir</name>
<value>/opt/app/hadoop-2.5.0/data/tmp</value>
</property>垃圾回收时间
<property>
<name>fs.trash.interval</name>
<value>420</value>
</property>
主节点(131)向其他子节点(132,133)同步修改的配置文件
命令:scp -r /opt/app/hadoop-2.5.0/etc/hadoop/core-site.xml /opt/app/hadoop-2.5.0/etc/hadoop/hdfs-site.xml /opt/app/hadoop-2.5.0/etc/hadoop/slaves root@hadoop-senior02.beifeng.com:/opt/app/hadoop-2.5.0/etc/hadoop/