hadoop 集群部署与故障转移:
高可用:
1, 主要是指 hdfs HA(高可用) 与 yarn 的 HA
2, 保证 namenode 与 ResouceManager 不在一个节点(主句)之上,
hdfs 的 HA 是通过 多个 namenode 来实现的:
1,namenode 由元数据(Fslmage) 与 Edits(日志) 组成,Edits 会记录进行元数据的更新,因此 hdfs 的高可用,所以 可以通过 Edits聚合合并成新的 namenode
2,如果保证了多个namenode 之间的 Edits同步,也就可以保证高可用
3,使用 JournalNode(每个datanode节点都有) 保证 namenode 数据的完整性,存储的是 Edits日志信息
4,使用 Zookeeper 可以实现自动故障转移, Zookeeper可以存储namenode的活动状态,zookeeper 维护目录树, 首先在目录树上创建成功节点的namenode为active
hdfs-site.xml 配置
<configuration>
<!--其他用户使用hdfs 操作文件,是否进行验证!-->
<property>
    <name>dfs.permissions</name>
    <value>false</value>
</property>
<property>
    <name>dfs.replication</name>
    <value>2</value>
</property>

<property>
  <name>dfs.nameservices</name>
  <value>nameservice</value>
</property>

<property>
  <name>dfs.ha.namenodes.nameservice</name>
  <value>nn1,nn2</value>
</property>

<property>
  <name>dfs.namenode.rpc-address.nameservice.nn1</name>
  <value>sr129:8020</value>
</property>
<property>
  <name>dfs.namenode.rpc-address.nameservice.nn2</name>
  <value>sr128:8020</value>
</property>

<property>
  <name>dfs.namenode.http-address.nameservice.nn1</name>
  <value>sr129:50070</value>
</property>
<property>
  <name>dfs.namenode.http-address.nameservice.nn2</name>
  <value>sr128:50070</value>
</property>

<!--配置 Edits 存储路径-->
<property>
  <name>dfs.journalnode.edits.dir</name>
  <value>/opt/modules/hadoop-2.7.0/data/jn</value>
</property>

<property>
  <name>dfs.namenode.shared.edits.dir</name>
  <value>qjournal://sr128:8485;sr129:8485;sr130:8485/nameservice</value>
</property>

<!--故障转移类-->
<property>
  <name>dfs.client.failover.proxy.provider.nameservice</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>/home/sxu/.ssh/id_rsa</value>
</property>
</configuration>
View Code

相关文章: