大数据Hadoop高可用

HA高可靠集群

hdfs中的HA搭建:

  1. 三个namenode如何保证数据一致?
    • fsimage: 更新频率低, 由一台进行修改,剩下的所有机器进行同步
    • edits: 更新频率高,JN日志节点(hadoop的专属zk,只做数据全局一致性保证)
  2. Secondnamenode的工作谁来负责?
    • 由standby的namenode来负责2nn的工作
  3. 怎么确定谁是active,谁是standby?
    • 每个nn创建一个zkfc(zookeeper的客户端)
    • 三个zkfc代替nn跟zk交互
    • 谁优先创建zk中的临时节点谁就是active

故障转移机制

  1. nn1故障(节点故障或者网络丢失)
  2. nn2和nn3收到监听回执
  3. nn2或nn3的zkfc发生kill -9 杀死nn1,保证nn1不会复活
  4. 另外两台zkfc监听zk中临时节点的变化,随时准备上位
  5. 谁先抢先创建zk的临时节点,谁就是active,另外的nn继续注册监听

搭建HDFS-HA集群

步骤1:编辑hdfs-site.xml配置文件

在Hadoop配置目录中,编辑hdfs-site.xml配置文件,并添加以下配置项:

<property>
    <name>dfs.nameservicesname>
    <value>myclustervalue>
property>

<property>
	
    <name>dfs.ha.namenodes.myclustername>
    <value>nn1,nn2value>
property>

<property>
    <name>dfs.namenode.rpc-address.mycluster.nn1name>
    <value>namenode1-hostname:8020value>
property>

<property>
    <name>dfs.namenode.rpc-address.mycluster.nn2name>
    <value>namenode2-hostname:8020value>
property>

<property>
    <name>dfs.namenode.http-address.mycluster.nn1name>
    <value>namenode1-hostname:50070value>
property>

<property>
    <name>dfs.namenode.http-address.mycluster.nn2name>
    <value>namenode2-hostname:50070value>
property>

<property>
    <name>dfs.namenode.shared.edits.dirname>
    <value>qjournal://journalnode1-hostname:8485;journalnode2-hostname:8485;journalnode3-hostname:8485/myclustervalue>
property>

  • dfs.nameservices:指定HA集群的名称。
  • dfs.ha.namenodes.mycluster:指定HA集群中的NameNode节点。
  • dfs.namenode.rpc-address.mycluster.nn1 和 dfs.namenode.
  • rpc-address.mycluster.nn2:指定NameNode的RPC地址。
  • dfs.namenode.http-address.mycluster.nn1 和 dfs.namenode.
  • http-address.mycluster.nn2:指定NameNode的HTTP地址。
  • dfs.namenode.shared.edits.dir:指定JournalNode的地址,用于共享编辑日志。

步骤2:配置ZooKeeper

HDFS HA需要使用ZooKeeper来协调和管理HA状态。确保ZooKeeper集群已经正确配置和运行。

步骤3:配置JournalNode

JournalNode用于存储HDFS的编辑日志。在Hadoop配置目录中编辑hdfs-site.xml文件,并添加以下配置项:

<property>
    <name>dfs.journalnode.edits.dirname>
    <value>/hadoop/hdfs/journalvalue>
property>

dfs.journalnode.edits.dir:指定JournalNode存储编辑日志的目录。

步骤4:启动JournalNode

在JournalNode所在的节点上启动JournalNode服务。

步骤5:格式化ZooKeeper和HA状态

在Active NameNode节点上执行以下命令,格式化ZooKeeper和HA状态:

hdfs zkfc -formatZK -nonInteractive

步骤6:启动NameNode和ZKFC

在两个NameNode节点上启动NameNode服务和ZKFC服务。

步骤7:监控和测试

使用hdfs haadmin命令来检查HA集群的状态。
测试故障转移:模拟Active NameNode的故障,观察是否可以成功切换到Standby NameNode。

你可能感兴趣的:(大数据,hadoop,分布式)